diff options
Diffstat (limited to 'xlators/cluster/dht/src/dht-common.c')
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 7504a46d871..232f757e74a 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -3785,6 +3785,14 @@ dht_file_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          local->op_errno = op_errno; +        if ((local->fop == GF_FOP_FSETXATTR) && +            op_ret == -1 && (op_errno == EBADF) && !(local->fd_checked)) { +                ret = dht_check_and_open_fd_on_subvol (this, frame); +                if (ret) +                        goto out; +                return 0; +        } +          if ((op_ret == -1) && !dht_inode_missing (op_errno)) {                  gf_msg_debug (this->name, op_errno,                                "subvolume %s returned -1.", @@ -4360,6 +4368,14 @@ dht_file_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          local->op_errno = op_errno; +        if ((local->fop == GF_FOP_FREMOVEXATTR) && +            (op_ret == -1) && (op_errno == EBADF) && !(local->fd_checked)) { +                ret = dht_check_and_open_fd_on_subvol (this, frame); +                if (ret) +                        goto out; +                return 0; +        } +          if ((op_ret == -1) && !dht_inode_missing (op_errno)) {                  gf_msg_debug (this->name, op_errno,                                "subvolume %s returned -1",  | 
