From 215a91c4729bff06899375c02ae1568f24d683a9 Mon Sep 17 00:00:00 2001 From: Basavanagowda Kanur Date: Thu, 12 Mar 2009 20:29:56 +0530 Subject: unify revalidate should propogate the error from any of the subvolume upto the parent, so that parent sends a fresh lookup. unify revalidate fails if one of the subvolume returns error. Signed-off-by: Anand V. Avati --- xlators/cluster/unify/src/unify.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'xlators/cluster/unify/src/unify.c') diff --git a/xlators/cluster/unify/src/unify.c b/xlators/cluster/unify/src/unify.c index 5122a006..6c3dc0bd 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); -- cgit