diff options
author | Basavanagowda Kanur <gowda@gluster.com> | 2009-03-12 20:29:56 +0530 |
---|---|---|
committer | Anand V. Avati <avati@amp.gluster.com> | 2009-03-13 11:01:30 +0530 |
commit | 215a91c4729bff06899375c02ae1568f24d683a9 (patch) | |
tree | 8b2d82d22df7c60f6227e24468d65493870e7ef7 /xlators | |
parent | 7af8d8edbd8554235348e0f54348edf222c0b46e (diff) |
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 <avati@amp.gluster.com>
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/cluster/unify/src/unify.c | 7 |
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); |