NFS: Check size by inode_newsize_ok in nfs_setattr
Subsystems (2)
PATCH 3/5 NFS: Check size by inode_newsize_ok in nfs_setattr
Set rlimit for NFS's files is useless right now.
For local process's rlimit, it should be checked by nfs client.
The same, CIFS also call inode_change_ok checking rlimit at its client in cifs_setattr_nounix() and cifs_setattr_unix().
Signed-off-by Kinglong Mee <[email protected]>
--- fs/nfs/inode.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)
fs/nfs/inode.c +5 -6
@@ -512,15 +512,14 @@ nfs_setattr(struct dentry *dentry, struct iattr *attr) attr->ia_valid &= ~ATTR_MODE ;if (attr->ia_valid &ATTR_SIZE ) { -loff_t i_size; -BUG_ON (!S_ISREG (inode->i_mode)); - i_size =i_size_read (inode); -if (attr->ia_size == i_size) + error =inode_newsize_ok (inode, attr->ia_size); +if (error) +return error; + +if (attr->ia_size ==i_size_read (inode)) attr->ia_valid &= ~ATTR_SIZE ; -else if (attr->ia_size < i_size &&IS_SWAPFILE (inode)) -return -ETXTBSY ; }/* Optimization: if the end result is no change, don't RPC */
Signature · 1 line
2.4.3