mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 15:27:29 +00:00
remove inode_setattr
Replace inode_setattr with opencoded variants of it in all callers. This moves the remaining call to vmtruncate into the filesystem methods where it can be replaced with the proper truncate sequence. In a few cases it was obvious that we would never end up calling vmtruncate so it was left out in the opencoded variant: spufs: explicitly checks for ATTR_SIZE earlier btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above In addition to that ncpfs called inode_setattr with handcrafted iattrs, which allowed to trim down the opencoded variant. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
eef2380c18
commit
1025774ce4
35 changed files with 416 additions and 194 deletions
|
@ -448,19 +448,20 @@ static int hugetlbfs_setattr(struct dentry *dentry, struct iattr *attr)
|
|||
|
||||
error = inode_change_ok(inode, attr);
|
||||
if (error)
|
||||
goto out;
|
||||
return error;
|
||||
|
||||
if (ia_valid & ATTR_SIZE) {
|
||||
error = -EINVAL;
|
||||
if (!(attr->ia_size & ~huge_page_mask(h)))
|
||||
error = hugetlb_vmtruncate(inode, attr->ia_size);
|
||||
if (attr->ia_size & ~huge_page_mask(h))
|
||||
return -EINVAL;
|
||||
error = hugetlb_vmtruncate(inode, attr->ia_size);
|
||||
if (error)
|
||||
goto out;
|
||||
attr->ia_valid &= ~ATTR_SIZE;
|
||||
return error;
|
||||
}
|
||||
error = inode_setattr(inode, attr);
|
||||
out:
|
||||
return error;
|
||||
|
||||
setattr_copy(inode, attr);
|
||||
mark_inode_dirty(inode);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct inode *hugetlbfs_get_inode(struct super_block *sb, uid_t uid,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue