From 5eab919dee035b9cf1b7f060bcf2d9eaa1e92eb3 Mon Sep 17 00:00:00 2001 From: Ravishankar N Date: Tue, 5 Sep 2017 15:18:58 +0530 Subject: dht: add FOP check to dht_file_setattr_cbk Problem: bug-797171.7 loaded error-gen xlator on the brick which sent EBADF for a non fd-based fop, namely setattr. This caused dht_check_and_open_fd_on_subvol_task() to crash as local->fd was NULL. Fix: Call dht_check_and_open_fd_on_subvol_task() from dht_file_setattr_cbk only for dht_fsetattr and not dht_setattr or dht_setattr2 > Reviewed-on: https://review.gluster.org/18208 > Smoke: Gluster Build System > Reviewed-by: Susant Palai > Reviewed-by: Amar Tumballi > Reviewed-by: Raghavendra G > Reviewed-by: N Balachandran > CentOS-regression: Gluster Build System (cherry picked from commit 47188e9eac59de416a5c86c7ec7540ed6aaa1c98) Signed-off-by: Ravishankar N Change-Id: Iab4999e213bf2065804f3f8237e470ad454e3c99 BUG: 1497122 --- xlators/cluster/dht/src/dht-inode-write.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xlators/cluster/dht/src/dht-inode-write.c b/xlators/cluster/dht/src/dht-inode-write.c index 5392ee4635b..9709acfebb7 100644 --- a/xlators/cluster/dht/src/dht-inode-write.c +++ b/xlators/cluster/dht/src/dht-inode-write.c @@ -1034,8 +1034,8 @@ dht_file_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->op_errno = op_errno; - if ((op_ret == -1) && (op_errno == EBADF) - && !(local->fd_checked)) { + if ((local->fop == GF_FOP_FSETATTR) && + (op_ret == -1) && (op_errno == EBADF) && !(local->fd_checked)) { ret = dht_check_and_open_fd_on_subvol (this, frame); if (ret) goto out; -- cgit