diff options
author | Kaleb S. KEITHLEY <kkeithle@redhat.com> | 2014-11-05 11:27:15 -0500 |
---|---|---|
committer | Niels de Vos <ndevos@redhat.com> | 2015-02-09 04:16:53 -0800 |
commit | f2fd96af8e58439562ccb8ff8c41827584c622f4 (patch) | |
tree | ad5f02a57f548467d6f4d58d8fe1c2b935668b4c /api/src/glfs-mgmt.c | |
parent | 20f45d95608e4a7ba54c3977d0a5c31ee5a36cd9 (diff) |
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@redhat.com>
Reviewed-on: http://review.gluster.org/9056
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Diffstat (limited to 'api/src/glfs-mgmt.c')
-rw-r--r-- | api/src/glfs-mgmt.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/api/src/glfs-mgmt.c b/api/src/glfs-mgmt.c index 10d9583738e..c3ace84fb98 100644 --- a/api/src/glfs-mgmt.c +++ b/api/src/glfs-mgmt.c @@ -324,7 +324,7 @@ out: } int -glfs_get_volumeid (struct glfs *fs, char *volid, size_t size) +pub_glfs_get_volumeid (struct glfs *fs, char *volid, size_t size) { /* TODO: Define a global macro to store UUID size */ size_t uuid_size = 16; @@ -366,6 +366,8 @@ done: return uuid_size; } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_get_volumeid, 3.5.0); + int glfs_get_volume_info (struct glfs *fs) { @@ -574,7 +576,7 @@ out: gf_log ("mgmt", GF_LOG_ERROR, "Server is operating at an " "op-version which is not supported"); errno = ENOTSUP; - glfs_init_done (fs, -1); + priv_glfs_init_done (fs, -1); } if (ret && ctx && !ctx->active) { @@ -587,7 +589,7 @@ out: if (!need_retry) { if (!errno) errno = EINVAL; - glfs_init_done (fs, -1); + priv_glfs_init_done (fs, -1); } } @@ -683,7 +685,7 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, errno = ENOTCONN; gf_log("glfs-mgmt", GF_LOG_INFO, "Exhausted all volfile servers"); - glfs_init_done (fs, -1); + priv_glfs_init_done (fs, -1); break; } server = list_entry (server->list.next, typeof(*server), @@ -700,7 +702,7 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, "failed to set remote-port: %d", server->port); errno = ENOTCONN; - glfs_init_done (fs, -1); + priv_glfs_init_done (fs, -1); break; } @@ -712,7 +714,7 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, "failed to set remote-host: %s", server->volfile_server); errno = ENOTCONN; - glfs_init_done (fs, -1); + priv_glfs_init_done (fs, -1); break; } @@ -724,7 +726,7 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, "failed to set transport-type: %s", server->transport); errno = ENOTCONN; - glfs_init_done (fs, -1); + priv_glfs_init_done (fs, -1); break; } gf_log ("glfs-mgmt", GF_LOG_INFO, @@ -745,7 +747,7 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, "failed to fetch volume file (key:%s)", ctx->cmd_args.volfile_id); errno = EINVAL; - glfs_init_done (fs, -1); + priv_glfs_init_done (fs, -1); } break; |