diff options
author | N Balachandran <nbalacha@redhat.com> | 2017-02-13 16:49:06 +0530 |
---|---|---|
committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2017-02-15 20:53:48 -0500 |
commit | 028626a86ea409f908783b9007c02877f20be43e (patch) | |
tree | 12f4a2dbd5c43b6f5abd472e23f45bbc974a454e /xlators/cluster/dht | |
parent | 1820a100b75f6a04c5243653b226e9bd4e0a7ed6 (diff) |
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.
Change-Id: Iaf837a473d769cea40132487a966c7f452990071
BUG: 1421653
Signed-off-by: N Balachandran <nbalacha@redhat.com>
Reviewed-on: https://review.gluster.org/16610
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: MOHIT AGRAWAL <moagrawa@redhat.com>
Reviewed-by: Shyamsundar Ranganathan <srangana@redhat.com>
Diffstat (limited to 'xlators/cluster/dht')
-rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index e8fde70b61a..447279ecd34 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -3934,6 +3934,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 @@ -3948,7 +3949,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 */ @@ -4356,10 +4356,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 */ @@ -4374,6 +4375,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_COOKIE (frame, dht_file_removexattr_cbk, subvol, subvol, subvol->fops->removexattr, |