fnic: reject device resets without assigned tags for the blk-mq case
Current the midlayer fakes up a struct request for the explicit reset ioctls, and those don't have a tag allocated to them. The fnic driver pokes into midlayer structures to paper over this design issue, but that won't work for the blk-mq case. 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. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Webb Scales <webbnh@hp.com> Acked-by: Jens Axboe <axboe@kernel.dk> Tested-by: Bart Van Assche <bvanassche@acm.org> Tested-by: Robert Elliott <elliott@hp.com> Cc: Hiral Patel <hiralpat@cisco.com> Cc: Suma Ramars <sramars@cisco.com> Cc: Brian Uchino <buchino@cisco.com>
This commit is contained in:
Родитель
d285203cf6
Коммит
4d63716898
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче