[PATCH 2/2] libmpathpersist: reinstate ABI 2.1.0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



__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@xxxxxxxx>
---
 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





[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux