|
@@ -2224,6 +2224,22 @@ int fnic_device_reset(struct scsi_cmnd *sc)
|
|
|
|
|
|
tag = sc->request->tag;
|
|
|
if (unlikely(tag < 0)) {
|
|
|
+ /*
|
|
|
+ * XXX(hch): current the midlayer fakes up a struct
|
|
|
+ * request for the explicit reset ioctls, and those
|
|
|
+ * don't have a tag allocated to them. The below
|
|
|
+ * code pokes into midlayer structures to paper over
|
|
|
+ * this design issue, but that won't work for blk-mq.
|
|
|
+ *
|
|
|
+ * Either someone who can actually test the hardware
|
|
|
+ * will have to come up with a similar hack for the
|
|
|
+ * blk-mq case, or we'll have to bite the bullet and
|
|
|
+ * fix the way the EH ioctls work for real, but until
|
|
|
+ * that happens we fail these explicit requests here.
|
|
|
+ */
|
|
|
+ if (shost_use_blk_mq(sc->device->host))
|
|
|
+ goto fnic_device_reset_end;
|
|
|
+
|
|
|
tag = fnic_scsi_host_start_tag(fnic, sc);
|
|
|
if (unlikely(tag == SCSI_NO_TAG))
|
|
|
goto fnic_device_reset_end;
|