Fix REPORT LUNS command output for the case when same LUN mapped to same

port several times.  While it is unusual configuration, it is not illegal.

MFC after:	1 week
This commit is contained in:
Alexander Motin 2015-06-20 13:02:57 +00:00
parent 7834ea8891
commit 1ec1012dd2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=284641

View File

@ -9348,11 +9348,16 @@ ctl_report_luns(struct ctl_scsiio *ctsio)
well_known = 0;
cdb = (struct scsi_report_luns *)ctsio->cdb;
port = ctl_io_port(&ctsio->io_hdr);
CTL_DEBUG_PRINT(("ctl_report_luns\n"));
mtx_lock(&softc->ctl_lock);
num_luns = softc->num_luns;
num_luns = 0;
for (targ_lun_id = 0; targ_lun_id < CTL_MAX_LUNS; targ_lun_id++) {
if (ctl_lun_map_from_port(port, targ_lun_id) < CTL_MAX_LUNS)
num_luns++;
}
mtx_unlock(&softc->ctl_lock);
switch (cdb->select_report) {
@ -9395,7 +9400,6 @@ ctl_report_luns(struct ctl_scsiio *ctsio)
request_lun = (struct ctl_lun *)
ctsio->io_hdr.ctl_private[CTL_PRIV_LUN].ptr;
port = ctl_io_port(&ctsio->io_hdr);
lun_datalen = sizeof(*lun_data) +
(num_luns * sizeof(struct scsi_report_luns_lundata));