diff mbox series

[3/5] libmultipath: pathinfo: skip hidden devices

Message ID 20180914125103.1154-3-mwilck@suse.com (mailing list archive)
State Not Applicable, archived
Delegated to: christophe varoqui
Headers show
Series [1/5] libmultipath: nvme: fix path detection for kernel 4.16 | expand

Commit Message

Martin Wilck Sept. 14, 2018, 12:51 p.m. UTC
Hidden block devices (in practice: members of nvme native multipath
devices) can't be used by multipath anyway. Current multipath code
(with default blacklisting) skips them, too, but emits a misleading
"blacklisted: udev property missing" message.

Signed-off-by: Martin Wilck <mwilck@suse.com>
---
 libmultipath/discovery.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

Comments

Benjamin Marzinski Sept. 21, 2018, 10:52 p.m. UTC | #1
On Fri, Sep 14, 2018 at 02:51:01PM +0200, Martin Wilck wrote:

Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>

> Hidden block devices (in practice: members of nvme native multipath
> devices) can't be used by multipath anyway. Current multipath code
> (with default blacklisting) skips them, too, but emits a misleading
> "blacklisted: udev property missing" message.
> 
> Signed-off-by: Martin Wilck <mwilck@suse.com>
> ---
>  libmultipath/discovery.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
> index 0b1855dd..11da64ba 100644
> --- a/libmultipath/discovery.c
> +++ b/libmultipath/discovery.c
> @@ -1858,9 +1858,18 @@ int pathinfo(struct path *pp, struct config *conf, int mask)
>  	 * limited by DI_BLACKLIST and occurs before this debug
>  	 * message with the mask value.
>  	 */
> -	if (pp->udev && (is_claimed_by_foreign(pp->udev) ||
> -			 filter_property(conf, pp->udev) > 0))
> -		return PATHINFO_SKIPPED;
> +	if (pp->udev) {
> +		const char *hidden =
> +			udev_device_get_sysattr_value(pp->udev, "hidden");
> +
> +		if (hidden && !strcmp(hidden, "1")) {
> +			condlog(3, "%s: hidden", pp->dev);
> +			return PATHINFO_SKIPPED;
> +		}
> +		if (is_claimed_by_foreign(pp->udev) ||
> +			 filter_property(conf, pp->udev) > 0)
> +			return PATHINFO_SKIPPED;
> +	}
>  
>  	if (filter_devnode(conf->blist_devnode,
>  			   conf->elist_devnode,
> -- 
> 2.18.0

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
diff mbox series

Patch

diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
index 0b1855dd..11da64ba 100644
--- a/libmultipath/discovery.c
+++ b/libmultipath/discovery.c
@@ -1858,9 +1858,18 @@  int pathinfo(struct path *pp, struct config *conf, int mask)
 	 * limited by DI_BLACKLIST and occurs before this debug
 	 * message with the mask value.
 	 */
-	if (pp->udev && (is_claimed_by_foreign(pp->udev) ||
-			 filter_property(conf, pp->udev) > 0))
-		return PATHINFO_SKIPPED;
+	if (pp->udev) {
+		const char *hidden =
+			udev_device_get_sysattr_value(pp->udev, "hidden");
+
+		if (hidden && !strcmp(hidden, "1")) {
+			condlog(3, "%s: hidden", pp->dev);
+			return PATHINFO_SKIPPED;
+		}
+		if (is_claimed_by_foreign(pp->udev) ||
+			 filter_property(conf, pp->udev) > 0)
+			return PATHINFO_SKIPPED;
+	}
 
 	if (filter_devnode(conf->blist_devnode,
 			   conf->elist_devnode,