Commit 7fc7cd00f616e38973fe3acd0dc7e473da94c52e

Authored by Marco Stornelli
Committed by Al Viro
1 parent 5dfc2821e8

minix: drop vmtruncate

Removed vmtruncate

Signed-off-by: Marco Stornelli <marco.stornelli@gmail.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Showing 2 changed files with 16 additions and 7 deletions Side-by-side Diff

... ... @@ -34,9 +34,12 @@
34 34  
35 35 if ((attr->ia_valid & ATTR_SIZE) &&
36 36 attr->ia_size != i_size_read(inode)) {
37   - error = vmtruncate(inode, attr->ia_size);
  37 + error = inode_newsize_ok(inode, attr->ia_size);
38 38 if (error)
39 39 return error;
  40 +
  41 + truncate_setsize(inode, attr->ia_size);
  42 + minix_truncate(inode);
40 43 }
41 44  
42 45 setattr_copy(inode, attr);
... ... @@ -45,7 +48,6 @@
45 48 }
46 49  
47 50 const struct inode_operations minix_file_inode_operations = {
48   - .truncate = minix_truncate,
49 51 .setattr = minix_setattr,
50 52 .getattr = minix_getattr,
51 53 };
... ... @@ -395,6 +395,16 @@
395 395 return __block_write_begin(page, pos, len, minix_get_block);
396 396 }
397 397  
  398 +static void minix_write_failed(struct address_space *mapping, loff_t to)
  399 +{
  400 + struct inode *inode = mapping->host;
  401 +
  402 + if (to > inode->i_size) {
  403 + truncate_pagecache(inode, to, inode->i_size);
  404 + minix_truncate(inode);
  405 + }
  406 +}
  407 +
398 408 static int minix_write_begin(struct file *file, struct address_space *mapping,
399 409 loff_t pos, unsigned len, unsigned flags,
400 410 struct page **pagep, void **fsdata)
... ... @@ -403,11 +413,8 @@
403 413  
404 414 ret = block_write_begin(mapping, pos, len, flags, pagep,
405 415 minix_get_block);
406   - if (unlikely(ret)) {
407   - loff_t isize = mapping->host->i_size;
408   - if (pos + len > isize)
409   - vmtruncate(mapping->host, isize);
410   - }
  416 + if (unlikely(ret))
  417 + minix_write_failed(mapping, pos + len);
411 418  
412 419 return ret;
413 420 }