diff mbox

scsi_dh: Use the correct module name when loading device handler

Message ID 20150926001915.GD12540@fergus.ozlabs.ibm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Paul Mackerras Sept. 26, 2015, 12:19 a.m. UTC
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(-)

Comments

Hannes Reinecke Sept. 26, 2015, 1:21 a.m. UTC | #1
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
Christoph Hellwig Sept. 30, 2015, 3:03 p.m. UTC | #2
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 mbox

Patch

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);
 	}