diff options
author | Arjun <arjsharm@redhat.com> | 2018-12-04 11:02:37 +0530 |
---|---|---|
committer | Amar Tumballi <amarts@redhat.com> | 2019-01-16 06:24:45 +0000 |
commit | 213f31bf9e72eee57a6579b66e259af8e59e9c67 (patch) | |
tree | d8b25d80f5e0422a8017deec97c2e3bc9e7d034b /api/src/glfs-fops.c | |
parent | 2261e444a47ffffb5d64305efceee1d5a734cd75 (diff) |
gfapi : making glfs_setattr/glfs_fsetattr as public
Initially glfs_fsetattr and glfs_setattr, both functions accepted iatt as arguements
but now they accept stat and later in the function the stat is being converted to iatt
so that it can be passed to syncop_fsetattr/syncop_setattr.
Change-Id: I41a9e0124785a32ca19ef4d492c5ed5002e66ede
updates: #389
Signed-off-by: Arjun Sharma <arjsharm@redhat.com>
Diffstat (limited to 'api/src/glfs-fops.c')
-rw-r--r-- | api/src/glfs-fops.c | 118 |
1 files changed, 66 insertions, 52 deletions
diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c index 6d81bd85498..c052bae4f90 100644 --- a/api/src/glfs-fops.c +++ b/api/src/glfs-fops.c @@ -3914,8 +3914,8 @@ invalid_fs: GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_statvfs, 3.4.0); int -glfs_setattr(struct glfs *fs, const char *path, struct iatt *iatt, int valid, - int follow) +pub_glfs_setattr(struct glfs *fs, const char *path, struct stat *stat, + int valid, int follow) { int ret = -1; xlator_t *subvol = NULL; @@ -3925,11 +3925,17 @@ glfs_setattr(struct glfs *fs, const char *path, struct iatt *iatt, int valid, struct iatt riatt = { 0, }; + struct iatt iatt = { + 0, + }; int reval = 0; + int glvalid = 0; DECLARE_OLD_THIS; __GLFS_ENTRY_VALIDATE_FS(fs, invalid_fs); + GF_VALIDATE_OR_GOTO("glfs_setattr", stat, out); + subvol = glfs_active_subvol(fs); if (!subvol) { ret = -1; @@ -3947,8 +3953,10 @@ retry: if (ret) goto out; + glfs_iatt_from_stat(stat, valid, &iatt, &glvalid); + /* TODO : Add leaseid */ - ret = syncop_setattr(subvol, &loc, iatt, valid, 0, 0, NULL, NULL); + ret = syncop_setattr(subvol, &loc, &iatt, glvalid, 0, 0, NULL, NULL); DECODE_SYNCOP_ERR(ret); ESTALE_RETRY(ret, errno, reval, &loc, retry); @@ -3963,10 +3971,16 @@ invalid_fs: return ret; } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_setattr, future); + int -glfs_fsetattr(struct glfs_fd *glfd, struct iatt *iatt, int valid) +pub_glfs_fsetattr(struct glfs_fd *glfd, struct stat *stat, int valid) { int ret = -1; + int glvalid = 0; + struct iatt iatt = { + 0, + }; xlator_t *subvol = NULL; fd_t *fd = NULL; @@ -3975,6 +3989,8 @@ glfs_fsetattr(struct glfs_fd *glfd, struct iatt *iatt, int valid) GF_REF_GET(glfd); + GF_VALIDATE_OR_GOTO("glfs_fsetattr", stat, out); + subvol = glfs_active_subvol(glfd->fs); if (!subvol) { ret = -1; @@ -3989,8 +4005,10 @@ glfs_fsetattr(struct glfs_fd *glfd, struct iatt *iatt, int valid) goto out; } + glfs_iatt_from_stat(stat, valid, &iatt, &glvalid); + /* TODO : Add leaseid */ - ret = syncop_fsetattr(subvol, fd, iatt, valid, 0, 0, NULL, NULL); + ret = syncop_fsetattr(subvol, fd, &iatt, glvalid, 0, 0, NULL, NULL); DECODE_SYNCOP_ERR(ret); out: if (fd) @@ -4006,19 +4024,21 @@ invalid_fs: return ret; } +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fsetattr, future); + int pub_glfs_chmod(struct glfs *fs, const char *path, mode_t mode) { int ret = -1; - struct iatt iatt = { + struct stat stat = { 0, }; int valid = 0; - iatt.ia_prot = ia_prot_from_st_mode(mode); - valid = GF_SET_ATTR_MODE; + stat.st_mode = mode; + valid = GFAPI_SET_ATTR_MODE; - ret = glfs_setattr(fs, path, &iatt, valid, 1); + ret = glfs_setattr(fs, path, &stat, valid, 1); return ret; } @@ -4029,15 +4049,15 @@ int pub_glfs_fchmod(struct glfs_fd *glfd, mode_t mode) { int ret = -1; - struct iatt iatt = { + struct stat stat = { 0, }; int valid = 0; - iatt.ia_prot = ia_prot_from_st_mode(mode); - valid = GF_SET_ATTR_MODE; + stat.st_mode = mode; + valid = GFAPI_SET_ATTR_MODE; - ret = glfs_fsetattr(glfd, &iatt, valid); + ret = glfs_fsetattr(glfd, &stat, valid); return ret; } @@ -4049,22 +4069,22 @@ pub_glfs_chown(struct glfs *fs, const char *path, uid_t uid, gid_t gid) { int ret = 0; int valid = 0; - struct iatt iatt = { + struct stat stat = { 0, }; if (uid != (uid_t)-1) { - iatt.ia_uid = uid; - valid = GF_SET_ATTR_UID; + stat.st_uid = uid; + valid = GFAPI_SET_ATTR_UID; } if (gid != (uid_t)-1) { - iatt.ia_gid = gid; - valid = valid | GF_SET_ATTR_GID; + stat.st_gid = gid; + valid = valid | GFAPI_SET_ATTR_GID; } if (valid) - ret = glfs_setattr(fs, path, &iatt, valid, 1); + ret = glfs_setattr(fs, path, &stat, valid, 1); return ret; } @@ -4076,22 +4096,22 @@ pub_glfs_lchown(struct glfs *fs, const char *path, uid_t uid, gid_t gid) { int ret = 0; int valid = 0; - struct iatt iatt = { + struct stat stat = { 0, }; if (uid != (uid_t)-1) { - iatt.ia_uid = uid; - valid = GF_SET_ATTR_UID; + stat.st_uid = uid; + valid = GFAPI_SET_ATTR_UID; } if (gid != (uid_t)-1) { - iatt.ia_gid = gid; - valid = valid | GF_SET_ATTR_GID; + stat.st_gid = gid; + valid = valid | GFAPI_SET_ATTR_GID; } if (valid) - ret = glfs_setattr(fs, path, &iatt, valid, 0); + ret = glfs_setattr(fs, path, &stat, valid, 0); return ret; } @@ -4103,22 +4123,22 @@ pub_glfs_fchown(struct glfs_fd *glfd, uid_t uid, gid_t gid) { int ret = 0; int valid = 0; - struct iatt iatt = { + struct stat stat = { 0, }; if (uid != (uid_t)-1) { - iatt.ia_uid = uid; - valid = GF_SET_ATTR_UID; + stat.st_uid = uid; + valid = GFAPI_SET_ATTR_UID; } if (gid != (uid_t)-1) { - iatt.ia_gid = gid; - valid = valid | GF_SET_ATTR_GID; + stat.st_gid = gid; + valid = valid | GFAPI_SET_ATTR_GID; } if (valid) - ret = glfs_fsetattr(glfd, &iatt, valid); + ret = glfs_fsetattr(glfd, &stat, valid); return ret; } @@ -4131,18 +4151,16 @@ pub_glfs_utimens(struct glfs *fs, const char *path, { int ret = -1; int valid = 0; - struct iatt iatt = { + struct stat stat = { 0, }; - iatt.ia_atime = times[0].tv_sec; - iatt.ia_atime_nsec = times[0].tv_nsec; - iatt.ia_mtime = times[1].tv_sec; - iatt.ia_mtime_nsec = times[1].tv_nsec; + stat.st_atim = times[0]; + stat.st_mtim = times[1]; - valid = GF_SET_ATTR_ATIME | GF_SET_ATTR_MTIME; + valid = GFAPI_SET_ATTR_ATIME | GFAPI_SET_ATTR_MTIME; - ret = glfs_setattr(fs, path, &iatt, valid, 1); + ret = glfs_setattr(fs, path, &stat, valid, 1); return ret; } @@ -4155,18 +4173,16 @@ pub_glfs_lutimens(struct glfs *fs, const char *path, { int ret = -1; int valid = 0; - struct iatt iatt = { + struct stat stat = { 0, }; - iatt.ia_atime = times[0].tv_sec; - iatt.ia_atime_nsec = times[0].tv_nsec; - iatt.ia_mtime = times[1].tv_sec; - iatt.ia_mtime_nsec = times[1].tv_nsec; + stat.st_atim = times[0]; + stat.st_mtim = times[1]; - valid = GF_SET_ATTR_ATIME | GF_SET_ATTR_MTIME; + valid = GFAPI_SET_ATTR_ATIME | GFAPI_SET_ATTR_MTIME; - ret = glfs_setattr(fs, path, &iatt, valid, 0); + ret = glfs_setattr(fs, path, &stat, valid, 0); return ret; } @@ -4178,18 +4194,16 @@ pub_glfs_futimens(struct glfs_fd *glfd, const struct timespec times[2]) { int ret = -1; int valid = 0; - struct iatt iatt = { + struct stat stat = { 0, }; - iatt.ia_atime = times[0].tv_sec; - iatt.ia_atime_nsec = times[0].tv_nsec; - iatt.ia_mtime = times[1].tv_sec; - iatt.ia_mtime_nsec = times[1].tv_nsec; + stat.st_atim = times[0]; + stat.st_mtim = times[1]; - valid = GF_SET_ATTR_ATIME | GF_SET_ATTR_MTIME; + valid = GFAPI_SET_ATTR_ATIME | GFAPI_SET_ATTR_MTIME; - ret = glfs_fsetattr(glfd, &iatt, valid); + ret = glfs_fsetattr(glfd, &stat, valid); return ret; } |