Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2669940d authored by Andy Adamson's avatar Andy Adamson Committed by Trond Myklebust
Browse files

NFSv4 do not send an empty SETATTR compound



Commit 536e43d1 ATTR_OPEN check can result in
an ia_valid with only ATTR_FILE set, and no NFS_VALID_ATTRS attributes to
request from the server.

Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 64f9a836
Loading
Loading
Loading
Loading
+8 −4
Original line number Original line Diff line number Diff line
@@ -2549,6 +2549,14 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,


	nfs_fattr_init(fattr);
	nfs_fattr_init(fattr);
	
	
	/* Deal with open(O_TRUNC) */
	if (sattr->ia_valid & ATTR_OPEN)
		sattr->ia_valid &= ~(ATTR_MTIME|ATTR_CTIME|ATTR_OPEN);

	/* Optimization: if the end result is no change, don't RPC */
	if ((sattr->ia_valid & ~(ATTR_FILE)) == 0)
		return 0;

	/* Search for an existing open(O_WRITE) file */
	/* Search for an existing open(O_WRITE) file */
	if (sattr->ia_valid & ATTR_FILE) {
	if (sattr->ia_valid & ATTR_FILE) {
		struct nfs_open_context *ctx;
		struct nfs_open_context *ctx;
@@ -2560,10 +2568,6 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
		}
		}
	}
	}


	/* Deal with open(O_TRUNC) */
	if (sattr->ia_valid & ATTR_OPEN)
		sattr->ia_valid &= ~(ATTR_MTIME|ATTR_CTIME|ATTR_OPEN);

	status = nfs4_do_setattr(inode, cred, fattr, sattr, state);
	status = nfs4_do_setattr(inode, cred, fattr, sattr, state);
	if (status == 0)
	if (status == 0)
		nfs_setattr_update_inode(inode, sattr);
		nfs_setattr_update_inode(inode, sattr);