diff options
Diffstat (limited to 'api/src/glfs-fops.c')
| -rw-r--r-- | api/src/glfs-fops.c | 541 | 
1 files changed, 351 insertions, 190 deletions
diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c index 61843c8a857..484d76ca817 100644 --- a/api/src/glfs-fops.c +++ b/api/src/glfs-fops.c @@ -58,7 +58,7 @@ glfs_loc_unlink (loc_t *loc)  struct glfs_fd * -glfs_open (struct glfs *fs, const char *path, int flags) +pub_glfs_open (struct glfs *fs, const char *path, int flags)  {  	int              ret = -1;  	struct glfs_fd  *glfd = NULL; @@ -69,7 +69,7 @@ glfs_open (struct glfs *fs, const char *path, int flags)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -130,14 +130,16 @@ out:  		glfs_fd_bind (glfd);  	} -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return glfd;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_open, 3.4.0); +  int -glfs_close (struct glfs_fd *glfd) +pub_glfs_close (struct glfs_fd *glfd)  {  	xlator_t  *subvol = NULL;  	int        ret = -1; @@ -146,7 +148,7 @@ glfs_close (struct glfs_fd *glfd)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);          if (!subvol) {                  ret = -1;                  errno = EIO; @@ -168,14 +170,16 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_close, 3.4.0); +  int -glfs_lstat (struct glfs *fs, const char *path, struct stat *stat) +pub_glfs_lstat (struct glfs *fs, const char *path, struct stat *stat)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -185,7 +189,7 @@ glfs_lstat (struct glfs *fs, const char *path, struct stat *stat)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -201,14 +205,16 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_lstat, 3.4.0); +  int -glfs_stat (struct glfs *fs, const char *path, struct stat *stat) +pub_glfs_stat (struct glfs *fs, const char *path, struct stat *stat)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -218,7 +224,7 @@ glfs_stat (struct glfs *fs, const char *path, struct stat *stat)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -234,14 +240,16 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_stat, 3.4.0); +  int -glfs_fstat (struct glfs_fd *glfd, struct stat *stat) +pub_glfs_fstat (struct glfs_fd *glfd, struct stat *stat)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -250,7 +258,7 @@ glfs_fstat (struct glfs_fd *glfd, struct stat *stat)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -272,14 +280,16 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fstat, 3.4.0); +  struct glfs_fd * -glfs_creat (struct glfs *fs, const char *path, int flags, mode_t mode) +pub_glfs_creat (struct glfs *fs, const char *path, int flags, mode_t mode)  {  	int              ret = -1;  	struct glfs_fd  *glfd = NULL; @@ -292,7 +302,7 @@ glfs_creat (struct glfs *fs, const char *path, int flags, mode_t mode)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -408,14 +418,16 @@ out:  		glfs_fd_bind (glfd);  	} -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return glfd;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_creat, 3.4.0); +  off_t -glfs_lseek (struct glfs_fd *glfd, off_t offset, int whence) +pub_glfs_lseek (struct glfs_fd *glfd, off_t offset, int whence)  {  	struct stat sb = {0, };  	int         ret = -1; @@ -430,7 +442,7 @@ glfs_lseek (struct glfs_fd *glfd, off_t offset, int whence)  		glfd->offset += offset;  		break;  	case SEEK_END: -		ret = glfs_fstat (glfd, &sb); +		ret = pub_glfs_fstat (glfd, &sb);  		if (ret) {  			/* seek cannot fail :O */  			break; @@ -442,12 +454,12 @@ glfs_lseek (struct glfs_fd *glfd, off_t offset, int whence)  	return glfd->offset;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_lseek, 3.4.0); -//////////////  ssize_t -glfs_preadv (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt, -	     off_t offset, int flags) +pub_glfs_preadv (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt, +                 off_t offset, int flags)  {  	xlator_t       *subvol = NULL;  	ssize_t         ret = -1; @@ -459,7 +471,7 @@ glfs_preadv (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt,  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -493,14 +505,16 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_preadv, 3.4.0); +  ssize_t -glfs_read (struct glfs_fd *glfd, void *buf, size_t count, int flags) +pub_glfs_read (struct glfs_fd *glfd, void *buf, size_t count, int flags)  {  	struct iovec iov = {0, };  	ssize_t      ret = 0; @@ -508,15 +522,17 @@ glfs_read (struct glfs_fd *glfd, void *buf, size_t count, int flags)  	iov.iov_base = buf;  	iov.iov_len = count; -	ret = glfs_preadv (glfd, &iov, 1, glfd->offset, flags); +	ret = pub_glfs_preadv (glfd, &iov, 1, glfd->offset, flags);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_read, 3.4.0); +  ssize_t -glfs_pread (struct glfs_fd *glfd, void *buf, size_t count, off_t offset, -	    int flags) +pub_glfs_pread (struct glfs_fd *glfd, void *buf, size_t count, off_t offset, +                int flags)  {  	struct iovec iov = {0, };  	ssize_t      ret = 0; @@ -524,23 +540,27 @@ glfs_pread (struct glfs_fd *glfd, void *buf, size_t count, off_t offset,  	iov.iov_base = buf;  	iov.iov_len = count; -	ret = glfs_preadv (glfd, &iov, 1, offset, flags); +	ret = pub_glfs_preadv (glfd, &iov, 1, offset, flags);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pread, 3.4.0); +  ssize_t -glfs_readv (struct glfs_fd *glfd, const struct iovec *iov, int count, -	    int flags) +pub_glfs_readv (struct glfs_fd *glfd, const struct iovec *iov, int count, +                int flags)  {  	ssize_t      ret = 0; -	ret = glfs_preadv (glfd, iov, count, glfd->offset, flags); +	ret = pub_glfs_preadv (glfd, iov, count, glfd->offset, flags);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_readv, 3.4.0); +  struct glfs_io {  	struct glfs_fd      *glfd; @@ -567,6 +587,23 @@ glfs_io_async_cbk (int ret, call_frame_t *frame, void *data)  	return 0;  } +ssize_t +pub_glfs_pwritev (struct glfs_fd *, const struct iovec *, int, off_t, int); + +int +pub_glfs_ftruncate (struct glfs_fd *, off_t); + +int +pub_glfs_fdatasync (struct glfs_fd *); + +int +pub_glfs_fsync (struct glfs_fd *glfd); + +int +pub_glfs_discard (struct glfs_fd *, off_t, size_t); + +int +pub_glfs_zerofill (struct glfs_fd *, off_t, off_t);  static int  glfs_io_async_task (void *data) @@ -576,17 +613,17 @@ glfs_io_async_task (void *data)  	switch (gio->op) {  	case GF_FOP_WRITE: -		ret = glfs_pwritev (gio->glfd, gio->iov, gio->count, +		ret = pub_glfs_pwritev (gio->glfd, gio->iov, gio->count,  				    gio->offset, gio->flags);  		break;  	case GF_FOP_FTRUNCATE: -		ret = glfs_ftruncate (gio->glfd, gio->offset); +		ret = pub_glfs_ftruncate (gio->glfd, gio->offset);  		break;  	case GF_FOP_FSYNC:  		if (gio->flags) -			ret = glfs_fdatasync (gio->glfd); +			ret = pub_glfs_fdatasync (gio->glfd);  		else -			ret = glfs_fsync (gio->glfd); +			ret = pub_glfs_fsync (gio->glfd);  		break;  	} @@ -625,15 +662,16 @@ out:  	GF_FREE (gio->iov);  	GF_FREE (gio);  	STACK_DESTROY (frame->root); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return 0;  }  int -glfs_preadv_async (struct glfs_fd *glfd, const struct iovec *iovec, int count, -		   off_t offset, int flags, glfs_io_cbk fn, void *data) +pub_glfs_preadv_async (struct glfs_fd *glfd, const struct iovec *iovec, +                       int count, off_t offset, int flags, glfs_io_cbk fn, +                       void *data)  {  	struct glfs_io *gio = NULL;  	int             ret = 0; @@ -644,7 +682,7 @@ glfs_preadv_async (struct glfs_fd *glfd, const struct iovec *iovec, int count,  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -702,7 +740,7 @@ out:  		GF_FREE (gio);                  if (frame)  		        STACK_DESTROY (frame->root); -		glfs_subvol_done (fs, subvol); +		priv_glfs_subvol_done (fs, subvol);  	}  	if (fd) @@ -711,10 +749,12 @@ out:  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_preadv_async, 3.4.0); +  int -glfs_read_async (struct glfs_fd *glfd, void *buf, size_t count, int flags, -		 glfs_io_cbk fn, void *data) +pub_glfs_read_async (struct glfs_fd *glfd, void *buf, size_t count, int flags, +                     glfs_io_cbk fn, void *data)  {  	struct iovec iov = {0, };  	ssize_t      ret = 0; @@ -722,15 +762,17 @@ glfs_read_async (struct glfs_fd *glfd, void *buf, size_t count, int flags,  	iov.iov_base = buf;  	iov.iov_len = count; -	ret = glfs_preadv_async (glfd, &iov, 1, glfd->offset, flags, fn, data); +	ret = pub_glfs_preadv_async (glfd, &iov, 1, glfd->offset, flags, fn, data);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_read_async, 3.4.0); +  int -glfs_pread_async (struct glfs_fd *glfd, void *buf, size_t count, off_t offset, -		  int flags, glfs_io_cbk fn, void *data) +pub_glfs_pread_async (struct glfs_fd *glfd, void *buf, size_t count, +                      off_t offset, int flags, glfs_io_cbk fn, void *data)  {  	struct iovec iov = {0, };  	ssize_t      ret = 0; @@ -738,28 +780,31 @@ glfs_pread_async (struct glfs_fd *glfd, void *buf, size_t count, off_t offset,  	iov.iov_base = buf;  	iov.iov_len = count; -	ret = glfs_preadv_async (glfd, &iov, 1, offset, flags, fn, data); +	ret = pub_glfs_preadv_async (glfd, &iov, 1, offset, flags, fn, data);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pread_async, 3.4.0); +  int -glfs_readv_async (struct glfs_fd *glfd, const struct iovec *iov, int count, -		  int flags, glfs_io_cbk fn, void *data) +pub_glfs_readv_async (struct glfs_fd *glfd, const struct iovec *iov, int count, +                      int flags, glfs_io_cbk fn, void *data)  {  	ssize_t      ret = 0; -	ret = glfs_preadv_async (glfd, iov, count, glfd->offset, flags, -				 fn, data); +	ret = pub_glfs_preadv_async (glfd, iov, count, glfd->offset, flags, +				  fn, data);  	return ret;  } -///// writev ///// +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_readv_async, 3.4.0); +  ssize_t -glfs_pwritev (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt, -	      off_t offset, int flags) +pub_glfs_pwritev (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt, +                  off_t offset, int flags)  {  	xlator_t       *subvol = NULL;  	int             ret = -1; @@ -771,7 +816,7 @@ glfs_pwritev (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt,  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -830,14 +875,16 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwritev, 3.4.0); +  ssize_t -glfs_write (struct glfs_fd *glfd, const void *buf, size_t count, int flags) +pub_glfs_write (struct glfs_fd *glfd, const void *buf, size_t count, int flags)  {  	struct iovec iov = {0, };  	ssize_t      ret = 0; @@ -845,28 +892,31 @@ glfs_write (struct glfs_fd *glfd, const void *buf, size_t count, int flags)  	iov.iov_base = (void *) buf;  	iov.iov_len = count; -	ret = glfs_pwritev (glfd, &iov, 1, glfd->offset, flags); +	ret = pub_glfs_pwritev (glfd, &iov, 1, glfd->offset, flags);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_write, 3.4.0);  ssize_t -glfs_writev (struct glfs_fd *glfd, const struct iovec *iov, int count, -	     int flags) +pub_glfs_writev (struct glfs_fd *glfd, const struct iovec *iov, int count, +                 int flags)  {  	ssize_t      ret = 0; -	ret = glfs_pwritev (glfd, iov, count, glfd->offset, flags); +	ret = pub_glfs_pwritev (glfd, iov, count, glfd->offset, flags);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_writev, 3.4.0); +  ssize_t -glfs_pwrite (struct glfs_fd *glfd, const void *buf, size_t count, off_t offset, -	     int flags) +pub_glfs_pwrite (struct glfs_fd *glfd, const void *buf, size_t count, +                 off_t offset, int flags)  {  	struct iovec iov = {0, };  	ssize_t      ret = 0; @@ -874,15 +924,20 @@ glfs_pwrite (struct glfs_fd *glfd, const void *buf, size_t count, off_t offset,  	iov.iov_base = (void *) buf;  	iov.iov_len = count; -	ret = glfs_pwritev (glfd, &iov, 1, offset, flags); +	ret = pub_glfs_pwritev (glfd, &iov, 1, offset, flags);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwrite, 3.4.0); + + +extern glfs_t *pub_glfs_from_glfd (glfs_fd_t *);  int -glfs_pwritev_async (struct glfs_fd *glfd, const struct iovec *iovec, int count, -		    off_t offset, int flags, glfs_io_cbk fn, void *data) +pub_glfs_pwritev_async (struct glfs_fd *glfd, const struct iovec *iovec, +                        int count, off_t offset, int flags, glfs_io_cbk fn, +                        void *data)  {  	struct glfs_io *gio = NULL;  	int             ret = 0; @@ -908,7 +963,7 @@ glfs_pwritev_async (struct glfs_fd *glfd, const struct iovec *iovec, int count,  	gio->fn     = fn;  	gio->data   = data; -	ret = synctask_new (glfs_from_glfd (glfd)->ctx->env, +	ret = synctask_new (pub_glfs_from_glfd (glfd)->ctx->env,  			    glfs_io_async_task, glfs_io_async_cbk,  			    NULL, gio); @@ -920,10 +975,12 @@ glfs_pwritev_async (struct glfs_fd *glfd, const struct iovec *iovec, int count,  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwritev_async, 3.4.0); +  int -glfs_write_async (struct glfs_fd *glfd, const void *buf, size_t count, int flags, -		  glfs_io_cbk fn, void *data) +pub_glfs_write_async (struct glfs_fd *glfd, const void *buf, size_t count, +                      int flags, glfs_io_cbk fn, void *data)  {  	struct iovec iov = {0, };  	ssize_t      ret = 0; @@ -931,15 +988,17 @@ glfs_write_async (struct glfs_fd *glfd, const void *buf, size_t count, int flags  	iov.iov_base = (void *) buf;  	iov.iov_len = count; -	ret = glfs_pwritev_async (glfd, &iov, 1, glfd->offset, flags, fn, data); +	ret = pub_glfs_pwritev_async (glfd, &iov, 1, glfd->offset, flags, fn, data);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_write_async, 3.4.0); +  int -glfs_pwrite_async (struct glfs_fd *glfd, const void *buf, int count, -		   off_t offset, int flags, glfs_io_cbk fn, void *data) +pub_glfs_pwrite_async (struct glfs_fd *glfd, const void *buf, int count, +                       off_t offset, int flags, glfs_io_cbk fn, void *data)  {  	struct iovec iov = {0, };  	ssize_t      ret = 0; @@ -947,26 +1006,30 @@ glfs_pwrite_async (struct glfs_fd *glfd, const void *buf, int count,  	iov.iov_base = (void *) buf;  	iov.iov_len = count; -	ret = glfs_pwritev_async (glfd, &iov, 1, offset, flags, fn, data); +	ret = pub_glfs_pwritev_async (glfd, &iov, 1, offset, flags, fn, data);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwrite_async, 3.4.0); +  int -glfs_writev_async (struct glfs_fd *glfd, const struct iovec *iov, int count, -		   int flags, glfs_io_cbk fn, void *data) +pub_glfs_writev_async (struct glfs_fd *glfd, const struct iovec *iov, int count, +                       int flags, glfs_io_cbk fn, void *data)  {  	ssize_t      ret = 0; -	ret = glfs_pwritev_async (glfd, iov, count, glfd->offset, flags, -				  fn, data); +	ret = pub_glfs_pwritev_async (glfd, iov, count, glfd->offset, flags, +				   fn, data);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_writev_async, 3.4.0); +  int -glfs_fsync (struct glfs_fd *glfd) +pub_glfs_fsync (struct glfs_fd *glfd)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -974,7 +1037,7 @@ glfs_fsync (struct glfs_fd *glfd)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -993,11 +1056,13 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fsync, 3.4.0); +  static int  glfs_fsync_async_common (struct glfs_fd *glfd, glfs_io_cbk fn, void *data, @@ -1018,7 +1083,7 @@ glfs_fsync_async_common (struct glfs_fd *glfd, glfs_io_cbk fn, void *data,  	gio->fn     = fn;  	gio->data   = data; -	ret = synctask_new (glfs_from_glfd (glfd)->ctx->env, +	ret = synctask_new (pub_glfs_from_glfd (glfd)->ctx->env,  			    glfs_io_async_task, glfs_io_async_cbk,  			    NULL, gio); @@ -1033,14 +1098,16 @@ glfs_fsync_async_common (struct glfs_fd *glfd, glfs_io_cbk fn, void *data,  int -glfs_fsync_async (struct glfs_fd *glfd, glfs_io_cbk fn, void *data) +pub_glfs_fsync_async (struct glfs_fd *glfd, glfs_io_cbk fn, void *data)  {  	return glfs_fsync_async_common (glfd, fn, data, 0);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fsync_async, 3.4.0); +  int -glfs_fdatasync (struct glfs_fd *glfd) +pub_glfs_fdatasync (struct glfs_fd *glfd)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1048,7 +1115,7 @@ glfs_fdatasync (struct glfs_fd *glfd)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1067,21 +1134,25 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fdatasync, 3.4.0); +  int -glfs_fdatasync_async (struct glfs_fd *glfd, glfs_io_cbk fn, void *data) +pub_glfs_fdatasync_async (struct glfs_fd *glfd, glfs_io_cbk fn, void *data)  {  	return glfs_fsync_async_common (glfd, fn, data, 1);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fdatasync_async, 3.4.0); +  int -glfs_ftruncate (struct glfs_fd *glfd, off_t offset) +pub_glfs_ftruncate (struct glfs_fd *glfd, off_t offset)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1089,7 +1160,7 @@ glfs_ftruncate (struct glfs_fd *glfd, off_t offset)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1108,15 +1179,17 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_ftruncate, 3.4.0); +  int -glfs_ftruncate_async (struct glfs_fd *glfd, off_t offset, -		      glfs_io_cbk fn, void *data) +pub_glfs_ftruncate_async (struct glfs_fd *glfd, off_t offset, glfs_io_cbk fn, +                          void *data)  {  	struct glfs_io *gio = NULL;  	int             ret = 0; @@ -1133,7 +1206,7 @@ glfs_ftruncate_async (struct glfs_fd *glfd, off_t offset,  	gio->fn     = fn;  	gio->data   = data; -	ret = synctask_new (glfs_from_glfd (glfd)->ctx->env, +	ret = synctask_new (pub_glfs_from_glfd (glfd)->ctx->env,  			    glfs_io_async_task, glfs_io_async_cbk,  			    NULL, gio); @@ -1145,9 +1218,11 @@ glfs_ftruncate_async (struct glfs_fd *glfd, off_t offset,  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_ftruncate_async, 3.4.0); +  int -glfs_access (struct glfs *fs, const char *path, int mode) +pub_glfs_access (struct glfs *fs, const char *path, int mode)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1157,7 +1232,7 @@ glfs_access (struct glfs *fs, const char *path, int mode)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1177,14 +1252,16 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_access, 3.4.0); +  int -glfs_symlink (struct glfs *fs, const char *data, const char *path) +pub_glfs_symlink (struct glfs *fs, const char *data, const char *path)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1196,7 +1273,7 @@ glfs_symlink (struct glfs *fs, const char *data, const char *path)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1258,14 +1335,16 @@ out:  	if (xattr_req)  		dict_unref (xattr_req); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_symlink, 3.4.0); +  int -glfs_readlink (struct glfs *fs, const char *path, char *buf, size_t bufsiz) +pub_glfs_readlink (struct glfs *fs, const char *path, char *buf, size_t bufsiz)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1276,7 +1355,7 @@ glfs_readlink (struct glfs *fs, const char *path, char *buf, size_t bufsiz)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1306,14 +1385,16 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_readlink, 3.4.0); +  int -glfs_mknod (struct glfs *fs, const char *path, mode_t mode, dev_t dev) +pub_glfs_mknod (struct glfs *fs, const char *path, mode_t mode, dev_t dev)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1325,7 +1406,7 @@ glfs_mknod (struct glfs *fs, const char *path, mode_t mode, dev_t dev)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1387,14 +1468,16 @@ out:  	if (xattr_req)  		dict_unref (xattr_req); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_mknod, 3.4.0); +  int -glfs_mkdir (struct glfs *fs, const char *path, mode_t mode) +pub_glfs_mkdir (struct glfs *fs, const char *path, mode_t mode)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1406,7 +1489,7 @@ glfs_mkdir (struct glfs *fs, const char *path, mode_t mode)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1468,14 +1551,16 @@ out:  	if (xattr_req)  		dict_unref (xattr_req); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_mkdir, 3.4.0); +  int -glfs_unlink (struct glfs *fs, const char *path) +pub_glfs_unlink (struct glfs *fs, const char *path)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1485,7 +1570,7 @@ glfs_unlink (struct glfs *fs, const char *path)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1514,14 +1599,16 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_unlink, 3.4.0); +  int -glfs_rmdir (struct glfs *fs, const char *path) +pub_glfs_rmdir (struct glfs *fs, const char *path)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1531,7 +1618,7 @@ glfs_rmdir (struct glfs *fs, const char *path)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1560,14 +1647,16 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_rmdir, 3.4.0); +  int -glfs_rename (struct glfs *fs, const char *oldpath, const char *newpath) +pub_glfs_rename (struct glfs *fs, const char *oldpath, const char *newpath)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1579,7 +1668,7 @@ glfs_rename (struct glfs *fs, const char *oldpath, const char *newpath)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1633,14 +1722,16 @@ out:  	loc_wipe (&oldloc);  	loc_wipe (&newloc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_rename, 3.4.0); +  int -glfs_link (struct glfs *fs, const char *oldpath, const char *newpath) +pub_glfs_link (struct glfs *fs, const char *oldpath, const char *newpath)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1652,7 +1743,7 @@ glfs_link (struct glfs *fs, const char *oldpath, const char *newpath)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1706,14 +1797,16 @@ out:  	loc_wipe (&oldloc);  	loc_wipe (&newloc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_link, 3.4.0); +  struct glfs_fd * -glfs_opendir (struct glfs *fs, const char *path) +pub_glfs_opendir (struct glfs *fs, const char *path)  {  	int              ret = -1;  	struct glfs_fd  *glfd = NULL; @@ -1724,7 +1817,7 @@ glfs_opendir (struct glfs *fs, const char *path)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1779,14 +1872,16 @@ out:  		glfs_fd_bind (glfd);  	} -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return glfd;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_opendir, 3.4.0); +  int -glfs_closedir (struct glfs_fd *glfd) +pub_glfs_closedir (struct glfs_fd *glfd)  {  	__glfs_entry_fd (glfd); @@ -1797,16 +1892,20 @@ glfs_closedir (struct glfs_fd *glfd)  	return 0;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_closedir, 3.4.0); +  long -glfs_telldir (struct glfs_fd *fd) +pub_glfs_telldir (struct glfs_fd *fd)  {  	return fd->offset;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_telldir, 3.4.0); +  void -glfs_seekdir (struct glfs_fd *fd, long offset) +pub_glfs_seekdir (struct glfs_fd *fd, long offset)  {  	gf_dirent_t *entry = NULL;  	gf_dirent_t *tmp = NULL; @@ -1832,6 +1931,8 @@ glfs_seekdir (struct glfs_fd *fd, long offset)  	*/  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_seekdir, 3.4.0); +  void  gf_dirent_to_dirent (gf_dirent_t *gf_dirent, struct dirent *dirent) @@ -1863,7 +1964,7 @@ glfd_entry_refresh (struct glfs_fd *glfd, int plus)  	int              ret = -1;  	fd_t            *fd = NULL; -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -1911,7 +2012,7 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } @@ -1945,8 +2046,8 @@ glfd_entry_next (struct glfs_fd *glfd, int plus)  int -glfs_readdirplus_r (struct glfs_fd *glfd, struct stat *stat, struct dirent *buf, -		    struct dirent **res) +pub_glfs_readdirplus_r (struct glfs_fd *glfd, struct stat *stat, +                        struct dirent *buf, struct dirent **res)  {  	int              ret = 0;  	gf_dirent_t     *entry = NULL; @@ -1974,16 +2075,20 @@ glfs_readdirplus_r (struct glfs_fd *glfd, struct stat *stat, struct dirent *buf,  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_readdirplus_r, 3.4.0); +  int -glfs_readdir_r (struct glfs_fd *glfd, struct dirent *buf, struct dirent **res) +pub_glfs_readdir_r (struct glfs_fd *glfd, struct dirent *buf, struct dirent **res)  { -	return glfs_readdirplus_r (glfd, 0, buf, res); +	return pub_glfs_readdirplus_r (glfd, 0, buf, res);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_readdir_r, 3.4.0); +  int -glfs_statvfs (struct glfs *fs, const char *path, struct statvfs *buf) +pub_glfs_statvfs (struct glfs *fs, const char *path, struct statvfs *buf)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -1993,7 +2098,7 @@ glfs_statvfs (struct glfs *fs, const char *path, struct statvfs *buf)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2013,11 +2118,13 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_statvfs, 3.4.0); +  int  glfs_setattr (struct glfs *fs, const char *path, struct iatt *iatt, @@ -2031,7 +2138,7 @@ glfs_setattr (struct glfs *fs, const char *path, struct iatt *iatt,  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2054,7 +2161,7 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } @@ -2069,7 +2176,7 @@ glfs_fsetattr (struct glfs_fd *glfd, struct iatt *iatt, int valid)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2088,14 +2195,14 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  }  int -glfs_chmod (struct glfs *fs, const char *path, mode_t mode) +pub_glfs_chmod (struct glfs *fs, const char *path, mode_t mode)  {  	int              ret = -1;  	struct iatt      iatt = {0, }; @@ -2109,9 +2216,11 @@ glfs_chmod (struct glfs *fs, const char *path, mode_t mode)  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_chmod, 3.4.0); +  int -glfs_fchmod (struct glfs_fd *glfd, mode_t mode) +pub_glfs_fchmod (struct glfs_fd *glfd, mode_t mode)  {  	int              ret = -1;  	struct iatt      iatt = {0, }; @@ -2125,9 +2234,11 @@ glfs_fchmod (struct glfs_fd *glfd, mode_t mode)  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fchmod, 3.4.0); +  int -glfs_chown (struct glfs *fs, const char *path, uid_t uid, gid_t gid) +pub_glfs_chown (struct glfs *fs, const char *path, uid_t uid, gid_t gid)  {  	int              ret = -1;  	int              valid = 0; @@ -2142,9 +2253,11 @@ glfs_chown (struct glfs *fs, const char *path, uid_t uid, gid_t gid)  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_chown, 3.4.0); +  int -glfs_lchown (struct glfs *fs, const char *path, uid_t uid, gid_t gid) +pub_glfs_lchown (struct glfs *fs, const char *path, uid_t uid, gid_t gid)  {  	int              ret = -1;  	int              valid = 0; @@ -2159,9 +2272,10 @@ glfs_lchown (struct glfs *fs, const char *path, uid_t uid, gid_t gid)  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_lchown, 3.4.0);  int -glfs_fchown (struct glfs_fd *glfd, uid_t uid, gid_t gid) +pub_glfs_fchown (struct glfs_fd *glfd, uid_t uid, gid_t gid)  {  	int              ret = -1;  	int              valid = 0; @@ -2176,9 +2290,11 @@ glfs_fchown (struct glfs_fd *glfd, uid_t uid, gid_t gid)  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fchown, 3.4.0); +  int -glfs_utimens (struct glfs *fs, const char *path, struct timespec times[2]) +pub_glfs_utimens (struct glfs *fs, const char *path, struct timespec times[2])  {  	int              ret = -1;  	int              valid = 0; @@ -2196,9 +2312,11 @@ glfs_utimens (struct glfs *fs, const char *path, struct timespec times[2])  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_utimens, 3.4.0); +  int -glfs_lutimens (struct glfs *fs, const char *path, struct timespec times[2]) +pub_glfs_lutimens (struct glfs *fs, const char *path, struct timespec times[2])  {  	int              ret = -1;  	int              valid = 0; @@ -2216,9 +2334,11 @@ glfs_lutimens (struct glfs *fs, const char *path, struct timespec times[2])  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_lutimens, 3.4.0); +  int -glfs_futimens (struct glfs_fd *glfd, struct timespec times[2]) +pub_glfs_futimens (struct glfs_fd *glfd, struct timespec times[2])  {  	int              ret = -1;  	int              valid = 0; @@ -2236,6 +2356,8 @@ glfs_futimens (struct glfs_fd *glfd, struct timespec times[2])  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_futimens, 3.4.0); +  int  glfs_getxattr_process (void *value, size_t size, dict_t *xattr, @@ -2282,7 +2404,7 @@ glfs_getxattr_common (struct glfs *fs, const char *path, const char *name,  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2310,30 +2432,34 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  }  ssize_t -glfs_getxattr (struct glfs *fs, const char *path, const char *name, +pub_glfs_getxattr (struct glfs *fs, const char *path, const char *name,  	       void *value, size_t size)  {  	return glfs_getxattr_common (fs, path, name, value, size, 1);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_getxattr, 3.4.0); +  ssize_t -glfs_lgetxattr (struct glfs *fs, const char *path, const char *name, +pub_glfs_lgetxattr (struct glfs *fs, const char *path, const char *name,  		void *value, size_t size)  {  	return glfs_getxattr_common (fs, path, name, value, size, 0);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_lgetxattr, 3.4.0); +  ssize_t -glfs_fgetxattr (struct glfs_fd *glfd, const char *name, void *value, +pub_glfs_fgetxattr (struct glfs_fd *glfd, const char *name, void *value,  		size_t size)  {  	int              ret = -1; @@ -2343,7 +2469,7 @@ glfs_fgetxattr (struct glfs_fd *glfd, const char *name, void *value,  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2366,11 +2492,13 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fgetxattr, 3.4.0); +  int  glfs_listxattr_process (void *value, size_t size, dict_t *xattr) @@ -2409,7 +2537,7 @@ glfs_listxattr_common (struct glfs *fs, const char *path, void *value,  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2438,25 +2566,29 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  }  ssize_t -glfs_listxattr (struct glfs *fs, const char *path, void *value, size_t size) +pub_glfs_listxattr (struct glfs *fs, const char *path, void *value, size_t size)  {  	return glfs_listxattr_common (fs, path, value, size, 1);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_listxattr, 3.4.0); +  ssize_t -glfs_llistxattr (struct glfs *fs, const char *path, void *value, size_t size) +pub_glfs_llistxattr (struct glfs *fs, const char *path, void *value, size_t size)  {  	return glfs_listxattr_common (fs, path, value, size, 0);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_llistxattr, 3.4.0); +  ssize_t  glfs_flistxattr (struct glfs_fd *glfd, void *value, size_t size) @@ -2468,7 +2600,7 @@ glfs_flistxattr (struct glfs_fd *glfd, void *value, size_t size)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2491,11 +2623,13 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_flistxattr, 3.4.0); +  dict_t *  dict_for_key_value (const char *name, const char *value, size_t size) @@ -2516,6 +2650,8 @@ dict_for_key_value (const char *name, const char *value, size_t size)  	return xattr;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_futimens, 3.4.0); +  int  glfs_setxattr_common (struct glfs *fs, const char *path, const char *name, @@ -2530,7 +2666,7 @@ glfs_setxattr_common (struct glfs *fs, const char *path, const char *name,  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2563,30 +2699,34 @@ out:  	if (xattr)  		dict_unref (xattr); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  }  int -glfs_setxattr (struct glfs *fs, const char *path, const char *name, +pub_glfs_setxattr (struct glfs *fs, const char *path, const char *name,  	       const void *value, size_t size, int flags)  {  	return glfs_setxattr_common (fs, path, name, value, size, flags, 1);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_setxattr, 3.4.0); +  int -glfs_lsetxattr (struct glfs *fs, const char *path, const char *name, +pub_glfs_lsetxattr (struct glfs *fs, const char *path, const char *name,  		const void *value, size_t size, int flags)  {  	return glfs_setxattr_common (fs, path, name, value, size, flags, 0);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_lsetxattr, 3.4.0); +  int -glfs_fsetxattr (struct glfs_fd *glfd, const char *name, const void *value, +pub_glfs_fsetxattr (struct glfs_fd *glfd, const char *name, const void *value,  		size_t size, int flags)  {  	int              ret = -1; @@ -2596,7 +2736,7 @@ glfs_fsetxattr (struct glfs_fd *glfd, const char *name, const void *value,  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2625,11 +2765,13 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fsetxattr, 3.4.0); +  int  glfs_removexattr_common (struct glfs *fs, const char *path, const char *name, @@ -2643,7 +2785,7 @@ glfs_removexattr_common (struct glfs *fs, const char *path, const char *name,  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2667,28 +2809,32 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  }  int -glfs_removexattr (struct glfs *fs, const char *path, const char *name) +pub_glfs_removexattr (struct glfs *fs, const char *path, const char *name)  {  	return glfs_removexattr_common (fs, path, name, 1);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_removexattr, 3.4.0); +  int -glfs_lremovexattr (struct glfs *fs, const char *path, const char *name) +pub_glfs_lremovexattr (struct glfs *fs, const char *path, const char *name)  {  	return glfs_removexattr_common (fs, path, name, 0);  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_lremovexattr, 3.4.0); +  int -glfs_fremovexattr (struct glfs_fd *glfd, const char *name) +pub_glfs_fremovexattr (struct glfs_fd *glfd, const char *name)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -2696,7 +2842,7 @@ glfs_fremovexattr (struct glfs_fd *glfd, const char *name)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2715,14 +2861,16 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fremovexattr, 3.4.0); +  int -glfs_chdir (struct glfs *fs, const char *path) +pub_glfs_chdir (struct glfs *fs, const char *path)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -2732,7 +2880,7 @@ glfs_chdir (struct glfs *fs, const char *path)  	__glfs_entry_fs (fs); -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2757,14 +2905,16 @@ retry:  out:  	loc_wipe (&loc); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_chdir, 3.4.0); +  int -glfs_fchdir (struct glfs_fd *glfd) +pub_glfs_fchdir (struct glfs_fd *glfd)  {  	int       ret = -1;  	inode_t  *inode = NULL; @@ -2773,7 +2923,7 @@ glfs_fchdir (struct glfs_fd *glfd)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2801,14 +2951,16 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fchdir, 3.4.0); +  char * -glfs_realpath (struct glfs *fs, const char *path, char *resolved_path) +pub_glfs_realpath (struct glfs *fs, const char *path, char *resolved_path)  {  	int              ret = -1;  	char            *retpath = NULL; @@ -2831,7 +2983,7 @@ glfs_realpath (struct glfs *fs, const char *path, char *resolved_path)  		goto out;  	} -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2859,14 +3011,16 @@ out:  		retpath = NULL;  	} -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return retpath;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_realpath, 3.4.0); +  char * -glfs_getcwd (struct glfs *fs, char *buf, size_t n) +pub_glfs_getcwd (struct glfs *fs, char *buf, size_t n)  {  	int              ret = -1;  	inode_t         *inode = NULL; @@ -2909,6 +3063,8 @@ out:  	return buf;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_getcwd, 3.4.0); +  static void  gf_flock_to_flock (struct gf_flock *gf_flock, struct flock *flock) @@ -2933,7 +3089,7 @@ gf_flock_from_flock (struct gf_flock *gf_flock, struct flock *flock)  int -glfs_posix_lock (struct glfs_fd *glfd, int cmd, struct flock *flock) +pub_glfs_posix_lock (struct glfs_fd *glfd, int cmd, struct flock *flock)  {  	int              ret = -1;  	xlator_t        *subvol = NULL; @@ -2943,7 +3099,7 @@ glfs_posix_lock (struct glfs_fd *glfd, int cmd, struct flock *flock)  	__glfs_entry_fd (glfd); -	subvol = glfs_active_subvol (glfd->fs); +	subvol = priv_glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  		errno = EIO; @@ -2968,14 +3124,16 @@ out:  	if (fd)  		fd_unref (fd); -	glfs_subvol_done (glfd->fs, subvol); +	priv_glfs_subvol_done (glfd->fs, subvol);  	return ret;  } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_posix_lock, 3.4.0); +  struct glfs_fd * -glfs_dup (struct glfs_fd *glfd) +pub_glfs_dup (struct glfs_fd *glfd)  {  	xlator_t  *subvol = NULL;  	fd_t      *fd = NULL; @@ -2985,7 +3143,7 @@ glfs_dup (struct glfs_fd *glfd)  	__glfs_entry_fd (glfd);  	fs = glfd->fs; -	subvol = glfs_active_subvol (fs); +	subvol = priv_glfs_active_subvol (fs);  	if (!subvol) {  		errno = EIO;  		goto out; @@ -3010,7 +3168,10 @@ out:  	if (dupfd)  		glfs_fd_bind (dupfd); -	glfs_subvol_done (fs, subvol); +	priv_glfs_subvol_done (fs, subvol);  	return dupfd;  } + +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_dup, 3.4.0); +  | 
