<div dir="ltr">All good and applied. Thanks.<div><br></div><div>One minor glitch : building without LIBDM_API_DEFERRED defined leaves the dm_cancel_remove_partmaps() function without use, which emits the following build warning</div><div><br></div><div><div>devmapper.c:35:12: warning: ‘dm_cancel_remove_partmaps’ declared ‘static’ but never defined [-Wunused-function]</div><div> static int dm_cancel_remove_partmaps(const char * mapname);</div></div><div><br></div><div><br></div><div>Would moving the function declaration in the #ifdef be fine with you ?</div><div><br></div><div><div>diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c</div><div>index 69491a3..458841f 100644</div><div>--- a/libmultipath/devmapper.c</div><div>+++ b/libmultipath/devmapper.c</div><div>@@ -32,8 +32,6 @@</div><div> #define UUID_PREFIX "mpath-"</div><div> #define UUID_PREFIX_LEN 6</div><div> </div><div>-static int dm_cancel_remove_partmaps(const char * mapname);</div><div>-</div><div> #ifndef LIBDM_API_COOKIE</div><div> static inline int dm_task_set_cookie(struct dm_task *dmt, uint32_t *c, int a)</div><div> {</div><div>@@ -1134,9 +1132,15 @@ dm_remove_partmaps (const char * mapname, int need_sync, int deferred_remove)</div><div>        return do_foreach_partmaps(mapname, remove_partmap, &rd);</div><div> }</div><div> </div><div>+</div><div> #ifdef LIBDM_API_DEFERRED</div><div> </div><div> static int</div><div>+dm_cancel_remove_partmaps(const char * mapname) {</div><div>+       return do_foreach_partmaps(mapname, cancel_remove_partmap, NULL);</div><div>+}</div><div>+</div><div>+static int</div><div> cancel_remove_partmap (char *name, void *unused)</div><div> {</div><div>        if (dm_get_opencount(name))</div><div>@@ -1172,11 +1176,6 @@ out:</div><div>        return r;</div><div> }</div><div> </div><div>-static int</div><div>-dm_cancel_remove_partmaps(const char * mapname) {</div><div>-       return do_foreach_partmaps(mapname, cancel_remove_partmap, NULL);</div><div>-}</div><div>-</div><div> int</div><div> dm_cancel_deferred_remove (struct multipath *mpp)</div><div> {</div></div><div><br></div><div><br></div><div>Best regards,</div><div>Christophe Varoqui</div><div>OpenSVC</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 8, 2015 at 4:31 AM, Benjamin Marzinski <span dir="ltr"><<a href="mailto:bmarzins@redhat.com" target="_blank">bmarzins@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The first eight of these patches are resends of earlier patches, just<br>
rebased with minor changes. The next two are minor changes, adding<br>
multipath's -B option to mutipathd, and blacklisting vd.* devices.<br>
The two after that allow multipath to read additional configuration<br>
files in a configuration directory /etc/multipath/conf.d by default,<br>
and then do some cleanup of the parser code that I noticed while<br>
adding the configuration directories. The next patch adds two new<br>
configuration parameters that allow multipathd to delay the<br>
reintegration of paths that are failing repeatedly. The next one<br>
fixes a hard to hit memory corruption bug, and the last one<br>
updates the EMC builtin configuration to autodetect ALUA setups.<br>
<br>
Benjamin Marzinski (15):<br>
  correctly set partition delimiter on rename<br>
  libmultipath: fix sysfs_get_size bug<br>
  Revert "libmultipath: fixup strlcpy"<br>
  libmultipath: refactor partmaps code<br>
  multipathd: fix memory corruption issue<br>
  multipathd: add deferred_remove support<br>
  multipathd: don't buffer output with systemd<br>
  libmutipath: allow blanks in device blacklist<br>
  multipathd: read-only bindings<br>
  multipath: blacklist virtio-blk devices<br>
  multipath: enable configuration directory<br>
  libmultipath: cleanup parser code<br>
  multipathd: Add delayed path reintegration<br>
  Fix doublee free of alias after map add failure<br>
  libmultipath: autodetect ALUA CLARiiON configurations<br>
<br>
 libmultipath/Makefile      |   6 +<br>
 libmultipath/blacklist.c   |  18 ++-<br>
 libmultipath/checkers.c    |   1 +<br>
 libmultipath/checkers.h    |   9 ++<br>
 libmultipath/config.c      |  69 ++++++++++-<br>
 libmultipath/config.h      |  12 ++<br>
 libmultipath/configure.c   |   3 +<br>
 libmultipath/defaults.h    |   3 +<br>
 libmultipath/devmapper.c   | 284 +++++++++++++++++++++++++++++----------------<br>
 libmultipath/devmapper.h   |  11 +-<br>
 libmultipath/dict.c        | 126 +++++++++++++++++---<br>
 libmultipath/dict.h        |   1 +<br>
 libmultipath/hwtable.c     |   2 +<br>
 libmultipath/parser.c      | 173 ++++++++-------------------<br>
 libmultipath/parser.h      |   9 +-<br>
 libmultipath/print.c       |   2 +<br>
 libmultipath/propsel.c     |  58 +++++++++<br>
 libmultipath/propsel.h     |   3 +<br>
 libmultipath/structs.h     |  17 +++<br>
 libmultipath/structs_vec.c |   3 +-<br>
 libmultipath/sysfs.c       |   2 +-<br>
 libmultipath/util.c        |   3 +-<br>
 multipath.conf.annotated   |  80 +++++++++++++<br>
 multipath.conf.defaults    |   7 +-<br>
 multipath/multipath.conf.5 |  54 +++++++++<br>
 multipathd/main.c          |  86 ++++++++++----<br>
 multipathd/multipathd.8    |   5 +<br>
 27 files changed, 761 insertions(+), 286 deletions(-)<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
1.8.3.1<br>
<br>
</font></span></blockquote></div><br></div>