summaryrefslogtreecommitdiffstats
path: root/sys/cam
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2014-11-02 17:31:45 +0000
committermav <mav@FreeBSD.org>2014-11-02 17:31:45 +0000
commit9252414b60494fbcc0c875b55ca6755c3ac87d7e (patch)
treee23256f25a3c2e95c26cf6037c106576ba26f1a9 /sys/cam
parent9e735a2fb274650ab0429e5e3af33e1598487f5a (diff)
downloadFreeBSD-src-9252414b60494fbcc0c875b55ca6755c3ac87d7e.zip
FreeBSD-src-9252414b60494fbcc0c875b55ca6755c3ac87d7e.tar.gz
MFC r273708: Fix support for LUN flat space addressing.
Diffstat (limited to 'sys/cam')
-rw-r--r--sys/cam/ctl/ctl.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/sys/cam/ctl/ctl.c b/sys/cam/ctl/ctl.c
index 3e323bc..083b3d1 100644
--- a/sys/cam/ctl/ctl.c
+++ b/sys/cam/ctl/ctl.c
@@ -9405,17 +9405,18 @@ ctl_report_luns(struct ctl_scsiio *ctsio)
* Flat addressing method.
*/
lun_data->luns[num_filled].lundata[0] =
- RPL_LUNDATA_ATYP_FLAT |
- (targ_lun_id & RPL_LUNDATA_FLAT_LUN_MASK);
-#ifdef OLDCTLHEADERS
- (SRLD_ADDR_FLAT << SRLD_ADDR_SHIFT) |
- (targ_lun_id & SRLD_BUS_LUN_MASK);
-#endif
+ RPL_LUNDATA_ATYP_FLAT | (targ_lun_id >> 8);
lun_data->luns[num_filled].lundata[1] =
-#ifdef OLDCTLHEADERS
- targ_lun_id >> SRLD_BUS_LUN_BITS;
-#endif
- targ_lun_id >> RPL_LUNDATA_FLAT_LUN_BITS;
+ (targ_lun_id & 0xff);
+ num_filled++;
+ } else if (targ_lun_id <= 0xffffff) {
+ /*
+ * Extended flat addressing method.
+ */
+ lun_data->luns[num_filled].lundata[0] =
+ RPL_LUNDATA_ATYP_EXTLUN | 0x12;
+ scsi_ulto3b(targ_lun_id,
+ &lun_data->luns[num_filled].lundata[1]);
num_filled++;
} else {
printf("ctl_report_luns: bogus LUN number %jd, "
OpenPOWER on IntegriCloud