|
@@ -1221,11 +1221,9 @@ sense_reason_t spc_emulate_report_luns(struct se_cmd *cmd)
|
|
|
* coming via a target_core_mod PASSTHROUGH op, and not through
|
|
|
* a $FABRIC_MOD. In that case, report LUN=0 only.
|
|
|
*/
|
|
|
- if (!sess) {
|
|
|
- int_to_scsilun(0, (struct scsi_lun *)&buf[offset]);
|
|
|
- lun_count = 1;
|
|
|
+ if (!sess)
|
|
|
goto done;
|
|
|
- }
|
|
|
+
|
|
|
nacl = sess->se_node_acl;
|
|
|
|
|
|
rcu_read_lock();
|
|
@@ -1248,6 +1246,14 @@ sense_reason_t spc_emulate_report_luns(struct se_cmd *cmd)
|
|
|
* See SPC3 r07, page 159.
|
|
|
*/
|
|
|
done:
|
|
|
+ /*
|
|
|
+ * If no LUNs are accessible, report virtual LUN 0.
|
|
|
+ */
|
|
|
+ if (lun_count == 0) {
|
|
|
+ int_to_scsilun(0, (struct scsi_lun *)&buf[offset]);
|
|
|
+ lun_count = 1;
|
|
|
+ }
|
|
|
+
|
|
|
lun_count *= 8;
|
|
|
buf[0] = ((lun_count >> 24) & 0xff);
|
|
|
buf[1] = ((lun_count >> 16) & 0xff);
|