diff options
author | Susant Palai <spalai@redhat.com> | 2020-06-23 12:13:44 +0530 |
---|---|---|
committer | Amar Tumballi <amar@kadalu.io> | 2020-07-09 04:26:51 +0000 |
commit | 1ca15d9a490b57275a37db04fcae8594a1260530 (patch) | |
tree | 5ba1317f431cde5acfff9073df546f8e31df6929 /xlators/cluster/dht/src/dht-common.c | |
parent | aab628597b012a22a1bbd71dade7e9bc2d65ce84 (diff) |
dht: Heal missing dir entry on brick in revalidate path
Mark dir as missing in layout structure to be healed in
dht_selfheal_directory.
fixes: #1327
Change-Id: If2c69294bd8107c26624cfe220f008bc3b952a4e
Signed-off-by: Susant Palai <spalai@redhat.com>
Diffstat (limited to 'xlators/cluster/dht/src/dht-common.c')
-rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index d51faf96ba5..6a649ac4f56 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -1657,7 +1657,7 @@ dht_revalidate_cbk(call_frame_t *frame, void *cookie, xlator_t *this, uint32_t vol_commit_hash = 0; xlator_t *subvol = NULL; int32_t check_mds = 0; - int errst = 0; + int errst = 0, i = 0; int32_t mds_xattr_val[1] = {0}; GF_VALIDATE_OR_GOTO("dht", frame, err); @@ -1724,6 +1724,14 @@ dht_revalidate_cbk(call_frame_t *frame, void *cookie, xlator_t *this, local->need_lookup_everywhere = 1; } else if (IA_ISDIR(local->loc.inode->ia_type)) { + layout = local->layout; + for (i = 0; i < layout->cnt; i++) { + if (layout->list[i].xlator == prev) { + layout->list[i].err = op_errno; + break; + } + } + local->need_selfheal = 1; } } |