summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/cluster/unify/src/unify.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/xlators/cluster/unify/src/unify.c b/xlators/cluster/unify/src/unify.c
index 5122a006173..6c3dc0bd242 100644
--- a/xlators/cluster/unify/src/unify.c
+++ b/xlators/cluster/unify/src/unify.c
@@ -522,6 +522,13 @@ unify_lookup_cbk (call_frame_t *frame,
zr_unify_self_heal (frame, this, local);
local_dict = NULL;
} else {
+ if (local->failed) {
+ /* NOTE: directory lookup is sent to all
+ * subvolumes and success from a subvolume
+ * might set local->op_ret to 0 (zero) */
+ local->op_ret = -1;
+ }
+
/* either no self heal, or op_ret == -1 (failure) */
tmp_inode = local->loc1.inode;
unify_local_wipe (local);