Signed-off-by: Gu Zheng <guz.f...@cn.fujitsu.com>
---
v2: fix the same issue in f2fs_delete_entry suggested by Yu Chao.
---
---
 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 087b03d..bcbfbc4 100644
--- a/fs/f2fs/dir.c
+++ b/fs/f2fs/dir.c
@@ -298,14 +298,13 @@ static int make_empty_dir(struct inode *inode,
        struct page *dentry_page;
        struct f2fs_dentry_block *dentry_blk;
        struct f2fs_dir_entry *de;
-       void *kaddr;
 
        dentry_page = get_new_data_page(inode, page, 0, true);
        if (IS_ERR(dentry_page))
                return PTR_ERR(dentry_page);
 
-       kaddr = kmap_atomic(dentry_page);
-       dentry_blk = (struct f2fs_dentry_block *)kaddr;
+
+       dentry_blk = kmap_atomic(dentry_page);
 
        de = &dentry_blk->dentry[0];
        de->name_len = cpu_to_le16(1);
@@ -323,7 +322,7 @@ static int make_empty_dir(struct inode *inode,
 
        test_and_set_bit_le(0, &dentry_blk->dentry_bitmap);
        test_and_set_bit_le(1, &dentry_blk->dentry_bitmap);
-       kunmap_atomic(kaddr);
+       kunmap_atomic(dentry_blk);
 
        set_page_dirty(dentry_page);
        f2fs_put_page(dentry_page, 1);
@@ -570,14 +569,13 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, 
struct page *page,
        struct address_space *mapping = page->mapping;
        struct inode *dir = mapping->host;
        int slots = GET_DENTRY_SLOTS(le16_to_cpu(dentry->name_len));
-       void *kaddr = page_address(page);
        int i;
 
        lock_page(page);
        f2fs_wait_on_page_writeback(page, DATA);
 
-       dentry_blk = (struct f2fs_dentry_block *)kaddr;
-       bit_pos = dentry - (struct f2fs_dir_entry *)dentry_blk->dentry;
+       dentry_blk = page_address(page);
+       bit_pos = dentry - dentry_blk->dentry;
        for (i = 0; i < slots; i++)
                test_and_clear_bit_le(bit_pos + i, &dentry_blk->dentry_bitmap);
 
@@ -632,7 +630,6 @@ bool f2fs_empty_dir(struct inode *dir)
        unsigned long nblock = dir_blocks(dir);
 
        for (bidx = 0; bidx < nblock; bidx++) {
-               void *kaddr;
                dentry_page = get_lock_data_page(dir, bidx);
                if (IS_ERR(dentry_page)) {
                        if (PTR_ERR(dentry_page) == -ENOENT)
@@ -641,8 +638,8 @@ bool f2fs_empty_dir(struct inode *dir)
                                return false;
                }
 
-               kaddr = kmap_atomic(dentry_page);
-               dentry_blk = (struct f2fs_dentry_block *)kaddr;
+
+               dentry_blk = kmap_atomic(dentry_page);
                if (bidx == 0)
                        bit_pos = 2;
                else
@@ -650,7 +647,7 @@ bool f2fs_empty_dir(struct inode *dir)
                bit_pos = find_next_bit_le(&dentry_blk->dentry_bitmap,
                                                NR_DENTRY_IN_BLOCK,
                                                bit_pos);
-               kunmap_atomic(kaddr);
+               kunmap_atomic(dentry_blk);
 
                f2fs_put_page(dentry_page, 1);
 
-- 
1.7.7



------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to