Patch "nfsd: minor nfsd_setattr cleanup" has been added to the 4.10-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
nfsd: minor nfsd_setattr cleanup
to the 4.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
nfsd-minor-nfsd_setattr-cleanup.patch
and it can be found in the queue-4.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
758e99fefe1d9230111296956335cd35995c0eafMon Sep 17 00:00:00 2001
From: Christoph Hellwig <[email protected]>
Date: Mon, 20 Feb 2017 17:04:42 -0500
Subject: nfsd: minor nfsd_setattr cleanup
From: Christoph Hellwig <[email protected]>
commit 758e99fefe1d9230111296956335cd35995c0eaf upstream.
Simplify exit paths, size_change use.
--- fs/nfsd/vfs.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-)
fs/nfsd/vfs.c +12 -17
@@ -377,7 +377,7 @@ nfsd_setattr(struct svc_rqst *rqstp, str__be32 err;int host_err;bool get_write_count; -int size_change =0 ; +bool size_change = (iap->ia_valid &ATTR_SIZE );if (iap->ia_valid & (ATTR_ATIME |ATTR_MTIME |ATTR_SIZE )) accmode |=NFSD_MAY_WRITE |NFSD_MAY_OWNER_OVERRIDE ;
@@ -390,11 +390,11 @@ nfsd_setattr(struct svc_rqst *rqstp, str/* Get inode */ err =fh_verify (rqstp, fhp, ftype, accmode);if (err) - goto out; +return err;if (get_write_count) { host_err =fh_want_write (fhp);if (host_err) -return nfserrno (host_err); + goto out; } dentry = fhp->fh_dentry;
@@ -405,19 +405,21 @@ nfsd_setattr(struct svc_rqst *rqstp, str iap->ia_valid &= ~ATTR_MODE ;if (!iap->ia_valid) - goto out; +return 0 ;nfsd_sanitize_attrs (inode, iap); +if (check_guard && guardtime != inode->i_ctime.tv_sec) +return nfserr_notsync; +/* * The size case is special, it changes the file in addition to the * attributes. */ -if (iap->ia_valid &ATTR_SIZE ) { +if (size_change) { err =nfsd_get_write_access (rqstp, fhp, iap);if (err) - goto out; - size_change =1 ; +return err;/* * RFC5661, Section 18.30.4:
@@ -432,23 +434,16 @@ nfsd_setattr(struct svc_rqst *rqstp, str iap->ia_valid |=ATTR_CTIME ; -if (check_guard && guardtime != inode->i_ctime.tv_sec) { - err = nfserr_notsync; - goto out_put_write_access; - } -fh_lock (fhp); host_err =notify_change (dentry, iap,NULL );fh_unlock (fhp); - err =nfserrno (host_err); -out_put_write_access:if (size_change)put_write_access (inode); -if (!err) - err =nfserrno (commit_metadata (fhp)); out: -return err; +if (!host_err) + host_err =commit_metadata (fhp); +return nfserrno (host_err); }#if defined(CONFIG_NFSD_V4 )
Patches currently in stable-queue which might be from [email protected] are
queue-4.10/nfsd-minor-nfsd_setattr-cleanup.patch queue-4.10/scsi-lpfc-correct-wq-creation-for-pagesize.patch queue-4.10/scsi-use-scsi_device_from_queue-for-scsi_dh.patch queue-4.10/nfsd-special-case-truncates-some-more.patch