[dm-devel] [PATCH] multipathd: deferred device adding
Gioh Kim
gi-oh.kim at profitbricks.com
Mon Nov 14 09:23:36 UTC 2016
On 11.11.2016 04:21, Bart Van Assche wrote:
> On 11/10/16 07:54, Gioh Kim wrote:
>> And new sdX device is created when the remote storage volume is connected via SCST.
>> I don't want to create a dm device when sdX is created because there are other jobs before export the volume.
>> For example, I need to change the size or format or copy data into sdb.
>> I want to create the dm device when I finished the setup.
>> I could disabled the socket in multipath udev rule file with v0.4.9.
>> But I cannot find a way to ignore the uevent.
> Hello Gioh,
>
> Are you familiar with the SCST "enabled" target driver attribute? Have
> you considered to force initiators to log out while making changes at
> the target side be changing that attribute into 0 temporarily?
>
> Bart.
Hello Bart,
I consulted with target side developers in my company.
They said there are many jobs that should be done on initiator side without disconnecting.
I created following patch for example.
It makes multipathd ignore "add" uevent from sdX devices.
-----------------------8<-------------------------
diff --git a/libmultipath/uevent.c b/libmultipath/uevent.c
index 6247898..c77de34 100644
--- a/libmultipath/uevent.c
+++ b/libmultipath/uevent.c
@@ -472,6 +472,20 @@ struct uevent *uevent_from_udev_device(struct udev_device *dev)
/* print payload environment */
for (i = 0; uev->envp[i] != NULL; i++)
condlog(5, "%s", uev->envp[i]);
+
+ if (!strncmp(uev->action, "add", 3)) {
+ char *devname = strrchr(uev->devpath, '/');
+
+ if (!strncmp(devname + 1, "sd", 2)) {
+ condlog(3, "drop uevent '%s' from '%s'",
+ uev->action, uev->devpath);
+ /* Freeing uev is copied from service_uevq() */
+ if (uev->udev)
+ udev_device_unref(uev->udev);
+ FREE(uev);
+ }
+ }
+
return uev;
}
--
2.1.4
More information about the dm-devel
mailing list