From mboxrd@z Thu Jan 1 00:00:00 1970 From: mwilck@suse.com Subject: [PATCH 00/11] multipath-tools: add linker version scripts Date: Thu, 24 Sep 2020 15:36:33 +0200 Message-ID: <20200924133644.14034-1-mwilck@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@redhat.com, Martin Wilck List-Id: dm-devel.ids From: Martin Wilck Hi Christophe, hi Ben, Patch 1-5 are small fixes, the first two resent from an earlier submission. Patch 6ff. add version scripts for the linker to libmultipath, libmpathpersist, and libmpathcmd. Is it useful to do this for libmultipath? We have always said that this is not a public, stable ABI. However, I still believe it has merits. First of all, it's a description of the ABI we use. It turns out that it cuts the size of the exported symbol list of libmultipath roughly in half, which is better than I'd expected. It leads to ld.so-time failure rather than weird crashes in the unlikely case that non-matching binaries are used together. It allows packaging scripts to check compatibility of binaries and libraries without resorting to version and release. It will help us stabilize the ABI, albeit only in the long run. Finally, it's a step towards modernizing our code base in general. To avoid misunderstanding, my intention is not to provide a stable or even backward-compatible ABI in libmultipath.so.0. We're still allowed to make changes to globally visible data structures like "struct config", and to remove symbols from the ABI, like no serious shared library would do. We just need to bump the ABI version when we do so. Regards, Martin Martin Wilck (11): libmultipath: find_mpe(): don't match with empty WWID libmultipath: copy mpp->hwe from pp->hwe libmultipath: dm_map_present_by_uuid(): fix dm_task_create() call libdmmp tests: fix compilation libmultipath: prio: constify some function parameters libmultipath: checkers/prio: allow non-lazy .so loading multipath-tools Makefiles: separate rules for .so and man pages libmultipath: create separate .so for unit tests libmultipath: add linker version script libmpathpersist: add linker version script libmpathcmd: add linker version script libdmmp/test/libdmmp_speed_test.c | 2 +- libdmmp/test/libdmmp_test.c | 2 +- libmpathcmd/Makefile | 14 +- libmpathcmd/libmpathcmd.version | 13 ++ libmpathpersist/Makefile | 16 +- libmpathpersist/libmpathpersist.version | 20 +++ libmultipath/Makefile | 22 ++- libmultipath/checkers.c | 17 ++ libmultipath/config.c | 2 +- libmultipath/configure.c | 7 + libmultipath/devmapper.c | 2 +- libmultipath/libmultipath.version | 215 ++++++++++++++++++++++++ libmultipath/prio.c | 26 ++- libmultipath/prio.h | 4 +- libmultipath/propsel.c | 4 +- libmultipath/structs.c | 15 ++ libmultipath/structs.h | 1 + libmultipath/structs_vec.c | 54 +++--- multipathd/main.c | 10 -- tests/Makefile | 10 +- 20 files changed, 384 insertions(+), 72 deletions(-) create mode 100644 libmpathcmd/libmpathcmd.version create mode 100644 libmpathpersist/libmpathpersist.version create mode 100644 libmultipath/libmultipath.version -- 2.28.0