diff options
-rw-r--r-- | xlators/nfs/server/src/nfs3.c | 9 | ||||
-rw-r--r-- | xlators/nfs/server/src/nfs3.h | 1 |
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; |