[dm-devel] [PATCH v2 06/11] libmultipath: add callback for remove_map()

Benjamin Marzinski bmarzins at redhat.com
Tue Mar 22 00:28:50 UTC 2022


On Fri, Mar 18, 2022 at 5:33 PM <mwilck at suse.com> wrote:
>
> From: Martin Wilck <mwilck at suse.com>
>
> This callback is be used by multipathd to unblock pending
> reconfigure requests if a map is removed that multipathd is currently
> waiting for.
>
> Signed-off-by: Martin Wilck <mwilck at suse.com>
> ---
>  libmultipath/libmultipath.version | 3 ++-
>  libmultipath/structs_vec.c        | 6 ++++++
>  2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version
> index 216f0ee..8132df7 100644
> --- a/libmultipath/libmultipath.version
> +++ b/libmultipath/libmultipath.version
> @@ -31,7 +31,7 @@
>   *   The new version inherits the previous ones.
>   */
>
> -LIBMULTIPATH_14.0.0 {
> +LIBMULTIPATH_14.1.0 {
>  global:
>         /* symbols referenced by multipath and multipathd */
>         add_foreign;
> @@ -164,6 +164,7 @@ global:
>         remember_wwid;
>         remove_map;
>         remove_map_by_alias;
> +       remove_map_callback;
>         remove_maps;
>         remove_wwid;
>         replace_wwids;
> diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
> index 6c23df8..a69f064 100644
> --- a/libmultipath/structs_vec.c
> +++ b/libmultipath/structs_vec.c
> @@ -336,11 +336,17 @@ void set_path_removed(struct path *pp)
>         pp->initialized = INIT_REMOVED;
>  }
>
> +void remove_map_callback(struct multipath *mpp __attribute__((unused)))
> +{
> +}
> +

Does this work? I thought that unless you specifically declared the
symbol weak, the call in remove_map() would have already gotten
resolved to point to the existing remove_map_callback() when the
shared library was getting created.  Is it because the function is
empty? Am I just misunderstanding something?

-Ben

>  void
>  remove_map(struct multipath *mpp, vector pathvec, vector mpvec)
>  {
>         int i;
>
> +       remove_map_callback(mpp);
> +
>         free_pathvec(mpp->paths, KEEP_PATHS);
>         free_pgvec(mpp->pg, KEEP_PATHS);
>         mpp->paths = mpp->pg = NULL;
> --
> 2.35.1
>



More information about the dm-devel mailing list