diff options
| -rw-r--r-- | drivers/scsi/fnic/fnic_scsi.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c index 3f88f56582a2..961bdf5d31cd 100644 --- a/drivers/scsi/fnic/fnic_scsi.c +++ b/drivers/scsi/fnic/fnic_scsi.c | |||
| @@ -2224,6 +2224,22 @@ int fnic_device_reset(struct scsi_cmnd *sc) | |||
| 2224 | 2224 | ||
| 2225 | tag = sc->request->tag; | 2225 | tag = sc->request->tag; |
| 2226 | if (unlikely(tag < 0)) { | 2226 | if (unlikely(tag < 0)) { |
| 2227 | /* | ||
| 2228 | * XXX(hch): current the midlayer fakes up a struct | ||
| 2229 | * request for the explicit reset ioctls, and those | ||
| 2230 | * don't have a tag allocated to them. The below | ||
| 2231 | * code pokes into midlayer structures to paper over | ||
| 2232 | * this design issue, but that won't work for blk-mq. | ||
| 2233 | * | ||
| 2234 | * Either someone who can actually test the hardware | ||
| 2235 | * will have to come up with a similar hack for the | ||
| 2236 | * blk-mq case, or we'll have to bite the bullet and | ||
| 2237 | * fix the way the EH ioctls work for real, but until | ||
| 2238 | * that happens we fail these explicit requests here. | ||
| 2239 | */ | ||
| 2240 | if (shost_use_blk_mq(sc->device->host)) | ||
| 2241 | goto fnic_device_reset_end; | ||
| 2242 | |||
| 2227 | tag = fnic_scsi_host_start_tag(fnic, sc); | 2243 | tag = fnic_scsi_host_start_tag(fnic, sc); |
| 2228 | if (unlikely(tag == SCSI_NO_TAG)) | 2244 | if (unlikely(tag == SCSI_NO_TAG)) |
| 2229 | goto fnic_device_reset_end; | 2245 | goto fnic_device_reset_end; |
