summaryrefslogtreecommitdiffstats
path: root/xlators/storage/posix/src/posix.c
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2016-06-07 21:27:10 +0530
committerPranith Kumar Karampuri <pkarampu@redhat.com>2016-07-29 09:00:34 -0700
commitc579303bfc4704187b1a41f658b8b3dc75b55c56 (patch)
tree4301f6588350a67e337688349b6a8e6cb2c75d96 /xlators/storage/posix/src/posix.c
parente641ac9444d04399761a46ac6b05f28e5231c66e (diff)
storage/posix: Give correct errno for anon-fd operations
>Change-Id: Ia9e61d3baa6881eb7dc03dd8ddb6bfdde5a01958 >BUG: 1343906 >Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> >Reviewed-on: http://review.gluster.org/14669 >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: Raghavendra G <rgowdapp@redhat.com> >(cherry picked from commit d5088c056d5aee1bda2997ad5835379465fed3a1) Change-Id: I8f4c26a2314766579aa03873deb8033c75944c0d BUG: 1360138 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/15008 Smoke: Gluster Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
Diffstat (limited to 'xlators/storage/posix/src/posix.c')
-rw-r--r--xlators/storage/posix/src/posix.c62
1 files changed, 27 insertions, 35 deletions
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
index 8784571470f..a963f8a3b6b 100644
--- a/xlators/storage/posix/src/posix.c
+++ b/xlators/storage/posix/src/posix.c
@@ -572,9 +572,8 @@ posix_fsetattr (call_frame_t *frame, xlator_t *this,
VALIDATE_OR_GOTO (this, out);
VALIDATE_OR_GOTO (fd, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- op_errno = -ret;
gf_msg_debug (this->name, 0, "pfd is NULL from fd=%p", fd);
goto out;
}
@@ -664,6 +663,7 @@ posix_do_fallocate (call_frame_t *frame, xlator_t *this, fd_t *fd,
struct iatt *statpre, struct iatt *statpost, dict_t *xdata)
{
int32_t ret = -1;
+ int32_t op_errno = 0;
struct posix_fd *pfd = NULL;
gf_boolean_t locked = _gf_false;
@@ -675,7 +675,7 @@ posix_do_fallocate (call_frame_t *frame, xlator_t *this, fd_t *fd,
VALIDATE_OR_GOTO (this, out);
VALIDATE_OR_GOTO (fd, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
gf_msg_debug (this->name, 0, "pfd is NULL from fd=%p", fd);
goto out;
@@ -820,6 +820,7 @@ posix_do_zerofill (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,
dict_t *xdata)
{
int32_t ret = -1;
+ int32_t op_errno = 0;
struct posix_fd *pfd = NULL;
gf_boolean_t locked = _gf_false;
@@ -831,7 +832,7 @@ posix_do_zerofill (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,
VALIDATE_OR_GOTO (this, out);
VALIDATE_OR_GOTO (fd, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
gf_msg_debug (this->name, 0, "pfd is NULL from fd=%p", fd);
goto out;
@@ -1011,7 +1012,7 @@ posix_seek (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,
goto out;
}
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &err);
if (ret < 0) {
gf_msg_debug (this->name, 0, "pfd is NULL from fd=%p", fd);
goto out;
@@ -3058,9 +3059,8 @@ posix_readv (call_frame_t *frame, xlator_t *this,
priv = this->private;
VALIDATE_OR_GOTO (priv, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- op_errno = -ret;
gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd is NULL from fd=%p", fd);
goto out;
@@ -3293,7 +3293,7 @@ posix_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,
VALIDATE_OR_GOTO (priv, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
gf_msg (this->name, GF_LOG_WARNING, ret, P_MSG_PFD_NULL,
"pfd is NULL from fd=%p", fd);
@@ -3479,9 +3479,8 @@ posix_flush (call_frame_t *frame, xlator_t *this,
VALIDATE_OR_GOTO (this, out);
VALIDATE_OR_GOTO (fd, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- op_errno = -ret;
gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd is NULL on fd=%p", fd);
goto out;
@@ -3602,9 +3601,8 @@ posix_fsync (call_frame_t *frame, xlator_t *this,
return 0;
}
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- op_errno = -ret;
gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd not found in fd's ctx");
goto out;
@@ -4707,10 +4705,9 @@ posix_fgetxattr (call_frame_t *frame, xlator_t *this,
SET_FS_ID (frame->root->uid, frame->root->gid);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
op_ret = -1;
- op_errno = -ret;
gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd is NULL from fd=%p", fd);
goto out;
@@ -4949,9 +4946,8 @@ posix_fsetxattr (call_frame_t *frame, xlator_t *this,
VALIDATE_OR_GOTO (fd, out);
VALIDATE_OR_GOTO (dict, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- op_errno = -ret;
gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd is NULL from fd=%p", fd);
goto out;
@@ -5180,9 +5176,8 @@ posix_fremovexattr (call_frame_t *frame, xlator_t *this,
goto out;
}
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- op_errno = -ret;
gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd is NULL from fd=%p", fd);
goto out;
@@ -5241,9 +5236,8 @@ posix_fsyncdir (call_frame_t *frame, xlator_t *this,
VALIDATE_OR_GOTO (this, out);
VALIDATE_OR_GOTO (fd, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- op_errno = -ret;
gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd is NULL, fd=%p", fd);
goto out;
@@ -5613,12 +5607,12 @@ do_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd,
VALIDATE_OR_GOTO (this, out);
if (fd) {
- op_ret = posix_fd_ctx_get (fd, this, &pfd);
+ op_ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (op_ret < 0) {
- gf_msg (this->name, GF_LOG_WARNING, EBADFD,
+ gf_msg (this->name, GF_LOG_WARNING,
+ fop_log_level(GF_FOP_FXATTROP, op_errno),
P_MSG_PFD_GET_FAILED, "failed to get pfd from"
" fd=%p", fd);
- op_errno = EBADFD;
goto out;
}
_fd = pfd->fd;
@@ -5748,11 +5742,10 @@ posix_ftruncate (call_frame_t *frame, xlator_t *this,
priv = this->private;
VALIDATE_OR_GOTO (priv, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- gf_msg (this->name, GF_LOG_WARNING, -ret, P_MSG_PFD_NULL,
+ gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd is NULL, fd=%p", fd);
- op_errno = -ret;
goto out;
}
@@ -5818,9 +5811,9 @@ posix_fstat (call_frame_t *frame, xlator_t *this,
priv = this->private;
VALIDATE_OR_GOTO (priv, out);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- gf_msg (this->name, GF_LOG_WARNING, -ret, P_MSG_PFD_NULL,
+ gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd is NULL, fd=%p", fd);
op_errno = -ret;
goto out;
@@ -5958,13 +5951,14 @@ posix_fill_readdir (fd_t *fd, DIR *dir, off_t off, size_t size,
char *hpath = NULL;
int len = 0;
int ret = 0;
+ int op_errno = 0;
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
- gf_msg (this->name, GF_LOG_WARNING, -ret, P_MSG_PFD_NULL,
+ gf_msg (this->name, GF_LOG_WARNING, op_errno, P_MSG_PFD_NULL,
"pfd is NULL, fd=%p", fd);
count = -1;
- errno = -ret;
+ errno = op_errno;
goto out;
}
@@ -6248,11 +6242,10 @@ posix_do_readdir (call_frame_t *frame, xlator_t *this,
INIT_LIST_HEAD (&entries.list);
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
gf_msg (this->name, GF_LOG_WARNING, -ret, P_MSG_PFD_NULL,
"pfd is NULL, fd=%p", fd);
- op_errno = -ret;
goto out;
}
@@ -6421,11 +6414,10 @@ posix_rchecksum (call_frame_t *frame, xlator_t *this,
goto out;
}
- ret = posix_fd_ctx_get (fd, this, &pfd);
+ ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
if (ret < 0) {
gf_msg (this->name, GF_LOG_WARNING, -ret, P_MSG_PFD_NULL,
"pfd is NULL, fd=%p", fd);
- op_errno = -ret;
goto out;
}