multipath -u : set FIND_MULTIPATHS_WAIT_UNTIL from /dev/shm
authorMartin Wilck <mwilck@suse.com>
Fri, 13 Apr 2018 22:00:09 +0000 (00:00 +0200)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Fri, 11 May 2018 08:48:47 +0000 (10:48 +0200)
commitaa622f989b60afc88620a99bfe05d2e3119413f3
treeb2dc65b770f81f9787eccdd7d5b1ac010102d213
parent5a342014622a035218b866893af917fb0e5cdd31
multipath -u : set FIND_MULTIPATHS_WAIT_UNTIL from /dev/shm

In "find_multipaths smart" mode, use time stamps under
/dev/shm/multipath/find_multipaths to track waiting for multipath
siblings. When a path is first encountered and is "maybe" multipath, create
a file under /dev/shm, set its modification time to the expiry time of the
timer, and set the FIND_MULTIPATHS_WAIT_UNTIL variable. On later calls,
also set FIND_MULTIPATHS_WAIT_UNTIL to the expiry time (but don't change
the time stamp) if it's not expired yet, or 0 if it is expired. Set
FIND_MULTIPATHS_WAIT_UNTIL even if enough evidence becomes available to
decide if the path needs to be multipathed - this enables the udev rules to
detect that this is a device a timer has been started for, and stop it. By
using /dev/shm, we share information about "smart" timers between initrd
and root file system, and thus only calculate the timeout once.

Because we use major:minor to identify the devices in /dev/shm, and because
a removed device might be replaced by a different one with the same
major/minor number, add a rule to multipath.rules to remove the
find_multipaths marker on remove uevents.

Signed-off-by: Martin Wilck <mwilck@suse.com>
libmultipath/file.c
libmultipath/file.h
multipath/main.c
multipath/multipath.rules