From fee92f7c6abc651e88a8b52d5187286a4b8df2c3 Mon Sep 17 00:00:00 2001 From: Soumya Koduri Date: Mon, 14 Dec 2015 17:52:37 +0530 Subject: Upcall/cache-invalidation: Use parent stbuf while updating parent entry For *create* fops (CREATE, MKDIR, MKNOD), we invalidate the parent entry. Hence send parent attributes in the stat field. Also "UP_PARENT_DENTRY_FLAGS" has to be set only for the fops which shall result in two invalidations requests - one for the inode on which fop is being performed and another on parent entry. In case of CREATE/MKDIR/MKNOD fops, there shall be only one invalidation request sent, that too on parent inode. We send invalidation directly on parent inode's gfid. So there is no necessity to set these flags which when set shall endup invalidating the parent's parent entry. Cherry picked from commit f4282bd927e2e0d826d62cf1192102382c5697b2: > Change-Id: I7514ee08382081e3e060818ede497dbca26987dc > BUG: 1291259 > Signed-off-by: Soumya Koduri > Reviewed-on: http://review.gluster.org/12962 > CentOS-regression: Gluster Build System > NetBSD-regression: NetBSD Build System > Smoke: Gluster Build System > Reviewed-by: Niels de Vos Change-Id: I7514ee08382081e3e060818ede497dbca26987dc BUG: 1347715 Signed-off-by: Niels de Vos Reviewed-on: http://review.gluster.org/15600 Smoke: Gluster Build System NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Reviewed-by: Kaushal M --- xlators/features/upcall/src/upcall-cache-invalidation.h | 2 +- xlators/features/upcall/src/upcall.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'xlators/features/upcall/src') diff --git a/xlators/features/upcall/src/upcall-cache-invalidation.h b/xlators/features/upcall/src/upcall-cache-invalidation.h index edb8285827f..7c5d9e1add2 100644 --- a/xlators/features/upcall/src/upcall-cache-invalidation.h +++ b/xlators/features/upcall/src/upcall-cache-invalidation.h @@ -48,7 +48,7 @@ #define UP_RENAME_FLAGS (UP_RENAME) /* to invalidate parent directory entries for fops -rename, unlink, - * rmdir, mkdir, create */ + * rmdir, link */ #define UP_PARENT_DENTRY_FLAGS (UP_PARENT_TIMES) /* for fop - unlink, link, rmdir, mkdir */ diff --git a/xlators/features/upcall/src/upcall.c b/xlators/features/upcall/src/upcall.c index 4e9650066d4..6fb4e802d23 100644 --- a/xlators/features/upcall/src/upcall.c +++ b/xlators/features/upcall/src/upcall.c @@ -642,7 +642,7 @@ up_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, /* invalidate parent's entry too */ flags = UP_TIMES; upcall_cache_invalidate (frame, this, client, local->inode, flags, - stbuf, postparent, NULL); + postparent, NULL, NULL); out: UPCALL_STACK_UNWIND (mkdir, frame, op_ret, op_errno, @@ -704,7 +704,7 @@ up_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, /* However invalidate parent's entry */ flags = UP_TIMES; upcall_cache_invalidate (frame, this, client, local->inode, flags, - stbuf, postparent, NULL); + postparent, NULL, NULL); out: UPCALL_STACK_UNWIND (create, frame, op_ret, op_errno, fd, @@ -1054,7 +1054,7 @@ up_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, /* invalidate parent's entry too */ flags = UP_TIMES; upcall_cache_invalidate (frame, this, client, local->inode, flags, - buf, postparent, NULL); + postparent, NULL, NULL); out: UPCALL_STACK_UNWIND (mknod, frame, op_ret, op_errno, inode, buf, @@ -1115,7 +1115,7 @@ up_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, /* invalidate parent's entry too */ flags = UP_TIMES; upcall_cache_invalidate (frame, this, client, local->inode, flags, - buf, postparent, NULL); + postparent, NULL, NULL); out: UPCALL_STACK_UNWIND (symlink, frame, op_ret, op_errno, inode, buf, -- cgit