cluster/afr: set_read_child when xactions in progress in fresh lookup
Change-Id: I33e0268635ae7a1f247b0052994e027f990083da BUG: 800755 Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Reviewed-on: http://review.gluster.com/2963 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
This commit is contained in:
parent
7cc412c7a2
commit
f159e2247b
@ -1673,9 +1673,11 @@ afr_lookup_done_success_action (call_frame_t *frame, xlator_t *this,
|
||||
int32_t ret = -1;
|
||||
afr_local_t *local = NULL;
|
||||
afr_private_t *priv = NULL;
|
||||
gf_boolean_t fresh_lookup = _gf_false;
|
||||
|
||||
local = frame->local;
|
||||
priv = this->private;
|
||||
fresh_lookup = local->cont.lookup.fresh_lookup;
|
||||
|
||||
if (local->loc.parent == NULL)
|
||||
fail_conflict = _gf_true;
|
||||
@ -1689,9 +1691,9 @@ afr_lookup_done_success_action (call_frame_t *frame, xlator_t *this,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!afr_is_transaction_running (local)) {
|
||||
ret = afr_lookup_select_read_child (local, this, &read_child);
|
||||
if (ret)
|
||||
ret = afr_lookup_select_read_child (local, this, &read_child);
|
||||
if (!afr_is_transaction_running (local) || fresh_lookup) {
|
||||
if (read_child < 0)
|
||||
goto out;
|
||||
|
||||
ret = afr_lookup_set_read_ctx (local, this, read_child);
|
||||
@ -2027,6 +2029,7 @@ afr_lookup (call_frame_t *frame, xlator_t *this,
|
||||
% (priv->child_count);
|
||||
}
|
||||
UNLOCK (&priv->read_child_lock);
|
||||
local->cont.lookup.fresh_lookup = _gf_true;
|
||||
}
|
||||
|
||||
local->child_up = memdup (priv->child_up,
|
||||
|
@ -444,6 +444,7 @@ typedef struct _afr_local {
|
||||
int32_t read_child;
|
||||
int32_t *sources;
|
||||
int32_t *success_children;
|
||||
gf_boolean_t fresh_lookup;
|
||||
} lookup;
|
||||
|
||||
struct {
|
||||
|
Loading…
x
Reference in New Issue
Block a user