multipath-tools: improve processing efficiency for addition and deletion of multipath...
authortang.junhui <tang.junhui@zte.com.cn>
Tue, 28 Feb 2017 07:05:49 +0000 (15:05 +0800)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Wed, 1 Mar 2017 00:39:03 +0000 (01:39 +0100)
commitee8888f0dd0a74075431b5de90d60e0e90e27411
treed35da4c8d39dbfa61388da318cc7256f77b548a4
parenta2675025ae9f652b005345b9082f5042b32c992c
multipath-tools: improve processing efficiency for addition and deletion of multipath devices

This patch used to improve processing efficiency for addition and deletion
of multipath devices.

This patch is tested pass by ZTE multipath automatic testing system.
The modification reduces the system consumption(such as CPU) and shortens
the processing time obviously in scene of massive multipath devices
addition or deletion.

The main processing flow of code is:
1) add uid_attrs configuration in the defaults section:
   It is configured udev attribute which providing a unique path identifier
   for corresponding type of path devices. If this field is configured and
   matched with type of device, it would override any other methods
   providing for device unique identifier in config file, and it would
   activate merging uevents according to the identifier to promote effiecncy
   in processing uevents. Tt has no default value, so defaultly only uevents
   filtering works, and uevents merging does not works, if users want to
   identify path by udev attribute and to activate merging uevents for SCSI
   and DAS device, they can set it's value as:
   "sd:ID_SERIAL dasd:ID_UID"
2) uevents accumulation in uevents burst scene:
   wait one seconds for more uevents in uevent_listen() in uevents burst
   situations
3) uevents preparing, filtering and merging:
   discard unuse uevents and fetch path idendifier from uevents;
   filter uevents;
   merge uevents.
4) uevents proccessing:
   proccess the merged uevents in uev->merge_node list without calling
   domap();
   proccess the last uevents uev with calling domap().

Signed-off-by: tang.junhui <tang.junhui@zte.com.cn>
15 files changed:
libmultipath/config.c
libmultipath/config.h
libmultipath/dict.c
libmultipath/discovery.c
libmultipath/discovery.h
libmultipath/list.h
libmultipath/propsel.c
libmultipath/uevent.c
libmultipath/uevent.h
libmultipath/util.c
libmultipath/util.h
multipath/multipath.conf.5
multipathd/cli_handlers.c
multipathd/main.c
multipathd/main.h