mirror of
https://github.com/torvalds/linux.git
synced 2024-11-14 08:02:07 +00:00
scsi: core: fix dh and multipathing for SCSI hosts without request batching
This was missing from scsi_device_from_queue() due to the introduction of another new scsi_mq_ops_no_commit of linux-next commit8930a6c207
("scsi: core: add support for request batching") from Martin's scsi/5.4/scsi-queue or James' scsi/misc. Only devicehandler code seems to call scsi_device_from_queue(): *** drivers/scsi/scsi_dh.c: scsi_dh_activate[255] sdev = scsi_device_from_queue(q); scsi_dh_set_params[302] sdev = scsi_device_from_queue(q); scsi_dh_attach[325] sdev = scsi_device_from_queue(q); scsi_dh_attached_handler_name[363] sdev = scsi_device_from_queue(q); Fixes multipath tools follow-on errors: $ multipath -v6 ... libdevmapper: ioctl/libdm-iface.c(1887): device-mapper: reload ioctl on mpatha failed: No such device ... mpatha: failed to load map, error 19 ... showing also as kernel messages: device-mapper: table: 252:0: multipath: error attaching hardware handler device-mapper: ioctl: error adding target to table Signed-off-by: Steffen Maier <maier@linux.ibm.com> Fixes:8930a6c207
("scsi: core: add support for request batching") Cc: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
82a9ac7130
commit
6b6fa7a5c8
@ -1922,7 +1922,8 @@ struct scsi_device *scsi_device_from_queue(struct request_queue *q)
|
|||||||
{
|
{
|
||||||
struct scsi_device *sdev = NULL;
|
struct scsi_device *sdev = NULL;
|
||||||
|
|
||||||
if (q->mq_ops == &scsi_mq_ops)
|
if (q->mq_ops == &scsi_mq_ops_no_commit ||
|
||||||
|
q->mq_ops == &scsi_mq_ops)
|
||||||
sdev = q->queuedata;
|
sdev = q->queuedata;
|
||||||
if (!sdev || !get_device(&sdev->sdev_gendev))
|
if (!sdev || !get_device(&sdev->sdev_gendev))
|
||||||
sdev = NULL;
|
sdev = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user