summaryrefslogtreecommitdiffstats
path: root/api/src/glfs.c
diff options
context:
space:
mode:
authorKaleb S. KEITHLEY <kkeithle@redhat.com>2014-11-05 11:27:15 -0500
committerNiels de Vos <ndevos@redhat.com>2015-02-09 04:16:53 -0800
commitf2fd96af8e58439562ccb8ff8c41827584c622f4 (patch)
treead5f02a57f548467d6f4d58d8fe1c2b935668b4c /api/src/glfs.c
parent20f45d95608e4a7ba54c3977d0a5c31ee5a36cd9 (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.c')
-rw-r--r--api/src/glfs.c77
1 files changed, 58 insertions, 19 deletions
diff --git a/api/src/glfs.c b/api/src/glfs.c
index 4329cc6109a..5c137ef999d 100644
--- a/api/src/glfs.c
+++ b/api/src/glfs.c
@@ -280,8 +280,8 @@ out:
int
-glfs_set_xlator_option (struct glfs *fs, const char *xlator, const char *key,
- const char *value)
+pub_glfs_set_xlator_option (struct glfs *fs, const char *xlator,
+ const char *key, const char *value)
{
xlator_cmdline_option_t *option = NULL;
@@ -319,9 +319,12 @@ enomem:
return -1;
}
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_set_xlator_option, 3.4.0);
+
+
int
-glfs_unset_volfile_server (struct glfs *fs, const char *transport,
- const char *host, const int port)
+pub_glfs_unset_volfile_server (struct glfs *fs, const char *transport,
+ const char *host, const int port)
{
cmd_args_t *cmd_args = NULL;
server_cmdline_t *server = NULL;
@@ -347,9 +350,12 @@ out:
return ret;
}
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_unset_volfile_server, 3.5.1);
+
+
int
-glfs_set_volfile_server (struct glfs *fs, const char *transport,
- const char *host, int port)
+pub_glfs_set_volfile_server (struct glfs *fs, const char *transport,
+ const char *host, int port)
{
cmd_args_t *cmd_args = NULL;
server_cmdline_t *server = NULL;
@@ -421,27 +427,44 @@ out:
return ret;
}
-int glfs_setfsuid (uid_t fsuid)
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_set_volfile_server, 3.4.0);
+
+
+int
+pub_glfs_setfsuid (uid_t fsuid)
{
return syncopctx_setfsuid (&fsuid);
}
-int glfs_setfsgid (gid_t fsgid)
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_setfsuid, 3.4.2);
+
+
+int
+pub_glfs_setfsgid (gid_t fsgid)
{
return syncopctx_setfsgid (&fsgid);
}
-int glfs_setfsgroups (size_t size, const gid_t *list)
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_setfsgid, 3.4.2);
+
+
+int
+pub_glfs_setfsgroups (size_t size, const gid_t *list)
{
return syncopctx_setfsgroups(size, list);
}
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_setfsgroups, 3.4.2);
+
+
struct glfs *
-glfs_from_glfd (struct glfs_fd *glfd)
+pub_glfs_from_glfd (struct glfs_fd *glfd)
{
return glfd->fs;
}
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_from_glfd, 3.4.0);
+
struct glfs_fd *
glfs_fd_new (struct glfs *fs)
@@ -509,7 +532,7 @@ glfs_poller (void *data)
struct glfs *
-glfs_new (const char *volname)
+pub_glfs_new (const char *volname)
{
struct glfs *fs = NULL;
int ret = -1;
@@ -555,9 +578,11 @@ glfs_new (const char *volname)
return fs;
}
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_new, 3.4.0);
+
int
-glfs_set_volfile (struct glfs *fs, const char *volfile)
+pub_glfs_set_volfile (struct glfs *fs, const char *volfile)
{
cmd_args_t *cmd_args = NULL;
@@ -571,9 +596,11 @@ glfs_set_volfile (struct glfs *fs, const char *volfile)
return 0;
}
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_set_volfile, 3.4.0);
+
int
-glfs_set_logging (struct glfs *fs, const char *logfile, int loglevel)
+pub_glfs_set_logging (struct glfs *fs, const char *logfile, int loglevel)
{
int ret = 0;
char *tmplog = NULL;
@@ -598,6 +625,8 @@ out:
return ret;
}
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_set_logging, 3.4.0);
+
int
glfs_init_wait (struct glfs *fs)
@@ -620,7 +649,7 @@ glfs_init_wait (struct glfs *fs)
void
-glfs_init_done (struct glfs *fs, int ret)
+priv_glfs_init_done (struct glfs *fs, int ret)
{
glfs_init_cbk init_cbk;
@@ -650,6 +679,8 @@ out:
return;
}
+GFAPI_SYMVER_PRIVATE_DEFAULT(glfs_init_done, 3.4.0);
+
int
glfs_init_common (struct glfs *fs)
@@ -687,7 +718,7 @@ glfs_init_async (struct glfs *fs, glfs_init_cbk cbk)
int
-glfs_init (struct glfs *fs)
+pub_glfs_init (struct glfs *fs)
{
int ret = -1;
@@ -700,9 +731,14 @@ glfs_init (struct glfs *fs)
return ret;
}
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_init, 3.4.0);
+
+
+extern xlator_t *
+priv_glfs_active_subvol (struct glfs *);
int
-glfs_fini (struct glfs *fs)
+pub_glfs_fini (struct glfs *fs)
{
int ret = -1;
int countdown = 100;
@@ -733,9 +769,9 @@ glfs_fini (struct glfs *fs)
*pool*/
ret = (call_pool->cnt == 0)? 0: -1;
- subvol = glfs_active_subvol (fs);
+ subvol = priv_glfs_active_subvol (fs);
if (subvol) {
- /* PARENT_DOWN within glfs_subvol_done() is issued only
+ /* PARENT_DOWN within priv_glfs_subvol_done() is issued only
on graph switch (new graph should activiate and
decrement the extra @winds count taken in glfs_graph_setup()
@@ -748,10 +784,13 @@ glfs_fini (struct glfs *fs)
*/
}
- glfs_subvol_done (fs, subvol);
+ priv_glfs_subvol_done (fs, subvol);
if (gf_log_fini(ctx) != 0)
ret = -1;
return ret;
}
+
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fini, 3.4.0);
+