[dm-devel] [PATCH] libmultipath: fix discovery of devices with sysfs attr containing only spaces

Mauricio Faria de Oliveira mauricfo at linux.vnet.ibm.com
Wed Apr 22 11:41:10 UTC 2015


Hi Hannes,

Would you be able to review/comment this patch when you have a chance?

It proposes a fix to an original commit of yours, so your opinion would 
be really appreciated. :-)

It's a change to allow devices with blank SCSI 'rev' sysfs attribute to
be discovered.

Thank you!


On 04/11/2015 12:18 PM, Mauricio Faria de Oliveira wrote:
> commit 43c61e979521b17d9f50ea8e722682c33d0b7d69 causes sysfs_get_<attr>() to
> return 0 if attr contains only spaces, and scsi_sysfs_pathinfo() to return 1
> in 'if (sysfs_get_<attr>() <= 0)'; this breaks the device's discovery.
>
> Changing the comparison operator '<=' to '<' allows discovery to continue.
>
> This affects some IPR controllers (rev sysfs attr):
>
> 	# grep . /sys/block/sda/device/{vendor,model,rev} | tr ' ' '#'
> 	/sys/block/sda/device/vendor:IBM#####
> 	/sys/block/sda/device/model:IPR-0###5EC99A00
> 	/sys/block/sda/device/rev:####
>
> Signed-off-by: Mauricio Faria de Oliveira <mauricfo at linux.vnet.ibm.com>
> ---
>   libmultipath/discovery.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
> index 4582a20..dde57c0 100644
> --- a/libmultipath/discovery.c
> +++ b/libmultipath/discovery.c
> @@ -1095,7 +1095,7 @@ scsi_sysfs_pathinfo (struct path * pp)
>
>   	condlog(3, "%s: product = %s", pp->dev, pp->product_id);
>
> -	if (sysfs_get_rev(parent, pp->rev, SCSI_REV_SIZE) <= 0)
> +	if (sysfs_get_rev(parent, pp->rev, SCSI_REV_SIZE) < 0)
>   		return 1;
>
>   	condlog(3, "%s: rev = %s", pp->dev, pp->rev);
>


-- 
Mauricio Faria de Oliveira
IBM Linux Technology Center




More information about the dm-devel mailing list