Updating the glfs_setattr and glfs_fsetattr public APIs to use glfs_stat
Change-Id: I0e86c8222c88b4c71087ec287ba81f8353d70822 updates: #389 Signed-off-by: Arjun <arjsharm@redhat.com>
This commit is contained in:
parent
73b8d6c8d1
commit
cd6795c5e8
@ -373,6 +373,35 @@ priv_glfs_iatt_from_statx(struct iatt *iatt, const struct glfs_stat *statx)
|
||||
}
|
||||
GFAPI_SYMVER_PRIVATE_DEFAULT(glfs_iatt_from_statx, 6.0);
|
||||
|
||||
void
|
||||
glfsflags_from_gfapiflags(struct glfs_stat *stat, int *glvalid)
|
||||
{
|
||||
*glvalid = 0;
|
||||
if (stat->glfs_st_mask & GLFS_STAT_MODE) {
|
||||
*glvalid |= GF_SET_ATTR_MODE;
|
||||
}
|
||||
|
||||
if (stat->glfs_st_mask & GLFS_STAT_SIZE) {
|
||||
*glvalid |= GF_SET_ATTR_SIZE;
|
||||
}
|
||||
|
||||
if (stat->glfs_st_mask & GLFS_STAT_UID) {
|
||||
*glvalid |= GF_SET_ATTR_UID;
|
||||
}
|
||||
|
||||
if (stat->glfs_st_mask & GLFS_STAT_GID) {
|
||||
*glvalid |= GF_SET_ATTR_GID;
|
||||
}
|
||||
|
||||
if (stat->glfs_st_mask & GLFS_STAT_ATIME) {
|
||||
*glvalid |= GF_SET_ATTR_ATIME;
|
||||
}
|
||||
|
||||
if (stat->glfs_st_mask & GLFS_STAT_MTIME) {
|
||||
*glvalid |= GF_SET_ATTR_MTIME;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
glfs_loc_unlink(loc_t *loc)
|
||||
{
|
||||
@ -3914,10 +3943,11 @@ invalid_fs:
|
||||
GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_statvfs, 3.4.0);
|
||||
|
||||
int
|
||||
pub_glfs_setattr(struct glfs *fs, const char *path, struct stat *stat,
|
||||
int valid, int follow)
|
||||
pub_glfs_setattr(struct glfs *fs, const char *path, struct glfs_stat *stat,
|
||||
int follow)
|
||||
{
|
||||
int ret = -1;
|
||||
int glvalid;
|
||||
xlator_t *subvol = NULL;
|
||||
loc_t loc = {
|
||||
0,
|
||||
@ -3929,7 +3959,6 @@ pub_glfs_setattr(struct glfs *fs, const char *path, struct stat *stat,
|
||||
0,
|
||||
};
|
||||
int reval = 0;
|
||||
int glvalid = 0;
|
||||
|
||||
DECLARE_OLD_THIS;
|
||||
__GLFS_ENTRY_VALIDATE_FS(fs, invalid_fs);
|
||||
@ -3953,7 +3982,8 @@ retry:
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
glfs_iatt_from_stat(stat, valid, &iatt, &glvalid);
|
||||
glfs_iatt_from_statx(&iatt, stat);
|
||||
glfsflags_from_gfapiflags(stat, &glvalid);
|
||||
|
||||
/* TODO : Add leaseid */
|
||||
ret = syncop_setattr(subvol, &loc, &iatt, glvalid, 0, 0, NULL, NULL);
|
||||
@ -3974,10 +4004,10 @@ invalid_fs:
|
||||
GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_setattr, 6.0);
|
||||
|
||||
int
|
||||
pub_glfs_fsetattr(struct glfs_fd *glfd, struct stat *stat, int valid)
|
||||
pub_glfs_fsetattr(struct glfs_fd *glfd, struct glfs_stat *stat)
|
||||
{
|
||||
int ret = -1;
|
||||
int glvalid = 0;
|
||||
int glvalid;
|
||||
struct iatt iatt = {
|
||||
0,
|
||||
};
|
||||
@ -4005,7 +4035,8 @@ pub_glfs_fsetattr(struct glfs_fd *glfd, struct stat *stat, int valid)
|
||||
goto out;
|
||||
}
|
||||
|
||||
glfs_iatt_from_stat(stat, valid, &iatt, &glvalid);
|
||||
glfs_iatt_from_statx(&iatt, stat);
|
||||
glfsflags_from_gfapiflags(stat, &glvalid);
|
||||
|
||||
/* TODO : Add leaseid */
|
||||
ret = syncop_fsetattr(subvol, fd, &iatt, glvalid, 0, 0, NULL, NULL);
|
||||
@ -4030,15 +4061,14 @@ int
|
||||
pub_glfs_chmod(struct glfs *fs, const char *path, mode_t mode)
|
||||
{
|
||||
int ret = -1;
|
||||
struct stat stat = {
|
||||
struct glfs_stat stat = {
|
||||
0,
|
||||
};
|
||||
int valid = 0;
|
||||
|
||||
stat.st_mode = mode;
|
||||
valid = GFAPI_SET_ATTR_MODE;
|
||||
stat.glfs_st_mode = mode;
|
||||
stat.glfs_st_mask = GLFS_STAT_MODE;
|
||||
|
||||
ret = glfs_setattr(fs, path, &stat, valid, 1);
|
||||
ret = glfs_setattr(fs, path, &stat, 1);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -4049,15 +4079,14 @@ int
|
||||
pub_glfs_fchmod(struct glfs_fd *glfd, mode_t mode)
|
||||
{
|
||||
int ret = -1;
|
||||
struct stat stat = {
|
||||
struct glfs_stat stat = {
|
||||
0,
|
||||
};
|
||||
int valid = 0;
|
||||
|
||||
stat.st_mode = mode;
|
||||
valid = GFAPI_SET_ATTR_MODE;
|
||||
stat.glfs_st_mode = mode;
|
||||
stat.glfs_st_mask = GLFS_STAT_MODE;
|
||||
|
||||
ret = glfs_fsetattr(glfd, &stat, valid);
|
||||
ret = glfs_fsetattr(glfd, &stat);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -4068,23 +4097,22 @@ int
|
||||
pub_glfs_chown(struct glfs *fs, const char *path, uid_t uid, gid_t gid)
|
||||
{
|
||||
int ret = 0;
|
||||
int valid = 0;
|
||||
struct stat stat = {
|
||||
struct glfs_stat stat = {
|
||||
0,
|
||||
};
|
||||
|
||||
if (uid != (uid_t)-1) {
|
||||
stat.st_uid = uid;
|
||||
valid = GFAPI_SET_ATTR_UID;
|
||||
stat.glfs_st_uid = uid;
|
||||
stat.glfs_st_mask = GLFS_STAT_UID;
|
||||
}
|
||||
|
||||
if (gid != (uid_t)-1) {
|
||||
stat.st_gid = gid;
|
||||
valid = valid | GFAPI_SET_ATTR_GID;
|
||||
stat.glfs_st_gid = gid;
|
||||
stat.glfs_st_mask = stat.glfs_st_mask | GLFS_STAT_GID;
|
||||
}
|
||||
|
||||
if (valid)
|
||||
ret = glfs_setattr(fs, path, &stat, valid, 1);
|
||||
if (stat.glfs_st_mask)
|
||||
ret = glfs_setattr(fs, path, &stat, 1);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -4095,23 +4123,22 @@ int
|
||||
pub_glfs_lchown(struct glfs *fs, const char *path, uid_t uid, gid_t gid)
|
||||
{
|
||||
int ret = 0;
|
||||
int valid = 0;
|
||||
struct stat stat = {
|
||||
struct glfs_stat stat = {
|
||||
0,
|
||||
};
|
||||
|
||||
if (uid != (uid_t)-1) {
|
||||
stat.st_uid = uid;
|
||||
valid = GFAPI_SET_ATTR_UID;
|
||||
stat.glfs_st_uid = uid;
|
||||
stat.glfs_st_mask = GLFS_STAT_UID;
|
||||
}
|
||||
|
||||
if (gid != (uid_t)-1) {
|
||||
stat.st_gid = gid;
|
||||
valid = valid | GFAPI_SET_ATTR_GID;
|
||||
stat.glfs_st_gid = gid;
|
||||
stat.glfs_st_mask = stat.glfs_st_mask | GLFS_STAT_GID;
|
||||
}
|
||||
|
||||
if (valid)
|
||||
ret = glfs_setattr(fs, path, &stat, valid, 0);
|
||||
if (stat.glfs_st_mask)
|
||||
ret = glfs_setattr(fs, path, &stat, 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -4122,23 +4149,22 @@ int
|
||||
pub_glfs_fchown(struct glfs_fd *glfd, uid_t uid, gid_t gid)
|
||||
{
|
||||
int ret = 0;
|
||||
int valid = 0;
|
||||
struct stat stat = {
|
||||
struct glfs_stat stat = {
|
||||
0,
|
||||
};
|
||||
|
||||
if (uid != (uid_t)-1) {
|
||||
stat.st_uid = uid;
|
||||
valid = GFAPI_SET_ATTR_UID;
|
||||
stat.glfs_st_uid = uid;
|
||||
stat.glfs_st_mask = GLFS_STAT_UID;
|
||||
}
|
||||
|
||||
if (gid != (uid_t)-1) {
|
||||
stat.st_gid = gid;
|
||||
valid = valid | GFAPI_SET_ATTR_GID;
|
||||
stat.glfs_st_gid = gid;
|
||||
stat.glfs_st_mask = stat.glfs_st_mask | GLFS_STAT_GID;
|
||||
}
|
||||
|
||||
if (valid)
|
||||
ret = glfs_fsetattr(glfd, &stat, valid);
|
||||
if (stat.glfs_st_mask)
|
||||
ret = glfs_fsetattr(glfd, &stat);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -4150,17 +4176,16 @@ pub_glfs_utimens(struct glfs *fs, const char *path,
|
||||
const struct timespec times[2])
|
||||
{
|
||||
int ret = -1;
|
||||
int valid = 0;
|
||||
struct stat stat = {
|
||||
struct glfs_stat stat = {
|
||||
0,
|
||||
};
|
||||
|
||||
stat.st_atim = times[0];
|
||||
stat.st_mtim = times[1];
|
||||
stat.glfs_st_atime = times[0];
|
||||
stat.glfs_st_mtime = times[1];
|
||||
|
||||
valid = GFAPI_SET_ATTR_ATIME | GFAPI_SET_ATTR_MTIME;
|
||||
stat.glfs_st_mask = GLFS_STAT_ATIME | GLFS_STAT_MTIME;
|
||||
|
||||
ret = glfs_setattr(fs, path, &stat, valid, 1);
|
||||
ret = glfs_setattr(fs, path, &stat, 1);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -4172,17 +4197,16 @@ pub_glfs_lutimens(struct glfs *fs, const char *path,
|
||||
const struct timespec times[2])
|
||||
{
|
||||
int ret = -1;
|
||||
int valid = 0;
|
||||
struct stat stat = {
|
||||
struct glfs_stat stat = {
|
||||
0,
|
||||
};
|
||||
|
||||
stat.st_atim = times[0];
|
||||
stat.st_mtim = times[1];
|
||||
stat.glfs_st_atime = times[0];
|
||||
stat.glfs_st_mtime = times[1];
|
||||
|
||||
valid = GFAPI_SET_ATTR_ATIME | GFAPI_SET_ATTR_MTIME;
|
||||
stat.glfs_st_mask = GLFS_STAT_ATIME | GLFS_STAT_MTIME;
|
||||
|
||||
ret = glfs_setattr(fs, path, &stat, valid, 0);
|
||||
ret = glfs_setattr(fs, path, &stat, 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -4193,17 +4217,16 @@ int
|
||||
pub_glfs_futimens(struct glfs_fd *glfd, const struct timespec times[2])
|
||||
{
|
||||
int ret = -1;
|
||||
int valid = 0;
|
||||
struct stat stat = {
|
||||
struct glfs_stat stat = {
|
||||
0,
|
||||
};
|
||||
|
||||
stat.st_atim = times[0];
|
||||
stat.st_mtim = times[1];
|
||||
stat.glfs_st_atime = times[0];
|
||||
stat.glfs_st_mtime = times[1];
|
||||
|
||||
valid = GFAPI_SET_ATTR_ATIME | GFAPI_SET_ATTR_MTIME;
|
||||
stat.glfs_st_mask = GLFS_STAT_ATIME | GLFS_STAT_MTIME;
|
||||
|
||||
ret = glfs_fsetattr(glfd, &stat, valid);
|
||||
ret = glfs_fsetattr(glfd, &stat);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -1446,11 +1446,11 @@ glfs_lease(glfs_fd_t *glfd, glfs_lease_t *lease, glfs_recall_cbk fn,
|
||||
*/
|
||||
|
||||
int
|
||||
glfs_fsetattr(struct glfs_fd *glfd, struct stat *stat, int valid) __THROW
|
||||
glfs_fsetattr(struct glfs_fd *glfd, struct glfs_stat *stat) __THROW
|
||||
GFAPI_PUBLIC(glfs_fsetattr, 6.0);
|
||||
|
||||
int
|
||||
glfs_setattr(struct glfs *fs, const char *path, struct stat *stat, int valid,
|
||||
glfs_setattr(struct glfs *fs, const char *path, struct glfs_stat *stat,
|
||||
int follow) __THROW GFAPI_PUBLIC(glfs_setattr, 6.0);
|
||||
|
||||
__END_DECLS
|
||||
|
Loading…
x
Reference in New Issue
Block a user