This three patches support coalescing heterogenous paths by referencing another path identifier. This is useful in the scenario of migrating data for heterogenous arrays without interrupting uplayer transaction. The 1/3 patch and 2/3 patch is used to prepare for the 3/3 patch which covers the core logic of this coalescing feature. The 1/3 patch move generic helper _get_next_string_ to util and the helper will be used in the 3/3 patch.However this patch can be seen as an independent patch. The 2/3 patch adds flags into path struct to track path internal state for future use. With this flag, we can distinguish the referenced path and non-referenced path in the 3/3 patch. The usage is as follows: The new attribute named uid_reference provides a unique path identifier for some paths by referencing another path's identifier. Therefor those paths can be coalesced. This is useful to migrate data for heterogenous arrays without interrupting uplayer transaction. If you are going to let sda, sdb and sdc use the unique path identifier of the sdd, you can add the uid_reference field as follows into the vendor specific _devices_ section, _override_ section or the _default_ section in the multipath.conf file. uid_reference "sd[a-c] sdd" where the first parameter which can be regular expression specifies the target devices to be assigned with the identifier of the source device. The second parameter is the source device to be referenced by the target devices. The source device only supports one device. Here is another example I use: uid_reference "nvme[1-9]*n[0-9]* nvme0n1" Plese inform me if you have any idea. Junxiong Guan (3): multipath-tools: move get_next_string to util multipath-tools: add flags to path struct to track internel state multipath-tools: coalesce heterogenous paths by referencing method libmultipath/config.c | 13 ++++ libmultipath/config.h | 3 + libmultipath/dict.c | 11 +++ libmultipath/discovery.c | 128 ++++++++++++++++++++++++++++++- libmultipath/discovery.h | 11 ++- libmultipath/prioritizers/weightedpath.c | 10 +-- libmultipath/propsel.c | 25 ++++++ libmultipath/structs.h | 2 + libmultipath/structs_vec.c | 1 + libmultipath/util.c | 9 +++ libmultipath/util.h | 1 + multipath/multipath.conf.5 | 37 ++++++++- multipathd/main.c | 4 +- 13 files changed, 239 insertions(+), 16 deletions(-) -- 2.11.1 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel