diff options
author | Ryan Ding <ryan.ding@open-fs.com> | 2016-08-24 00:41:13 +0800 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2016-09-01 08:20:41 -0700 |
commit | ffc7d44095ba23c761a034fb713cae05df135f2b (patch) | |
tree | de5e217af8c90073827195bf2e75bfb2d22469c9 | |
parent | f2ce05561c29c48640b72d0e813dd93b0282bd5e (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.c | 3 | ||||
-rw-r--r-- | xlators/protocol/server/src/server-helpers.c | 2 | ||||
-rw-r--r-- | xlators/protocol/server/src/server-rpc-fops.c | 2 |
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, |