fs: convert simple fs to new truncate Convert simple filesystems: ramfs, configfs, sysfs, block_dev to new truncate sequence. Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Nick Piggin <npiggin@suse.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/fs/block_dev.c b/fs/block_dev.c index d0b37e6..7346c96 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c
@@ -172,8 +172,9 @@ struct file *file = iocb->ki_filp; struct inode *inode = file->f_mapping->host; - return blockdev_direct_IO_no_locking(rw, iocb, inode, I_BDEV(inode), - iov, offset, nr_segs, blkdev_get_blocks, NULL); + return blockdev_direct_IO_no_locking_newtrunc(rw, iocb, inode, + I_BDEV(inode), iov, offset, nr_segs, + blkdev_get_blocks, NULL); } int __sync_blockdev(struct block_device *bdev, int wait) @@ -309,8 +310,8 @@ struct page **pagep, void **fsdata) { *pagep = NULL; - return block_write_begin(file, mapping, pos, len, flags, pagep, fsdata, - blkdev_get_block); + return block_write_begin_newtrunc(file, mapping, pos, len, flags, + pagep, fsdata, blkdev_get_block); } static int blkdev_write_end(struct file *file, struct address_space *mapping,
diff --git a/fs/configfs/inode.c b/fs/configfs/inode.c index c8af2d9..4164514 100644 --- a/fs/configfs/inode.c +++ b/fs/configfs/inode.c
@@ -72,16 +72,11 @@ if (!sd) return -EINVAL; + error = simple_setattr(dentry, iattr); + if (error) + return error; + sd_iattr = sd->s_iattr; - - error = inode_change_ok(inode, iattr); - if (error) - return error; - - error = inode_setattr(inode, iattr); - if (error) - return error; - if (!sd_iattr) { /* setting attributes for the first time, allocate now */ sd_iattr = kzalloc(sizeof(struct iattr), GFP_KERNEL);
diff --git a/fs/ramfs/file-mmu.c b/fs/ramfs/file-mmu.c index 5002050..4884ac5 100644 --- a/fs/ramfs/file-mmu.c +++ b/fs/ramfs/file-mmu.c
@@ -50,5 +50,6 @@ }; const struct inode_operations ramfs_file_inode_operations = { + .setattr = simple_setattr, .getattr = simple_getattr, };
diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c index 869f2d8..d532c20f 100644 --- a/fs/ramfs/file-nommu.c +++ b/fs/ramfs/file-nommu.c
@@ -146,7 +146,7 @@ return ret; } - ret = vmtruncate(inode, newsize); + ret = simple_setsize(inode, newsize); return ret; } @@ -169,7 +169,8 @@ /* pick out size-changing events */ if (ia->ia_valid & ATTR_SIZE) { - loff_t size = i_size_read(inode); + loff_t size = inode->i_size; + if (ia->ia_size != size) { ret = ramfs_nommu_resize(inode, ia->ia_size, size); if (ret < 0 || ia->ia_valid == ATTR_SIZE) @@ -182,7 +183,7 @@ } } - ret = inode_setattr(inode, ia); + generic_setattr(inode, ia); out: ia->ia_valid = old_ia_valid; return ret;
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c index bbd77e95..bde1a4c 100644 --- a/fs/sysfs/inode.c +++ b/fs/sysfs/inode.c
@@ -117,13 +117,11 @@ if (error) goto out; - iattr->ia_valid &= ~ATTR_SIZE; /* ignore size changes */ - - error = inode_setattr(inode, iattr); - if (error) - goto out; + /* this ignores size changes */ + generic_setattr(inode, iattr); error = sysfs_sd_setattr(sd, iattr); + out: mutex_unlock(&sysfs_mutex); return error;