diff options
Diffstat (limited to 'fs/nilfs2/recovery.c')
-rw-r--r-- | fs/nilfs2/recovery.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/nilfs2/recovery.c b/fs/nilfs2/recovery.c index 83e3d8c61a01..d0c35ef39f6a 100644 --- a/fs/nilfs2/recovery.c +++ b/fs/nilfs2/recovery.c | |||
@@ -523,11 +523,14 @@ static int nilfs_recover_dsync_blocks(struct the_nilfs *nilfs, | |||
523 | } | 523 | } |
524 | 524 | ||
525 | pos = rb->blkoff << inode->i_blkbits; | 525 | pos = rb->blkoff << inode->i_blkbits; |
526 | page = NULL; | 526 | err = block_write_begin(inode->i_mapping, pos, blocksize, |
527 | err = block_write_begin(NULL, inode->i_mapping, pos, blocksize, | 527 | 0, &page, nilfs_get_block); |
528 | 0, &page, NULL, nilfs_get_block); | 528 | if (unlikely(err)) { |
529 | if (unlikely(err)) | 529 | loff_t isize = inode->i_size; |
530 | if (pos + blocksize > isize) | ||
531 | vmtruncate(inode, isize); | ||
530 | goto failed_inode; | 532 | goto failed_inode; |
533 | } | ||
531 | 534 | ||
532 | err = nilfs_recovery_copy_block(nilfs, rb, page); | 535 | err = nilfs_recovery_copy_block(nilfs, rb, page); |
533 | if (unlikely(err)) | 536 | if (unlikely(err)) |