[multipathd] DM configuration ground work #2
This patch enables DM configuration at multipathd startup.
To achieve that simple goal, the following steps were necessary :
- new libmultipath/structs_vec.[ch] exporting high level method working
on [vectored] {path,multipath} structs :
- set_no_path_retry
- adopt_paths
- orphan_paths
- orphan_path
- verify_paths
- update_mpp_paths
- setup_multipath
- update_multipath_strings
- remove_map
- stop_waiter_thread_func *stop_waiter, int purge_vec);
- remove_maps
- add_map_without_path
- add_map_with_path
- teach coalesce_path() to use add_map_with_path() and verify_paths()
- add a configure() function to the daemon
- teach multipathd to coalesce its map vector after configuration
- multipathd/main.c:reconfigure() restarts the configuration process
Fixed 2 bugs in the implementation from Edward Goggin :
- set mpp wwid before the binded alias lookup so that friendly names
work
- allocate a mpp->paths in adopt_paths() when mpp->pg is NULL and we
must store a path there
And fixed one long standing careless bug in all structs.c:find_*().
Being passed a NULL vector shortcuts the lookups now.