scsi: target: core: Set MULTIP bit for se_device with multiple ports
authorDmitry Bogdanov <d.bogdanov@yadro.com>
Mon, 12 Sep 2022 12:54:57 +0000 (15:54 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 16 Sep 2022 01:40:58 +0000 (21:40 -0400)
SAM-5 4.8.3 (SCSI target device with multiple SCSI ports structure)
obligates to set MULTIP bit when there's multiple SCSI target ports:

  Each device server shall indicate the presence of multiple SCSI
  target ports by setting the MULTIP bit to one in its standard
  INQUIRY data (see SPC-4).

Set MULTIP bit automatically to indicate the presence of multiple SCSI
target ports within standard inquiry response data if there are
multiple target ports in all target port groups of the se_device.

Link: https://lore.kernel.org/r/20220912125457.22573-2-d.bogdanov@yadro.com
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Co-developed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Dmitry Bogdanov <d.bogdanov@yadro.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_spc.c

index c14441c..7cca3b1 100644 (file)
@@ -115,6 +115,12 @@ spc_emulate_inquiry_std(struct se_cmd *cmd, unsigned char *buf)
                        buf[5] |= 0x1;
        }
 
+       /*
+        * Set MULTIP bit to indicate presence of multiple SCSI target ports
+        */
+       if (dev->export_count > 1)
+               buf[6] |= 0x10;
+
        buf[7] = 0x2; /* CmdQue=1 */
 
        /*