diff options
Diffstat (limited to 'fs/f2fs')
-rw-r--r-- | fs/f2fs/dir.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index 087b03dbca9b..bcbfbc467f46 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c | |||
@@ -298,14 +298,13 @@ static int make_empty_dir(struct inode *inode, | |||
298 | struct page *dentry_page; | 298 | struct page *dentry_page; |
299 | struct f2fs_dentry_block *dentry_blk; | 299 | struct f2fs_dentry_block *dentry_blk; |
300 | struct f2fs_dir_entry *de; | 300 | struct f2fs_dir_entry *de; |
301 | void *kaddr; | ||
302 | 301 | ||
303 | dentry_page = get_new_data_page(inode, page, 0, true); | 302 | dentry_page = get_new_data_page(inode, page, 0, true); |
304 | if (IS_ERR(dentry_page)) | 303 | if (IS_ERR(dentry_page)) |
305 | return PTR_ERR(dentry_page); | 304 | return PTR_ERR(dentry_page); |
306 | 305 | ||
307 | kaddr = kmap_atomic(dentry_page); | 306 | |
308 | dentry_blk = (struct f2fs_dentry_block *)kaddr; | 307 | dentry_blk = kmap_atomic(dentry_page); |
309 | 308 | ||
310 | de = &dentry_blk->dentry[0]; | 309 | de = &dentry_blk->dentry[0]; |
311 | de->name_len = cpu_to_le16(1); | 310 | de->name_len = cpu_to_le16(1); |
@@ -323,7 +322,7 @@ static int make_empty_dir(struct inode *inode, | |||
323 | 322 | ||
324 | test_and_set_bit_le(0, &dentry_blk->dentry_bitmap); | 323 | test_and_set_bit_le(0, &dentry_blk->dentry_bitmap); |
325 | test_and_set_bit_le(1, &dentry_blk->dentry_bitmap); | 324 | test_and_set_bit_le(1, &dentry_blk->dentry_bitmap); |
326 | kunmap_atomic(kaddr); | 325 | kunmap_atomic(dentry_blk); |
327 | 326 | ||
328 | set_page_dirty(dentry_page); | 327 | set_page_dirty(dentry_page); |
329 | f2fs_put_page(dentry_page, 1); | 328 | f2fs_put_page(dentry_page, 1); |
@@ -570,14 +569,13 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page, | |||
570 | struct address_space *mapping = page->mapping; | 569 | struct address_space *mapping = page->mapping; |
571 | struct inode *dir = mapping->host; | 570 | struct inode *dir = mapping->host; |
572 | int slots = GET_DENTRY_SLOTS(le16_to_cpu(dentry->name_len)); | 571 | int slots = GET_DENTRY_SLOTS(le16_to_cpu(dentry->name_len)); |
573 | void *kaddr = page_address(page); | ||
574 | int i; | 572 | int i; |
575 | 573 | ||
576 | lock_page(page); | 574 | lock_page(page); |
577 | f2fs_wait_on_page_writeback(page, DATA); | 575 | f2fs_wait_on_page_writeback(page, DATA); |
578 | 576 | ||
579 | dentry_blk = (struct f2fs_dentry_block *)kaddr; | 577 | dentry_blk = page_address(page); |
580 | bit_pos = dentry - (struct f2fs_dir_entry *)dentry_blk->dentry; | 578 | bit_pos = dentry - dentry_blk->dentry; |
581 | for (i = 0; i < slots; i++) | 579 | for (i = 0; i < slots; i++) |
582 | test_and_clear_bit_le(bit_pos + i, &dentry_blk->dentry_bitmap); | 580 | test_and_clear_bit_le(bit_pos + i, &dentry_blk->dentry_bitmap); |
583 | 581 | ||
@@ -632,7 +630,6 @@ bool f2fs_empty_dir(struct inode *dir) | |||
632 | unsigned long nblock = dir_blocks(dir); | 630 | unsigned long nblock = dir_blocks(dir); |
633 | 631 | ||
634 | for (bidx = 0; bidx < nblock; bidx++) { | 632 | for (bidx = 0; bidx < nblock; bidx++) { |
635 | void *kaddr; | ||
636 | dentry_page = get_lock_data_page(dir, bidx); | 633 | dentry_page = get_lock_data_page(dir, bidx); |
637 | if (IS_ERR(dentry_page)) { | 634 | if (IS_ERR(dentry_page)) { |
638 | if (PTR_ERR(dentry_page) == -ENOENT) | 635 | if (PTR_ERR(dentry_page) == -ENOENT) |
@@ -641,8 +638,8 @@ bool f2fs_empty_dir(struct inode *dir) | |||
641 | return false; | 638 | return false; |
642 | } | 639 | } |
643 | 640 | ||
644 | kaddr = kmap_atomic(dentry_page); | 641 | |
645 | dentry_blk = (struct f2fs_dentry_block *)kaddr; | 642 | dentry_blk = kmap_atomic(dentry_page); |
646 | if (bidx == 0) | 643 | if (bidx == 0) |
647 | bit_pos = 2; | 644 | bit_pos = 2; |
648 | else | 645 | else |
@@ -650,7 +647,7 @@ bool f2fs_empty_dir(struct inode *dir) | |||
650 | bit_pos = find_next_bit_le(&dentry_blk->dentry_bitmap, | 647 | bit_pos = find_next_bit_le(&dentry_blk->dentry_bitmap, |
651 | NR_DENTRY_IN_BLOCK, | 648 | NR_DENTRY_IN_BLOCK, |
652 | bit_pos); | 649 | bit_pos); |
653 | kunmap_atomic(kaddr); | 650 | kunmap_atomic(dentry_blk); |
654 | 651 | ||
655 | f2fs_put_page(dentry_page, 1); | 652 | f2fs_put_page(dentry_page, 1); |
656 | 653 | ||