summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/nfs/server/src/nfs3.c9
-rw-r--r--xlators/nfs/server/src/nfs3.h1
2 files changed, 6 insertions, 4 deletions
diff --git a/xlators/nfs/server/src/nfs3.c b/xlators/nfs/server/src/nfs3.c
index 67b619ece13..64287c5b1bd 100644
--- a/xlators/nfs/server/src/nfs3.c
+++ b/xlators/nfs/server/src/nfs3.c
@@ -1019,10 +1019,11 @@ nfs3svc_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
*/
if ((gf_attr_size_set (cs->setattr_valid)) &&
(!IA_ISDIR (postop->ia_type)) &&
- (preop->ia_size != cs->stbuf.ia_size)) {
+ (preop->ia_size != cs->attr_in.ia_size)) {
nfs_request_user_init (&nfu, cs->req);
ret = nfs_truncate (cs->nfsx, cs->vol, &nfu, &cs->resolvedloc,
- cs->stbuf.ia_size, nfs3svc_truncate_cbk,cs);
+ cs->attr_in.ia_size, nfs3svc_truncate_cbk,
+ cs);
if (ret < 0)
stat = nfs3_errno_to_nfsstat3 (-ret);
@@ -1105,7 +1106,7 @@ nfs3_setattr_resume (void *carg)
nfs3_check_fh_resolve_status (cs, stat, nfs3err);
nfs_request_user_init (&nfu, cs->req);
ret = nfs_setattr (cs->nfsx, cs->vol, &nfu, &cs->resolvedloc,
- &cs->stbuf, cs->setattr_valid,
+ &cs->attr_in, cs->setattr_valid,
nfs3svc_setattr_cbk, cs);
if (ret < 0)
@@ -1147,7 +1148,7 @@ nfs3_setattr (rpcsvc_request_t *req, struct nfs3_fh *fh, sattr3 *sattr,
nfs3_check_rw_volaccess (nfs3, fh->exportid, stat, nfs3err);
nfs3_handle_call_state_init (nfs3, cs, req, vol, stat, nfs3err);
- cs->setattr_valid = nfs3_sattr3_to_setattr_valid (sattr, &cs->stbuf,
+ cs->setattr_valid = nfs3_sattr3_to_setattr_valid (sattr, &cs->attr_in,
NULL);
if (guard->check) {
gf_msg_trace (GF_NFS3, 0, "Guard check required");
diff --git a/xlators/nfs/server/src/nfs3.h b/xlators/nfs/server/src/nfs3.h
index b55cb848638..4cb3e67528d 100644
--- a/xlators/nfs/server/src/nfs3.h
+++ b/xlators/nfs/server/src/nfs3.h
@@ -225,6 +225,7 @@ struct nfs3_local {
cookie3 cookie;
struct iovec datavec;
mode_t mode;
+ struct iatt attr_in;
/* NFSv3 FH resolver state */
int hardresolved;