libmultipath/discovery: do not cache 'access_state' sysfs attribute
authorHannes Reinecke <hare@suse.de>
Tue, 28 Feb 2017 16:23:08 +0000 (17:23 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Thu, 16 Mar 2017 07:03:04 +0000 (08:03 +0100)
When reading the 'access_state' sysfs attribute we should not be
using libudev as this will cache the value, causing us to lose
any update to the attribute.

Signed-off-by: Hannes Reinecke <hare@suse.com>
libmultipath/discovery.c

index 6f15a74..bfb46b1 100644 (file)
@@ -213,8 +213,6 @@ declare_sysfs_get_str(devtype);
 declare_sysfs_get_str(vendor);
 declare_sysfs_get_str(model);
 declare_sysfs_get_str(rev);
-declare_sysfs_get_str(access_state);
-declare_sysfs_get_str(preferred_path);
 
 int
 sysfs_set_max_sectors_kb(struct multipath *mpp)
@@ -530,10 +528,10 @@ sysfs_get_asymmetric_access_state(struct path *pp, char *buff, int buflen)
        if (!parent)
                return -1;
 
-       if (sysfs_get_access_state(parent, buff, buflen) <= 0)
+       if (sysfs_attr_get_value(parent, "access_state", buff, buflen) <= 0)
                return -1;
 
-       if (sysfs_get_preferred_path(parent, value, 16) <= 0)
+       if (sysfs_attr_get_value(parent, "preferred_path", value, 16) <= 0)
                return 0;
 
        preferred = strtoul(value, &eptr, 0);