* [PATCH 2/2] libmpathpersist: reinstate ABI 2.1.0
2024-08-13 9:40 [PATCH 1/2] libmpathcmd: reinstate ABI 1.0.0 Martin Wilck
@ 2024-08-13 9:40 ` Martin Wilck
2024-08-14 21:45 ` [PATCH 1/2] libmpathcmd: reinstate ABI 1.0.0 Benjamin Marzinski
1 sibling, 0 replies; 3+ messages in thread
From: Martin Wilck @ 2024-08-13 9:40 UTC (permalink / raw)
To: Christophe Varoqui, Benjamin Marzinski; +Cc: dm-devel, Martin Wilck
__mpath_persistent_reserve_{in,out}() were part of our public ABI. Instead of
removing them completely, define it as a weak aliases.
This way, programs linked against previous versions of libmpathpersist
will continue to work.
This shouldn't interfere with general symbol naming rules, as a weak
symbol won't override a library symbol of the same name.
Signed-off-by: Martin Wilck <mwilck@suse.com>
---
libmpathpersist/libmpathpersist.version | 17 ++++++++++++-----
libmpathpersist/mpath_persist.c | 6 ++++++
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/libmpathpersist/libmpathpersist.version b/libmpathpersist/libmpathpersist.version
index f467d99..c7ddafb 100644
--- a/libmpathpersist/libmpathpersist.version
+++ b/libmpathpersist/libmpathpersist.version
@@ -10,23 +10,30 @@
*
* See libmultipath.version for general policy about version numbers.
*/
-LIBMPATHPERSIST_3.0.0 {
+/* Previous API for backward compatibility */
+LIBMPATHPERSIST_2.1.0 {
global:
- /* public API as defined in mpath_persist.h */
libmpathpersist_exit;
libmpathpersist_init;
mpath_lib_exit;
mpath_lib_init;
mpath_mx_alloc_len;
mpath_persistent_reserve_free_vecs;
- mpath_persistent_reserve_in__;
+ __mpath_persistent_reserve_in;
mpath_persistent_reserve_in;
mpath_persistent_reserve_init_vecs;
- mpath_persistent_reserve_out__;
+ __mpath_persistent_reserve_out;
mpath_persistent_reserve_out;
-local: *;
+local:
+ *;
};
+LIBMPATHPERSIST_2.2.0 {
+global:
+ mpath_persistent_reserve_in__;
+ mpath_persistent_reserve_out__;
+} LIBMPATHPERSIST_2.1.0;
+
__LIBMPATHPERSIST_INT_1.0.0 {
/* Internal use by multipath-tools */
dumpHex;
diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c
index ace91d7..f5267eb 100644
--- a/libmpathpersist/mpath_persist.c
+++ b/libmpathpersist/mpath_persist.c
@@ -127,6 +127,8 @@ int mpath_persistent_reserve_in__(int fd, int rq_servact,
resp, noisy);
}
+extern int __mpath_persistent_reserve_in(int, int, struct prin_resp *, int)
+ __attribute__((weak, alias("mpath_persistent_reserve_in__")));
int mpath_persistent_reserve_out__( int fd, int rq_servact, int rq_scope,
unsigned int rq_type, struct prout_param_descriptor *paramp, int noisy)
@@ -136,6 +138,10 @@ int mpath_persistent_reserve_out__( int fd, int rq_servact, int rq_scope,
noisy);
}
+extern int __mpath_persistent_reserve_out(int, int, int, unsigned int,
+ struct prout_param_descriptor *, int)
+ __attribute__((weak, alias("mpath_persistent_reserve_out__")));
+
int mpath_persistent_reserve_in (int fd, int rq_servact,
struct prin_resp *resp, int noisy, int verbose)
{
--
2.46.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 1/2] libmpathcmd: reinstate ABI 1.0.0
2024-08-13 9:40 [PATCH 1/2] libmpathcmd: reinstate ABI 1.0.0 Martin Wilck
2024-08-13 9:40 ` [PATCH 2/2] libmpathpersist: reinstate ABI 2.1.0 Martin Wilck
@ 2024-08-14 21:45 ` Benjamin Marzinski
1 sibling, 0 replies; 3+ messages in thread
From: Benjamin Marzinski @ 2024-08-14 21:45 UTC (permalink / raw)
To: Martin Wilck; +Cc: Christophe Varoqui, dm-devel, Martin Wilck
On Tue, Aug 13, 2024 at 11:40:45AM +0200, Martin Wilck wrote:
For the set:
Tested-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
> __mpath_connect() was part of our public ABI. Instead of removing
> it completely, define it as a weak alias of the new mpath_connect__().
> This way, programs linked against previous versions of libmpathcmd
> will continue to work.
>
> This shouldn't interfere with general symbol naming rules, as a weak
> symbol won't override a library symbol of the same name.
>
> Signed-off-by: Martin Wilck <mwilck@suse.com>
> ---
> libmpathcmd/libmpathcmd.version | 12 ++++++++----
> libmpathcmd/mpath_cmd.c | 3 +++
> 2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/libmpathcmd/libmpathcmd.version b/libmpathcmd/libmpathcmd.version
> index a786c25..81bdb2b 100644
> --- a/libmpathcmd/libmpathcmd.version
> +++ b/libmpathcmd/libmpathcmd.version
> @@ -10,16 +10,20 @@
> *
> * See libmultipath.version for general policy about version numbers.
> */
> -LIBMPATHCMD_2.0.0 {
> +
> +LIBMPATHCMD_1.0.0 {
> global:
> mpath_connect;
> - mpath_connect__;
> + __mpath_connect;
> mpath_disconnect;
> mpath_process_cmd;
> mpath_recv_reply;
> mpath_recv_reply_len;
> mpath_recv_reply_data;
> mpath_send_cmd;
> -local:
> - *;
> };
> +
> +LIBMPATHCMD_1.1.0 {
> +global:
> + mpath_connect__;
> +} LIBMPATHCMD_1.0.0;
> diff --git a/libmpathcmd/mpath_cmd.c b/libmpathcmd/mpath_cmd.c
> index 1fa036c..a38e8b6 100644
> --- a/libmpathcmd/mpath_cmd.c
> +++ b/libmpathcmd/mpath_cmd.c
> @@ -133,6 +133,9 @@ int mpath_connect__(int nonblocking)
> return fd;
> }
>
> +extern int __mpath_connect(int)
> + __attribute__((weak, alias("mpath_connect__")));
> +
> /*
> * connect to a unix domain socket
> */
> --
> 2.46.0
^ permalink raw reply [flat|nested] 3+ messages in thread