diff options
Diffstat (limited to 'xlators/storage/posix/src/posix-entry-ops.c')
-rw-r--r-- | xlators/storage/posix/src/posix-entry-ops.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/xlators/storage/posix/src/posix-entry-ops.c b/xlators/storage/posix/src/posix-entry-ops.c index d42a7f76e10..377fece5610 100644 --- a/xlators/storage/posix/src/posix-entry-ops.c +++ b/xlators/storage/posix/src/posix-entry-ops.c @@ -57,6 +57,7 @@ #include "posix-aio.h" #include "glusterfs-acl.h" #include "posix-messages.h" +#include "posix-metadata.h" #include "events.h" #include "posix-gfid-path.h" #include "compat-uuid.h" @@ -492,6 +493,8 @@ ignore: goto out; } + posix_set_ctime (frame, this, real_path, -1, loc->inode, &stbuf); + op_ret = posix_pstat (this, loc->parent, loc->pargfid, par_path, &postparent, _gf_false); if (op_ret == -1) { @@ -502,6 +505,9 @@ ignore: goto out; } + posix_set_parent_ctime (frame, this, par_path, -1, loc->parent, + &postparent); + op_ret = 0; out: @@ -808,6 +814,8 @@ posix_mkdir (call_frame_t *frame, xlator_t *this, goto out; } + posix_set_ctime (frame, this, real_path, -1, loc->inode, &stbuf); + op_ret = posix_pstat (this, loc->parent, loc->pargfid, par_path, &postparent, _gf_false); if (op_ret == -1) { @@ -818,6 +826,9 @@ posix_mkdir (call_frame_t *frame, xlator_t *this, goto out; } + posix_set_parent_ctime (frame, this, par_path, -1, loc->parent, + &postparent); + op_ret = 0; out: @@ -1222,6 +1233,9 @@ posix_unlink (call_frame_t *frame, xlator_t *this, goto out; } + posix_set_parent_ctime (frame, this, par_path, -1, loc->parent, + &postparent); + unwind_dict = posix_dict_set_nlink (xdata, unwind_dict, stbuf.ia_nlink); op_ret = 0; out: @@ -1355,6 +1369,9 @@ posix_rmdir (call_frame_t *frame, xlator_t *this, goto out; } + posix_set_parent_ctime (frame, this, par_path, -1, loc->parent, + &postparent); + out: SET_TO_OLD_FS_ID (); @@ -1432,6 +1449,8 @@ posix_symlink (call_frame_t *frame, xlator_t *this, entry_created = _gf_true; + posix_set_ctime (frame, this, real_path, -1, loc->inode, &stbuf); + #ifndef HAVE_SET_FSID op_ret = sys_lchown (real_path, frame->root->uid, gid); if (op_ret == -1) { @@ -1493,6 +1512,9 @@ ignore: goto out; } + posix_set_parent_ctime (frame, this, par_path, -1, loc->parent, + &postparent); + op_ret = 0; out: @@ -1778,6 +1800,8 @@ unlock: goto out; } + posix_set_ctime (frame, this, real_newpath, -1, newloc->inode, &stbuf); + op_ret = posix_pstat (this, oldloc->parent, oldloc->pargfid, par_oldpath, &postoldparent, _gf_false); if (op_ret == -1) { @@ -1788,6 +1812,9 @@ unlock: goto out; } + posix_set_parent_ctime (frame, this, par_oldpath, -1, oldloc->parent, + &postoldparent); + op_ret = posix_pstat (this, newloc->parent, newloc->pargfid, par_newpath, &postnewparent, _gf_false); if (op_ret == -1) { @@ -1798,6 +1825,9 @@ unlock: goto out; } + posix_set_parent_ctime (frame, this, par_newpath, -1, newloc->parent, + &postnewparent); + if (was_present) unwind_dict = posix_dict_set_nlink (xdata, unwind_dict, nlink); op_ret = 0; @@ -1899,6 +1929,8 @@ posix_link (call_frame_t *frame, xlator_t *this, goto out; } + posix_set_ctime (frame, this, real_newpath, -1, newloc->inode, &stbuf); + op_ret = posix_pstat (this, newloc->parent, newloc->pargfid, par_newpath, &postparent, _gf_false); if (op_ret == -1) { @@ -1908,6 +1940,9 @@ posix_link (call_frame_t *frame, xlator_t *this, goto out; } + posix_set_parent_ctime (frame, this, par_newpath, -1, newloc->parent, + &postparent); + if (priv->update_pgfid_nlinks) { MAKE_PGFID_XATTR_KEY (pgfid_xattr_key, PGFID_XATTR_KEY_PREFIX, newloc->pargfid); @@ -2120,6 +2155,8 @@ fill_stat: goto out; } + posix_set_ctime (frame, this, real_path, -1, loc->inode, &stbuf); + op_ret = posix_pstat (this, loc->parent, loc->pargfid, par_path, &postparent, _gf_false); if (op_ret == -1) { @@ -2130,6 +2167,9 @@ fill_stat: goto out; } + posix_set_parent_ctime (frame, this, par_path, -1, loc->parent, + &postparent); + op_ret = -1; pfd = GF_CALLOC (1, sizeof (*pfd), gf_posix_mt_posix_fd); if (!pfd) { |