From ceac3b4172e7c689941ec3e734eca6c537e69368 Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Mon, 27 Jun 2016 15:21:26 +0530 Subject: afr, index: Clean up stale directory and file indices in granular entry sh Specifically when a directory tree is removed (rm -rf) while a brick is down, both the directory index and the name indices of the files and subdirs under it will remain. Self-heal will need to pick up these and remove them. Towards this, afr sh will now also crawl indices/entry-changes and call an rmdir on the dir if the directory index is stale. On the brick side, rmdir fop has been implemented for index xl, which would delete the directory index and its contents if present in a synctask. Change-Id: I8b527331c2547e6c141db6c57c14055ad1198a7e BUG: 1331323 Signed-off-by: Krutika Dhananjay Reviewed-on: http://review.gluster.org/14832 Reviewed-by: Ravishankar N Smoke: Gluster Build System NetBSD-regression: NetBSD Build System Reviewed-by: Pranith Kumar Karampuri CentOS-regression: Gluster Build System --- libglusterfs/src/common-utils.c | 15 +++++++++++++++ libglusterfs/src/common-utils.h | 3 +++ libglusterfs/src/glusterfs.h | 2 ++ 3 files changed, 20 insertions(+) (limited to 'libglusterfs/src') diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 7b19208343f..b9062c159c7 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -4467,6 +4467,21 @@ fop_enum_to_string (glusterfs_fop_t fop) return "UNKNOWNFOP"; } +const char * +gf_inode_type_to_str (ia_type_t type) +{ + static const char *const str_ia_type[] = { + "UNKNOWN", + "REGULAR FILE", + "DIRECTORY", + "LINK", + "BLOCK DEVICE", + "CHARACTER DEVICE", + "PIPE", + "SOCKET"}; + return str_ia_type[type]; +} + gf_boolean_t gf_is_zero_filled_stat (struct iatt *buf) { diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index a83678fe322..8d88935ca09 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -37,6 +37,7 @@ void trap (void); #include "locking.h" #include "mem-pool.h" #include "compat-uuid.h" +#include "iatt.h" #include "uuid.h" #include "libglusterfs-messages.h" @@ -838,4 +839,6 @@ gf_zero_fill_stat (struct iatt *buf); gf_boolean_t is_virtual_xattr (const char *k); +const char * +gf_inode_type_to_str (ia_type_t type); #endif /* _COMMON_UTILS_H */ diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h index 1accb62d9e9..3f7bb5ea2e4 100644 --- a/libglusterfs/src/glusterfs.h +++ b/libglusterfs/src/glusterfs.h @@ -178,6 +178,8 @@ #define GF_XATTROP_DIRTY_COUNT "glusterfs.xattrop_dirty_count" #define GF_XATTROP_ENTRY_IN_KEY "glusterfs.xattrop-entry-create" #define GF_XATTROP_ENTRY_OUT_KEY "glusterfs.xattrop-entry-delete" +#define GF_INDEX_IA_TYPE_GET_REQ "glusterfs.index-ia-type-get-req" +#define GF_INDEX_IA_TYPE_GET_RSP "glusterfs.index-ia-type-get-rsp" #define GF_HEAL_INFO "glusterfs.heal-info" #define GF_AFR_HEAL_SBRAIN "glusterfs.heal-sbrain" -- cgit