Skip to content

Commit

Permalink
cluster/afr: Handle absence of gfid in lookup
Browse files Browse the repository at this point in the history
Change-Id: I57fe8db82425a064ca01b23a47baca297c67560c
BUG: 3783
Reviewed-on: http://review.gluster.com/676
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
  • Loading branch information
Pranith Kumar K authored and vbellur committed Nov 5, 2011
1 parent 8668da9 commit 51601b2
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions xlators/cluster/afr/src/afr-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,8 @@ afr_lookup_save_gfid (uuid_t dst, void* new, const loc_t *loc)
} else if (!uuid_is_null (loc->gfid)) {
uuid_copy (dst, loc->gfid);
} else {
GF_ASSERT (new && !uuid_is_null (new));
uuid_copy (dst, new);
if (new && !uuid_is_null (new))
uuid_copy (dst, new);
}
}

Expand Down Expand Up @@ -1385,6 +1385,7 @@ afr_lookup_done (call_frame_t *frame, xlator_t *this)
afr_local_t *local = NULL;
int ret = -1;
gf_boolean_t sh_launched = _gf_false;
gf_boolean_t fail_conflict = _gf_false;
int gfid_miss_count = 0;
int enotconn_count = 0;
int up_children_count = 0;
Expand All @@ -1408,7 +1409,18 @@ afr_lookup_done (call_frame_t *frame, xlator_t *this)
goto unwind;
}

ret = afr_lookup_done_success_action (frame, this, _gf_false);
if ((gfid_miss_count == local->success_count) &&
uuid_is_null (local->cont.lookup.gfid_req)) {
local->op_ret = -1;
local->op_errno = ENODATA;
gf_log (this->name, GF_LOG_ERROR, "%s: No gfid present",
local->loc.path);
goto unwind;
}

if (gfid_miss_count && uuid_is_null (local->cont.lookup.gfid_req))
fail_conflict = _gf_true;
ret = afr_lookup_done_success_action (frame, this, fail_conflict);
if (ret)
goto unwind;
uuid_copy (local->self_heal.sh_gfid_req, local->cont.lookup.gfid_req);
Expand Down

0 comments on commit 51601b2

Please sign in to comment.