summaryrefslogtreecommitdiffstats
path: root/xlators/nfs
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/nfs')
-rw-r--r--xlators/nfs/server/src/nfs3.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/xlators/nfs/server/src/nfs3.c b/xlators/nfs/server/src/nfs3.c
index a81676d1775..fe265ed73f8 100644
--- a/xlators/nfs/server/src/nfs3.c
+++ b/xlators/nfs/server/src/nfs3.c
@@ -2096,6 +2096,7 @@ nfs3svc_write_vec (rpcsvc_request_t *req, struct iobuf *iob)
write3args *args = NULL;
int ret = RPCSVC_ACTOR_ERROR;
struct iovec payload = {0, };
+ struct nfs3_fh fh = {{0}, };
if ((!req) || (!iob))
return ret;
@@ -2103,8 +2104,9 @@ nfs3svc_write_vec (rpcsvc_request_t *req, struct iobuf *iob)
args = nfs_rpcsvc_request_private (req);
iobuf_to_iovec (iob, &payload);
iobuf_ref (iob);
- ret = nfs3_write (req, (struct nfs3_fh *)args->file.data.data_val,
- args->offset, args->count, args->stable, payload,iob);
+ memcpy (&fh, args->file.data.data_val, args->file.data.data_len);
+ ret = nfs3_write (req, &fh, args->offset, args->count, args->stable,
+ payload,iob);
xdr_free_write3args_nocopy (args);
GF_FREE (args);
if (ret < 0) {