diff options
| -rwxr-xr-x | tests/bugs/distribute/issue-1327.t | 33 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 10 | 
2 files changed, 42 insertions, 1 deletions
diff --git a/tests/bugs/distribute/issue-1327.t b/tests/bugs/distribute/issue-1327.t new file mode 100755 index 00000000000..acd8c8c6614 --- /dev/null +++ b/tests/bugs/distribute/issue-1327.t @@ -0,0 +1,33 @@ +#!/bin/bash + +SCRIPT_TIMEOUT=250 + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../dht.rc + +cleanup + +TEST glusterd +TEST pidof glusterd + +BRICK1=$B0/${V0}-0 +BRICK2=$B0/${V0}-1 + +TEST $CLI volume create $V0 $H0:$BRICK1 $H0:$BRICK2 +TEST $CLI volume start $V0 + +TEST glusterfs -s $H0 --volfile-id $V0 $M0 +TEST mkdir $M0/dir + +#remove dir from one of the brick +TEST rmdir $BRICK2/dir + +#safe cache timeout for lookup to be triggered +sleep 2 + +TEST ls $M0/dir + +TEST stat $BRICK2/dir + +cleanup 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;                  }              }  | 
