From 05dacf07b4d427aa144aacb730e2296d9f96fe6a Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Wed, 22 Jun 2016 14:52:58 +0530 Subject: features/index: Delete parent dir indices when heal on it is complete Backport of: http://review.gluster.org/#/c/14781 In this patch, the state information about whether a directory gfid index is present or not is stored in the inode ctx with values IN and NOTIN. This saves index xl the need to perform stat() everytime an index_entry_create() is called. When a brick is restarted these in-memory inode ctx records will be gone. So when granular entry heal happens after a brick is restarted, and a post-op is done on the parent, if the state gotten from inode ctx is UNKNOWN, then index xl does a stat to initialize the state as IN or NOTIN. Note that this is a one-time operation for the lifetime of the brick. Such a change also helps avoid calling index_del() in xattrop_index_action() periodically even when granular self-heal is disabled or when the volume type is disperse. Change-Id: I037d0a8936381fbe3105e2e78489bfa571e5bdb0 BUG: 1355609 Signed-off-by: Krutika Dhananjay Reviewed-on: http://review.gluster.org/14896 NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Reviewed-by: Pranith Kumar Karampuri Smoke: Gluster Build System --- tests/basic/afr/granular-esh/conservative-merge.t | 17 ++++++++--------- tests/basic/afr/granular-esh/granular-esh.t | 17 +++++++++-------- 2 files changed, 17 insertions(+), 17 deletions(-) (limited to 'tests/basic/afr') diff --git a/tests/basic/afr/granular-esh/conservative-merge.t b/tests/basic/afr/granular-esh/conservative-merge.t index 194c0fcc2de..b566a0ea4d3 100644 --- a/tests/basic/afr/granular-esh/conservative-merge.t +++ b/tests/basic/afr/granular-esh/conservative-merge.t @@ -126,14 +126,13 @@ TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_subdir/f1 TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir3/f1 TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_subdir2/f1 -# To be uncommented once index xl is made to purge the parent gfid dir -#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$ROOT_GFID -#TEST ! stat $B0/${V0}0/.glusterfs/indices/entry-changes/$ROOT_GFID -#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir -#TEST ! stat $B0/${V0}0/.glusterfs/indices/entry-changes/$gfid_dir -#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir2 -#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_subdir -#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir3 -#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_subdir2 +TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$ROOT_GFID +TEST ! stat $B0/${V0}0/.glusterfs/indices/entry-changes/$ROOT_GFID +TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir +TEST ! stat $B0/${V0}0/.glusterfs/indices/entry-changes/$gfid_dir +TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir2 +TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_subdir +TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir3 +TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_subdir2 cleanup diff --git a/tests/basic/afr/granular-esh/granular-esh.t b/tests/basic/afr/granular-esh/granular-esh.t index 9aa4505a3c2..4adcfc7456a 100644 --- a/tests/basic/afr/granular-esh/granular-esh.t +++ b/tests/basic/afr/granular-esh/granular-esh.t @@ -149,9 +149,10 @@ TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$ROOT_GFID/dir TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$ROOT_GFID/newdir TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$ROOT_GFID/file_stale -TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changesi/$gfid_dir/f1 -TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changesi/$gfid_dir/f2 -TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changesi/$gfid_dir/f3 +# To be uncommented once index xl is made to purge the parent gfid dir on rm -rf +#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir/f1 +#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir/f2 +#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir/f3 TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_newdir/f1 TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_newdir/f2 @@ -160,10 +161,10 @@ TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_newsubdir/f1 TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_newsubdir/f2 TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_newsubdir/f3 -# To be uncommented once index xl is made to purge the parent gfid dir -# TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$ROOT_GFID -# TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_newdir -# TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$newsubdir -# TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$dir +TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$ROOT_GFID +TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_newdir +TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_newsubdir +# To be uncommented once index xl is made to purge the parent gfid dir on rm -rf +#TEST ! stat $B0/${V0}1/.glusterfs/indices/entry-changes/$gfid_dir cleanup -- cgit