On Mon, 2012-08-06 at 11:57 -0700, Alex Elsayed wrote:
> Nicholas A. Bellinger wrote:
> >
> > Based upon your trace, I'm pretty certain this is related to the two old
> > pSCSI specific hacks in target_core_pscsi.c:pscsi_complete_cmd() that
> > manually set MODE_SENSE write_protect bit in the data payload, or
> > sd->blocksize w/ MODE_SELECT for with TYPE_TAPE export. The OOPsen
> > here appears to be related to the former..
> >
> > The following (untested) patch to stub out both of these cases should
> > get you up and running with TYPE_ROM, and I think for modern pSCSI code
> > we should be able to now just drop this section all together..
> >
> > Please give it a shot and let us know if your able to get pSCSI +
> > TYPE_ROM export up and running on your setup.
> >
> > Thanks for reporting!
>
> Sadly, that patch does not fix the problem. Backtrace attached.
So looking at this again, the OOPs is actually to be happening with an
REPORT_LUNs CDB that for pSCSI backstores is a special case, and is
getting emulated directly by TCM..
This afternoon I've been able to reproduce+fix this pSCSI bug, and below
is the patch that should get you up and running..
Here is the patch in action with loopback fabrics ports + sg_luns:
root@romley:/usr/src/target-pending.git# lsscsi | grep dvd
[2:0:0:0] cd/dvd ATAPI iHAS124 B AL0L /dev/sr0
[138:0:1:0] cd/dvd ATAPI iHAS124 B AL0L /dev/sr1
root@romley:/usr/src/target-pending.git# sg_luns -v /dev/sr0
report luns cdb: a0 00 00 00 00 00 00 00 20 00 00 00
report luns: Fixed format, current; Sense key: Not Ready
Additional sense: Medium not present - tray closed
Report Luns command failed
root@romley:/usr/src/target-pending.git# sg_luns -v /dev/sr1
report luns cdb: a0 00 00 00 00 00 00 00 20 00 00 00
Lun list length = 8 which imples 1 lun entry
Report luns [select_report=0]:
0000000000000000
Please give it a shot to verify on your side with WinXP iSCSI clients.
Thanks Alex!
--nab
diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c
index 6e32ff6..9c7da54 100644
--- a/drivers/target/target_core_pscsi.c
+++ b/drivers/target/target_core_pscsi.c
@@ -673,8 +673,14 @@ static int pscsi_transport_complete(struct se_cmd *cmd, struct scatterlist *sg)
struct scsi_device *sd = pdv->pdv_sd;
int result;
struct pscsi_plugin_task *pt = cmd->priv;
- unsigned char *cdb = &pt->pscsi_cdb[0];
+ unsigned char *cdb;
+ /*
+ * Special case for REPORT_LUNs handling..
+ */
+ if (!pt)
+ return 0;
+ cdb = &pt->pscsi_cdb[0];
result = pt->pscsi_result;
/*
* Hack to make sure that Write-Protect modepage is set if R/O mode is
--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Linux SCSI]
[Kernel Newbies]
[Linux SCSI Target Infrastructure]
[Share Photos]
[IDE]
[Security]
[Git]
[Netfilter]
[Bugtraq]
[Photos]
[Yosemite]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Linux ATA RAID]
[Linux IIO]
[Samba]
[Video 4 Linux]
[Device Mapper]
[Linux Resources]