summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyan Ding <ryan.ding@open-fs.com>2016-08-24 00:41:13 +0800
committerPranith Kumar Karampuri <pkarampu@redhat.com>2016-09-01 08:20:41 -0700
commitffc7d44095ba23c761a034fb713cae05df135f2b (patch)
treede5e217af8c90073827195bf2e75bfb2d22469c9
parentf2ce05561c29c48640b72d0e813dd93b0282bd5e (diff)
protocol/server: readlink rsp xdr will fail while readlink got an error
set gfs3_readlink_rsp.path with an empty string while error happen, to make xdr_gfs3_readlink_rsp happy. otherwise the original errno will be lost, and return an rpc internal errno instead. Change-Id: I36655b66df8b9f164e5bd21eb17244722c2f5a52 BUG: 1370172 Signed-off-by: Ryan Ding <ryan.ding@open-fs.com> Reviewed-on: http://review.gluster.org/15312 Smoke: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com> Tested-by: Pranith Kumar Karampuri <pkarampu@redhat.com> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
-rw-r--r--xlators/protocol/server/src/server-common.c3
-rw-r--r--xlators/protocol/server/src/server-helpers.c2
-rw-r--r--xlators/protocol/server/src/server-rpc-fops.c2
3 files changed, 4 insertions, 3 deletions
diff --git a/xlators/protocol/server/src/server-common.c b/xlators/protocol/server/src/server-common.c
index fd6749a4df7..9a023aaa49e 100644
--- a/xlators/protocol/server/src/server-common.c
+++ b/xlators/protocol/server/src/server-common.c
@@ -21,9 +21,6 @@ server_post_readlink (gfs3_readlink_rsp *rsp, struct iatt *stbuf,
{
gf_stat_from_iatt (&rsp->buf, stbuf);
rsp->path = (char *)buf;
-
- if (!rsp->path)
- rsp->path = "";
}
void
diff --git a/xlators/protocol/server/src/server-helpers.c b/xlators/protocol/server/src/server-helpers.c
index 39fbcbc6763..474db926629 100644
--- a/xlators/protocol/server/src/server-helpers.c
+++ b/xlators/protocol/server/src/server-helpers.c
@@ -2321,6 +2321,8 @@ server_populate_compound_response (xlator_t *this, gfs3_compound_rsp *rsp,
rsp_args->op_ret = this_args_cbk->op_ret;
rsp_args->op_errno = gf_errno_to_error
(this_args_cbk->op_errno);
+ if (!rsp_args->path)
+ rsp_args->path = "";
break;
}
case GF_FOP_MKNOD:
diff --git a/xlators/protocol/server/src/server-rpc-fops.c b/xlators/protocol/server/src/server-rpc-fops.c
index 91644ce0103..fa160a52d79 100644
--- a/xlators/protocol/server/src/server-rpc-fops.c
+++ b/xlators/protocol/server/src/server-rpc-fops.c
@@ -1569,6 +1569,8 @@ server_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
out:
rsp.op_ret = op_ret;
rsp.op_errno = gf_errno_to_error (op_errno);
+ if (!rsp.path)
+ rsp.path = "";
req = frame->local;
server_submit_reply (frame, req, &rsp, NULL, 0, NULL,