diff options
Diffstat (limited to 'fs/logfs/file.c')
-rw-r--r-- | fs/logfs/file.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/fs/logfs/file.c b/fs/logfs/file.c index abe1cafbd4c2..e86376b87af1 100644 --- a/fs/logfs/file.c +++ b/fs/logfs/file.c | |||
@@ -181,9 +181,9 @@ static int logfs_releasepage(struct page *page, gfp_t only_xfs_uses_this) | |||
181 | } | 181 | } |
182 | 182 | ||
183 | 183 | ||
184 | int logfs_ioctl(struct inode *inode, struct file *file, unsigned int cmd, | 184 | long logfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
185 | unsigned long arg) | ||
186 | { | 185 | { |
186 | struct inode *inode = file->f_path.dentry->d_inode; | ||
187 | struct logfs_inode *li = logfs_inode(inode); | 187 | struct logfs_inode *li = logfs_inode(inode); |
188 | unsigned int oldflags, flags; | 188 | unsigned int oldflags, flags; |
189 | int err; | 189 | int err; |
@@ -232,15 +232,19 @@ static int logfs_setattr(struct dentry *dentry, struct iattr *attr) | |||
232 | struct inode *inode = dentry->d_inode; | 232 | struct inode *inode = dentry->d_inode; |
233 | int err = 0; | 233 | int err = 0; |
234 | 234 | ||
235 | if (attr->ia_valid & ATTR_SIZE) | 235 | err = inode_change_ok(inode, attr); |
236 | if (err) | ||
237 | return err; | ||
238 | |||
239 | if (attr->ia_valid & ATTR_SIZE) { | ||
236 | err = logfs_truncate(inode, attr->ia_size); | 240 | err = logfs_truncate(inode, attr->ia_size); |
237 | attr->ia_valid &= ~ATTR_SIZE; | 241 | if (err) |
242 | return err; | ||
243 | } | ||
238 | 244 | ||
239 | if (!err) | 245 | setattr_copy(inode, attr); |
240 | err = inode_change_ok(inode, attr); | 246 | mark_inode_dirty(inode); |
241 | if (!err) | 247 | return 0; |
242 | err = inode_setattr(inode, attr); | ||
243 | return err; | ||
244 | } | 248 | } |
245 | 249 | ||
246 | const struct inode_operations logfs_reg_iops = { | 250 | const struct inode_operations logfs_reg_iops = { |
@@ -251,7 +255,7 @@ const struct file_operations logfs_reg_fops = { | |||
251 | .aio_read = generic_file_aio_read, | 255 | .aio_read = generic_file_aio_read, |
252 | .aio_write = generic_file_aio_write, | 256 | .aio_write = generic_file_aio_write, |
253 | .fsync = logfs_fsync, | 257 | .fsync = logfs_fsync, |
254 | .ioctl = logfs_ioctl, | 258 | .unlocked_ioctl = logfs_ioctl, |
255 | .llseek = generic_file_llseek, | 259 | .llseek = generic_file_llseek, |
256 | .mmap = generic_file_readonly_mmap, | 260 | .mmap = generic_file_readonly_mmap, |
257 | .open = generic_file_open, | 261 | .open = generic_file_open, |