diff options
| -rw-r--r-- | fs/block_dev.c | 9 | ||||
| -rw-r--r-- | fs/configfs/inode.c | 9 | ||||
| -rw-r--r-- | fs/ramfs/file-mmu.c | 1 | ||||
| -rw-r--r-- | fs/ramfs/file-nommu.c | 7 | ||||
| -rw-r--r-- | fs/sysfs/inode.c | 8 |
5 files changed, 15 insertions, 19 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index d0b37e626a1a..7346c96308a5 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
| @@ -172,8 +172,9 @@ blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, | |||
| 172 | struct file *file = iocb->ki_filp; | 172 | struct file *file = iocb->ki_filp; |
| 173 | struct inode *inode = file->f_mapping->host; | 173 | struct inode *inode = file->f_mapping->host; |
| 174 | 174 | ||
| 175 | return blockdev_direct_IO_no_locking(rw, iocb, inode, I_BDEV(inode), | 175 | return blockdev_direct_IO_no_locking_newtrunc(rw, iocb, inode, |
| 176 | iov, offset, nr_segs, blkdev_get_blocks, NULL); | 176 | I_BDEV(inode), iov, offset, nr_segs, |
| 177 | blkdev_get_blocks, NULL); | ||
| 177 | } | 178 | } |
| 178 | 179 | ||
| 179 | int __sync_blockdev(struct block_device *bdev, int wait) | 180 | int __sync_blockdev(struct block_device *bdev, int wait) |
| @@ -309,8 +310,8 @@ static int blkdev_write_begin(struct file *file, struct address_space *mapping, | |||
| 309 | struct page **pagep, void **fsdata) | 310 | struct page **pagep, void **fsdata) |
| 310 | { | 311 | { |
| 311 | *pagep = NULL; | 312 | *pagep = NULL; |
| 312 | return block_write_begin(file, mapping, pos, len, flags, pagep, fsdata, | 313 | return block_write_begin_newtrunc(file, mapping, pos, len, flags, |
| 313 | blkdev_get_block); | 314 | pagep, fsdata, blkdev_get_block); |
| 314 | } | 315 | } |
| 315 | 316 | ||
| 316 | static int blkdev_write_end(struct file *file, struct address_space *mapping, | 317 | 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 c8af2d91174b..41645142b88b 100644 --- a/fs/configfs/inode.c +++ b/fs/configfs/inode.c | |||
| @@ -72,16 +72,11 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr) | |||
| 72 | if (!sd) | 72 | if (!sd) |
| 73 | return -EINVAL; | 73 | return -EINVAL; |
| 74 | 74 | ||
| 75 | sd_iattr = sd->s_iattr; | 75 | error = simple_setattr(dentry, iattr); |
| 76 | |||
| 77 | error = inode_change_ok(inode, iattr); | ||
| 78 | if (error) | ||
| 79 | return error; | ||
| 80 | |||
| 81 | error = inode_setattr(inode, iattr); | ||
| 82 | if (error) | 76 | if (error) |
| 83 | return error; | 77 | return error; |
| 84 | 78 | ||
| 79 | sd_iattr = sd->s_iattr; | ||
| 85 | if (!sd_iattr) { | 80 | if (!sd_iattr) { |
| 86 | /* setting attributes for the first time, allocate now */ | 81 | /* setting attributes for the first time, allocate now */ |
| 87 | sd_iattr = kzalloc(sizeof(struct iattr), GFP_KERNEL); | 82 | sd_iattr = kzalloc(sizeof(struct iattr), GFP_KERNEL); |
diff --git a/fs/ramfs/file-mmu.c b/fs/ramfs/file-mmu.c index 50020501c5eb..4884ac5ae9be 100644 --- a/fs/ramfs/file-mmu.c +++ b/fs/ramfs/file-mmu.c | |||
| @@ -50,5 +50,6 @@ const struct file_operations ramfs_file_operations = { | |||
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | const struct inode_operations ramfs_file_inode_operations = { | 52 | const struct inode_operations ramfs_file_inode_operations = { |
| 53 | .setattr = simple_setattr, | ||
| 53 | .getattr = simple_getattr, | 54 | .getattr = simple_getattr, |
| 54 | }; | 55 | }; |
diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c index 869f2d80183d..d532c20fc179 100644 --- a/fs/ramfs/file-nommu.c +++ b/fs/ramfs/file-nommu.c | |||
| @@ -146,7 +146,7 @@ static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size) | |||
| 146 | return ret; | 146 | return ret; |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | ret = vmtruncate(inode, newsize); | 149 | ret = simple_setsize(inode, newsize); |
| 150 | 150 | ||
| 151 | return ret; | 151 | return ret; |
| 152 | } | 152 | } |
| @@ -169,7 +169,8 @@ static int ramfs_nommu_setattr(struct dentry *dentry, struct iattr *ia) | |||
| 169 | 169 | ||
| 170 | /* pick out size-changing events */ | 170 | /* pick out size-changing events */ |
| 171 | if (ia->ia_valid & ATTR_SIZE) { | 171 | if (ia->ia_valid & ATTR_SIZE) { |
| 172 | loff_t size = i_size_read(inode); | 172 | loff_t size = inode->i_size; |
| 173 | |||
| 173 | if (ia->ia_size != size) { | 174 | if (ia->ia_size != size) { |
| 174 | ret = ramfs_nommu_resize(inode, ia->ia_size, size); | 175 | ret = ramfs_nommu_resize(inode, ia->ia_size, size); |
| 175 | if (ret < 0 || ia->ia_valid == ATTR_SIZE) | 176 | if (ret < 0 || ia->ia_valid == ATTR_SIZE) |
| @@ -182,7 +183,7 @@ static int ramfs_nommu_setattr(struct dentry *dentry, struct iattr *ia) | |||
| 182 | } | 183 | } |
| 183 | } | 184 | } |
| 184 | 185 | ||
| 185 | ret = inode_setattr(inode, ia); | 186 | generic_setattr(inode, ia); |
| 186 | out: | 187 | out: |
| 187 | ia->ia_valid = old_ia_valid; | 188 | ia->ia_valid = old_ia_valid; |
| 188 | return ret; | 189 | return ret; |
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c index bbd77e95cf7f..bde1a4c3679a 100644 --- a/fs/sysfs/inode.c +++ b/fs/sysfs/inode.c | |||
| @@ -117,13 +117,11 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr) | |||
| 117 | if (error) | 117 | if (error) |
| 118 | goto out; | 118 | goto out; |
| 119 | 119 | ||
| 120 | iattr->ia_valid &= ~ATTR_SIZE; /* ignore size changes */ | 120 | /* this ignores size changes */ |
| 121 | 121 | generic_setattr(inode, iattr); | |
| 122 | error = inode_setattr(inode, iattr); | ||
| 123 | if (error) | ||
| 124 | goto out; | ||
| 125 | 122 | ||
| 126 | error = sysfs_sd_setattr(sd, iattr); | 123 | error = sysfs_sd_setattr(sd, iattr); |
| 124 | |||
| 127 | out: | 125 | out: |
| 128 | mutex_unlock(&sysfs_mutex); | 126 | mutex_unlock(&sysfs_mutex); |
| 129 | return error; | 127 | return error; |
