diff options
Diffstat (limited to 'fs/f2fs/file.c')
-rw-r--r-- | fs/f2fs/file.c | 38 |
1 files changed, 6 insertions, 32 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 7d714f4972d5..1cd8e44b637f 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c | |||
@@ -33,7 +33,6 @@ static int f2fs_vm_page_mkwrite(struct vm_area_struct *vma, | |||
33 | struct page *page = vmf->page; | 33 | struct page *page = vmf->page; |
34 | struct inode *inode = file_inode(vma->vm_file); | 34 | struct inode *inode = file_inode(vma->vm_file); |
35 | struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); | 35 | struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); |
36 | block_t old_blk_addr; | ||
37 | struct dnode_of_data dn; | 36 | struct dnode_of_data dn; |
38 | int err; | 37 | int err; |
39 | 38 | ||
@@ -44,24 +43,10 @@ static int f2fs_vm_page_mkwrite(struct vm_area_struct *vma, | |||
44 | /* block allocation */ | 43 | /* block allocation */ |
45 | f2fs_lock_op(sbi); | 44 | f2fs_lock_op(sbi); |
46 | set_new_dnode(&dn, inode, NULL, NULL, 0); | 45 | set_new_dnode(&dn, inode, NULL, NULL, 0); |
47 | err = get_dnode_of_data(&dn, page->index, ALLOC_NODE); | 46 | err = f2fs_reserve_block(&dn, page->index); |
48 | if (err) { | ||
49 | f2fs_unlock_op(sbi); | ||
50 | goto out; | ||
51 | } | ||
52 | |||
53 | old_blk_addr = dn.data_blkaddr; | ||
54 | |||
55 | if (old_blk_addr == NULL_ADDR) { | ||
56 | err = reserve_new_block(&dn); | ||
57 | if (err) { | ||
58 | f2fs_put_dnode(&dn); | ||
59 | f2fs_unlock_op(sbi); | ||
60 | goto out; | ||
61 | } | ||
62 | } | ||
63 | f2fs_put_dnode(&dn); | ||
64 | f2fs_unlock_op(sbi); | 47 | f2fs_unlock_op(sbi); |
48 | if (err) | ||
49 | goto out; | ||
65 | 50 | ||
66 | file_update_time(vma->vm_file); | 51 | file_update_time(vma->vm_file); |
67 | lock_page(page); | 52 | lock_page(page); |
@@ -532,22 +517,11 @@ static int expand_inode_data(struct inode *inode, loff_t offset, | |||
532 | 517 | ||
533 | f2fs_lock_op(sbi); | 518 | f2fs_lock_op(sbi); |
534 | set_new_dnode(&dn, inode, NULL, NULL, 0); | 519 | set_new_dnode(&dn, inode, NULL, NULL, 0); |
535 | ret = get_dnode_of_data(&dn, index, ALLOC_NODE); | 520 | ret = f2fs_reserve_block(&dn, index); |
536 | if (ret) { | 521 | f2fs_unlock_op(sbi); |
537 | f2fs_unlock_op(sbi); | 522 | if (ret) |
538 | break; | 523 | break; |
539 | } | ||
540 | 524 | ||
541 | if (dn.data_blkaddr == NULL_ADDR) { | ||
542 | ret = reserve_new_block(&dn); | ||
543 | if (ret) { | ||
544 | f2fs_put_dnode(&dn); | ||
545 | f2fs_unlock_op(sbi); | ||
546 | break; | ||
547 | } | ||
548 | } | ||
549 | f2fs_put_dnode(&dn); | ||
550 | f2fs_unlock_op(sbi); | ||
551 | 525 | ||
552 | if (pg_start == pg_end) | 526 | if (pg_start == pg_end) |
553 | new_size = offset + len; | 527 | new_size = offset + len; |