summaryrefslogtreecommitdiffstats
path: root/api/src/glfs-resolve.c
diff options
context:
space:
mode:
authorKaleb S. KEITHLEY <kkeithle@redhat.com>2014-11-05 13:59:37 -0500
committerKaleb KEITHLEY <kkeithle@redhat.com>2015-03-05 13:42:04 -0800
commit35fdb730b733cec49f5c7cb4807eabed08631712 (patch)
treedba9a0b9f74e8e737308fc01b0cb9a3c55ed0c0d /api/src/glfs-resolve.c
parent8bc612d803b53e49f00268c1ba7471de9b93e0aa (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: I64e6860d9ccfa22c40376eef2e1e6ebc0e36f051 BUG: 1160712 Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com> Reviewed-on: http://review.gluster.org/9058 Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'api/src/glfs-resolve.c')
-rw-r--r--api/src/glfs-resolve.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/api/src/glfs-resolve.c b/api/src/glfs-resolve.c
index 4ca2eb6fcf4..138ab422c8a 100644
--- a/api/src/glfs-resolve.c
+++ b/api/src/glfs-resolve.c
@@ -135,7 +135,7 @@ __glfs_refresh_inode (struct glfs *fs, xlator_t *subvol, inode_t *inode)
}
int
-glfs_loc_touchup (loc_t *loc)
+priv_glfs_loc_touchup (loc_t *loc)
{
char *path = NULL;
int ret = -1;
@@ -163,6 +163,7 @@ out:
return ret;
}
+GFAPI_SYMVER_PRIVATE_DEFAULT(glfs_loc_touchup, 3.4.0);
int
glfs_resolve_symlink (struct glfs *fs, xlator_t *subvol, inode_t *inode,
@@ -261,7 +262,7 @@ glfs_resolve_component (struct glfs *fs, xlator_t *subvol, inode_t *parent,
if (!loc.inode)
goto out;
- glret = glfs_loc_touchup (&loc);
+ glret = priv_glfs_loc_touchup (&loc);
if (glret < 0) {
ret = -1;
goto out;
@@ -313,7 +314,7 @@ out:
int
-glfs_resolve_at (struct glfs *fs, xlator_t *subvol, inode_t *at,
+priv_glfs_resolve_at (struct glfs *fs, xlator_t *subvol, inode_t *at,
const char *origpath, loc_t *loc, struct iatt *iatt,
int follow, int reval)
{
@@ -390,7 +391,7 @@ glfs_resolve_at (struct glfs *fs, xlator_t *subvol, inode_t *at,
if (ret < 0)
break;
- ret = glfs_resolve_at (fs, subvol, parent, lpath,
+ ret = priv_glfs_resolve_at (fs, subvol, parent, lpath,
&sym_loc,
/* followed iatt becomes the
component iatt
@@ -444,7 +445,7 @@ glfs_resolve_at (struct glfs *fs, xlator_t *subvol, inode_t *at,
ret = 0;
}
- glfs_loc_touchup (loc);
+ priv_glfs_loc_touchup (loc);
out:
GF_FREE (path);
@@ -453,6 +454,8 @@ out:
return ret;
}
+GFAPI_SYMVER_PRIVATE_DEFAULT(glfs_resolve_at, 3.4.0);
+
int
glfs_resolve_path (struct glfs *fs, xlator_t *subvol, const char *origpath,
@@ -462,13 +465,13 @@ glfs_resolve_path (struct glfs *fs, xlator_t *subvol, const char *origpath,
inode_t *cwd = NULL;
if (origpath[0] == '/')
- return glfs_resolve_at (fs, subvol, NULL, origpath, loc, iatt,
- follow, reval);
+ return priv_glfs_resolve_at (fs, subvol, NULL, origpath, loc,
+ iatt, follow, reval);
cwd = glfs_cwd_get (fs);
- ret = glfs_resolve_at (fs, subvol, cwd, origpath, loc, iatt,
- follow, reval);
+ ret = priv_glfs_resolve_at (fs, subvol, cwd, origpath, loc, iatt,
+ follow, reval);
if (cwd)
inode_unref (cwd);
@@ -791,7 +794,7 @@ __glfs_active_subvol (struct glfs *fs)
}
xlator_t *
-glfs_active_subvol (struct glfs *fs)
+priv_glfs_active_subvol (struct glfs *fs)
{
xlator_t *subvol = NULL;
xlator_t *old_subvol = NULL;
@@ -812,14 +815,15 @@ glfs_active_subvol (struct glfs *fs)
glfs_unlock (fs);
if (old_subvol)
- glfs_subvol_done (fs, old_subvol);
+ priv_glfs_subvol_done (fs, old_subvol);
return subvol;
}
+GFAPI_SYMVER_PRIVATE_DEFAULT(glfs_active_subvol, 3.4.0);
void
-glfs_subvol_done (struct glfs *fs, xlator_t *subvol)
+priv_glfs_subvol_done (struct glfs *fs, xlator_t *subvol)
{
int ref = 0;
xlator_t *active_subvol = NULL;
@@ -840,6 +844,7 @@ glfs_subvol_done (struct glfs *fs, xlator_t *subvol)
}
}
+GFAPI_SYMVER_PRIVATE_DEFAULT(glfs_subvol_done, 3.4.0);
int
__glfs_cwd_set (struct glfs *fs, inode_t *inode)