From 3ab8e2501acab87420e68adfaae910aa5d97936f Mon Sep 17 00:00:00 2001 From: N Balachandran Date: Mon, 13 Feb 2017 16:49:06 +0530 Subject: [PATCH 335/361] cluster/dht Fix error assignment in dht_*xattr2 functions Corrected the op_errno assignments and NULL checks in the dht_sexattr2 and dht_removexattr2 functions. Earlier, they unwound with the default EINVAL op_errno if the file had been deleted. mainline: > BUG: 1421653 > Reviewed-on: https://review.gluster.org/16610 > Smoke: Gluster Build System > NetBSD-regression: NetBSD Build System > CentOS-regression: Gluster Build System > Reviewed-by: MOHIT AGRAWAL > Reviewed-by: Shyamsundar Ranganathan (cherry picked from commit c54ea9b58c1fad4de85eb1a573058d86355670da) BUG: 1425697 Change-Id: Iaf837a473d769cea40132487a966c7f452990071 Signed-off-by: N Balachandran Reviewed-on: https://code.engineering.redhat.com/gerrit/101316 Tested-by: Milind Changire Reviewed-by: Atin Mukherjee --- xlators/cluster/dht/src/dht-common.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 4907931..e40805a 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -3929,6 +3929,7 @@ dht_setxattr2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) goto err; local = frame->local; + op_errno = local->op_errno; if (we_are_not_migrating (ret)) { /* This dht xlator is not migrating the file. Unwind and @@ -3943,7 +3944,6 @@ dht_setxattr2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) if (subvol == NULL) goto err; - op_errno = local->op_errno; local->call_cnt = 2; /* This is the second attempt */ @@ -4351,10 +4351,11 @@ dht_removexattr2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, dht_local_t *local = NULL; int op_errno = EINVAL; - if (!frame || !frame->local || !subvol) + if (!frame || !frame->local) goto err; local = frame->local; + op_errno = local->op_errno; local->call_cnt = 2; /* This is the second attempt */ @@ -4369,6 +4370,9 @@ dht_removexattr2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, return 0; } + if (subvol == NULL) + goto err; + if (local->fop == GF_FOP_REMOVEXATTR) { STACK_WIND (frame, dht_file_removexattr_cbk, subvol, subvol->fops->removexattr, &local->loc, -- 1.8.3.1