scsi: vhost: Notify TCM about the maximum sg entries supported per command
authorSudhakar Panneerselvam <sudhakar.panneerselvam@oracle.com>
Fri, 22 May 2020 16:51:57 +0000 (16:51 +0000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 26 May 2020 19:52:08 +0000 (15:52 -0400)
vhost-scsi pre-allocates the maximum sg entries per command and if a
command requires more than VHOST_SCSI_PREALLOC_SGLS entries, then that
command is failed by it. This patch lets vhost communicate the max sg limit
when it registers vhost_scsi_ops with TCM. With this change, TCM would
report the max sg entries through "Block Limits" VPD page which will be
typically queried by the SCSI initiator during device discovery. By knowing
this limit, the initiator could ensure the maximum transfer length is less
than or equal to what is reported by vhost-scsi.

Link: https://lore.kernel.org/r/1590166317-953-1-git-send-email-sudhakar.panneerselvam@oracle.com
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Sudhakar Panneerselvam <sudhakar.panneerselvam@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/vhost/scsi.c

index 7653667a8cdcbd8aa3e331548833449b8d629f92..3146ab880400284bb5b1423f3464a22c7b4542a2 100644 (file)
@@ -2280,6 +2280,7 @@ static struct configfs_attribute *vhost_scsi_wwn_attrs[] = {
 static const struct target_core_fabric_ops vhost_scsi_ops = {
        .module                         = THIS_MODULE,
        .fabric_name                    = "vhost",
+       .max_data_sg_nents              = VHOST_SCSI_PREALLOC_SGLS,
        .tpg_get_wwn                    = vhost_scsi_get_fabric_wwn,
        .tpg_get_tag                    = vhost_scsi_get_tpgt,
        .tpg_check_demo_mode            = vhost_scsi_check_true,