Message ID | 20150926001915.GD12540@fergus.ozlabs.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 09/26/2015 02:19 AM, Paul Mackerras wrote: > This fixes a bug in recent kernels which results in failure to boot > on systems that have multipath SCSI disks. I observed this failure > on a POWER8 server where all the disks are multipath SCSI disks. > The symptoms are several messages like this on the console: > > [ 3.018700] device-mapper: table: 253:0: multipath: error attaching hardware handler > [ 3.018828] device-mapper: ioctl: error adding target to table > > and the system does not find its disks, and therefore fails to boot. > > Bisection revealed that the bug was introduced in commit 566079c849cf, > "dm-mpath, scsi_dh: request scsi_dh modules in scsi_dh, not dm-mpath". > The specific reason for the failure is that where we previously loaded > the "scsi_dh_alua" module, we are now trying to load the "alua" module, > which doesn't exist. > > To fix this, we change the request_module call in scsi_dh_lookup() > to prepend "scsi_dh_" to the name, just like the old code in > drivers/md/dm-mpath.c:parse_hw_handler() used to do. > > Fixes: 566079c849cf > Signed-off-by: Paul Mackerras <paulus@ozlabs.org> > --- > drivers/scsi/scsi_dh.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/scsi/scsi_dh.c b/drivers/scsi/scsi_dh.c > index edb044a..0a2168e 100644 > --- a/drivers/scsi/scsi_dh.c > +++ b/drivers/scsi/scsi_dh.c > @@ -111,7 +111,7 @@ static struct scsi_device_handler *scsi_dh_lookup(const char *name) > > dh = __scsi_dh_lookup(name); > if (!dh) { > - request_module(name); > + request_module("scsi_dh_%s", name); > dh = __scsi_dh_lookup(name); > } > > Reviewed-by: Hannes Reinecke <hare@suse.com> Cheers, Hannes
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/scsi/scsi_dh.c b/drivers/scsi/scsi_dh.c index edb044a..0a2168e 100644 --- a/drivers/scsi/scsi_dh.c +++ b/drivers/scsi/scsi_dh.c @@ -111,7 +111,7 @@ static struct scsi_device_handler *scsi_dh_lookup(const char *name) dh = __scsi_dh_lookup(name); if (!dh) { - request_module(name); + request_module("scsi_dh_%s", name); dh = __scsi_dh_lookup(name); }
This fixes a bug in recent kernels which results in failure to boot on systems that have multipath SCSI disks. I observed this failure on a POWER8 server where all the disks are multipath SCSI disks. The symptoms are several messages like this on the console: [ 3.018700] device-mapper: table: 253:0: multipath: error attaching hardware handler [ 3.018828] device-mapper: ioctl: error adding target to table and the system does not find its disks, and therefore fails to boot. Bisection revealed that the bug was introduced in commit 566079c849cf, "dm-mpath, scsi_dh: request scsi_dh modules in scsi_dh, not dm-mpath". The specific reason for the failure is that where we previously loaded the "scsi_dh_alua" module, we are now trying to load the "alua" module, which doesn't exist. To fix this, we change the request_module call in scsi_dh_lookup() to prepend "scsi_dh_" to the name, just like the old code in drivers/md/dm-mpath.c:parse_hw_handler() used to do. Fixes: 566079c849cf Signed-off-by: Paul Mackerras <paulus@ozlabs.org> --- drivers/scsi/scsi_dh.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)