Bug 1160711

Summary: libgfapi: use versioned symbols in libgfapi.so for compatibility
Product: [Community] GlusterFS Reporter: Kaleb KEITHLEY <kkeithle>
Component: libgfapiAssignee: bugs <bugs>
Status: CLOSED CURRENTRELEASE QA Contact: storage-qa-internal <storage-qa-internal>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 3.5.3CC: bugs, gluster-bugs, sdharane
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glusterfs-3.5.4 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1160709 Environment:
Last Closed: 2015-06-03 21:08:15 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1160709, 1160712    
Bug Blocks: 1160710, 1165129    

Description Kaleb KEITHLEY 2014-11-05 13:14:44 UTC
+++ This bug was initially created as a clone of Bug #1160709 +++

Description of problem:

Bumping the SO_NAME to 7.0.0 breaks compatibility for dependent applications linked against earlier versions of libgfapi.

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 Anand Avati 2014-11-05 16:29:23 UTC
REVIEW: http://review.gluster.org/9056 (api: versioned symbols in libgfapi.so for compatibility) posted (#1) for review on release-3.5 by Kaleb KEITHLEY (kkeithle)

Comment 2 Anand Avati 2014-11-05 18:10:22 UTC
REVIEW: http://review.gluster.org/9056 (api: versioned symbols in libgfapi.so for compatibility) posted (#2) for review on release-3.5 by Kaleb KEITHLEY (kkeithle)

Comment 3 Anand Avati 2014-11-26 08:46:05 UTC
REVIEW: http://review.gluster.org/9056 (api: versioned symbols in libgfapi.so for compatibility) posted (#3) for review on release-3.5 by Niels de Vos (ndevos)

Comment 4 Anand Avati 2014-11-26 08:46:13 UTC
REVIEW: http://review.gluster.org/9199 (pkg-config: make the version in gluster-api.pc backwards compatible) posted (#1) for review on release-3.5 by Niels de Vos (ndevos)

Comment 5 Anand Avati 2015-02-09 12:15:57 UTC
COMMIT: http://review.gluster.org/9199 committed in release-3.5 by Niels de Vos (ndevos) 
------
commit 20f45d95608e4a7ba54c3977d0a5c31ee5a36cd9
Author: Niels de Vos <ndevos>
Date:   Thu Nov 20 16:26:36 2014 +0100

    pkg-config: make the version in gluster-api.pc backwards compatible
    
    Once we released gluster-api.pc with version=4. Since then we undid the
    library versioning and replaced it with symbol-versioning. The current
    libgfapi.so has version 0, but the symbols have the version from the
    main package at the time they were added.
    
    Because other packages (like samba) use the pkg-config version, we can
    not drop it, or decrease the version easily. The simplest solution is to
    keep the version=4 and add sub-digits for the actual package/symbol
    versions. In future, the version in gluster-api.pc will be like 4.3.x.y.
    
    Cherry picked from commit 6ba258d2b7d4520af95ff638e02598e4aa247ec4:
    > Change-Id: If359c8de5b847a7e818199a7246636113837da2d
    > BUG: 1166232
    > Signed-off-by: Niels de Vos <ndevos>
    > Reviewed-on: http://review.gluster.org/9154
    > Reviewed-by: Kaleb KEITHLEY <kkeithle>
    > Reviewed-by: Lalatendu Mohanty <lmohanty>
    > Tested-by: Gluster Build System <jenkins.com>
    
    BUG: 1160711
    Change-Id: I785335972b357954fe4ede9c599b305c4a56eba7
    Signed-off-by: Niels de Vos <ndevos>
    Reviewed-on: http://review.gluster.org/9199
    Tested-by: Gluster Build System <jenkins.com>

Comment 6 Anand Avati 2015-02-09 12:16:56 UTC
COMMIT: http://review.gluster.org/9056 committed in release-3.5 by Niels de Vos (ndevos) 
------
commit f2fd96af8e58439562ccb8ff8c41827584c622f4
Author: Kaleb S. KEITHLEY <kkeithle>
Date:   Wed Nov 5 11:27:15 2014 -0500

    api: versioned symbols in libgfapi.so for compatibility
    
    Use versioned symbols to keep libgfapi at libgfapi.so.0.0.0
    
    Some nits uncovered:
    
    + there are a couple functions declared that do not have an
      associated definition, e.g. glfs_truncate(), glfs_caller_specific_init()
    
    + there are five private/internal functions used by heal/src/glfsheal
      and the gfapi master xlator (glfs-master.c): glfs_loc_touchup(),
      glfs_active_subvol(), and glfs_subvol_done(), glfs_init_done(),
      glfs_resolve_at(); which are not declared in glfs.h;
    
    + for this initial pass at versioned symbols, we use the earliest version
      of all public symbols, i.e. those for which there are declarations in
      glfs.h or glfs-handles.h.
      Further investigation as we do backports to 3.6, 3.4, and 3.4
      will be required to determine if older implementations need to
      be preserved (forward ported) and their associated alias(es) and
      symbol version(s) defined.
    
    FWIW, we should consider linking all of our libraries with a map, it'll
    result in a cleaner ABI. Perhaps something for an intern to do or a
    Google Summer of Code project.
    
    Change-Id: I513b9aad9c5fd7d8b34ff33acac35f37b6baaab6
    BUG: 1160711
    Signed-off-by: Kaleb S. KEITHLEY <kkeithle>
    Reviewed-on: http://review.gluster.org/9056
    Tested-by: Gluster Build System <jenkins.com>
    Reviewed-by: Niels de Vos <ndevos>

Comment 7 Niels de Vos 2015-06-03 21:08:15 UTC
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.5.4, please reopen this bug report.

glusterfs-3.5.4 has been announced on the Gluster Packaging mailinglist [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution.

[1] http://thread.gmane.org/gmane.comp.file-systems.gluster.packaging/2
[2] http://thread.gmane.org/gmane.comp.file-systems.gluster.user