struct f2fs_dir_entry *de;
        struct f2fs_dentry_ptr d;
 
-       dentry_blk = (struct f2fs_dentry_block *)kmap(dentry_page);
+       dentry_blk = (struct f2fs_dentry_block *)page_address(dentry_page);
 
        make_dentry_ptr_block(NULL, &d, dentry_blk);
        de = find_target_dentry(fname, namehash, max_slots, &d);
        if (de)
                *res_page = dentry_page;
-       else
-               kunmap(dentry_page);
 
        return de;
 }
        de = f2fs_find_entry(dir, qstr, page);
        if (de) {
                res = le32_to_cpu(de->ino);
-               f2fs_dentry_kunmap(dir, *page);
                f2fs_put_page(*page, 0);
        }
 
        f2fs_wait_on_page_writeback(page, type, true);
        de->ino = cpu_to_le32(inode->i_ino);
        set_de_type(de, inode->i_mode);
-       f2fs_dentry_kunmap(dir, page);
        set_page_dirty(page);
 
        dir->i_mtime = dir->i_ctime = current_time(dir);
        if (IS_ERR(dentry_page))
                return PTR_ERR(dentry_page);
 
-       dentry_blk = kmap_atomic(dentry_page);
+       dentry_blk = page_address(dentry_page);
 
        make_dentry_ptr_block(NULL, &d, dentry_blk);
        do_make_empty_dir(inode, parent, &d);
 
-       kunmap_atomic(dentry_blk);
-
        set_page_dirty(dentry_page);
        f2fs_put_page(dentry_page, 1);
        return 0;
                if (IS_ERR(dentry_page))
                        return PTR_ERR(dentry_page);
 
-               dentry_blk = kmap(dentry_page);
+               dentry_blk = page_address(dentry_page);
                bit_pos = room_for_filename(&dentry_blk->dentry_bitmap,
                                                slots, NR_DENTRY_IN_BLOCK);
                if (bit_pos < NR_DENTRY_IN_BLOCK)
                        goto add_dentry;
 
-               kunmap(dentry_page);
                f2fs_put_page(dentry_page, 1);
        }
 
        if (inode)
                up_write(&F2FS_I(inode)->i_sem);
 
-       kunmap(dentry_page);
        f2fs_put_page(dentry_page, 1);
 
        return err;
                F2FS_I(dir)->task = NULL;
        }
        if (de) {
-               f2fs_dentry_kunmap(dir, page);
                f2fs_put_page(page, 0);
                err = -EEXIST;
        } else if (IS_ERR(page)) {
        bit_pos = find_next_bit_le(&dentry_blk->dentry_bitmap,
                        NR_DENTRY_IN_BLOCK,
                        0);
-       kunmap(page); /* kunmap - pair of f2fs_find_entry */
        set_page_dirty(page);
 
        dir->i_ctime = dir->i_mtime = current_time(dir);
                                return false;
                }
 
-               dentry_blk = kmap_atomic(dentry_page);
+               dentry_blk = page_address(dentry_page);
                if (bidx == 0)
                        bit_pos = 2;
                else
                bit_pos = find_next_bit_le(&dentry_blk->dentry_bitmap,
                                                NR_DENTRY_IN_BLOCK,
                                                bit_pos);
-               kunmap_atomic(dentry_blk);
 
                f2fs_put_page(dentry_page, 1);
 
                        }
                }
 
-               dentry_blk = kmap(dentry_page);
+               dentry_blk = page_address(dentry_page);
 
                make_dentry_ptr_block(inode, &d, dentry_blk);
 
                err = f2fs_fill_dentries(ctx, &d,
                                n * NR_DENTRY_IN_BLOCK, &fstr);
                if (err) {
-                       kunmap(dentry_page);
                        f2fs_put_page(dentry_page, 1);
                        break;
                }
 
-               kunmap(dentry_page);
                f2fs_put_page(dentry_page, 1);
        }
 out_free:
 
        return is_inode_flag_set(inode, FI_INLINE_DENTRY);
 }
 
-static inline void f2fs_dentry_kunmap(struct inode *dir, struct page *page)
-{
-       if (!f2fs_has_inline_dentry(dir))
-               kunmap(page);
-}
-
 static inline int is_file(struct inode *inode, int type)
 {
        return F2FS_I(inode)->i_advise & type;
 
        f2fs_wait_on_page_writeback(page, DATA, true);
        zero_user_segment(page, MAX_INLINE_DATA(dir), PAGE_SIZE);
 
-       dentry_blk = kmap_atomic(page);
+       dentry_blk = page_address(page);
 
        make_dentry_ptr_inline(dir, &src, inline_dentry);
        make_dentry_ptr_block(dir, &dst, dentry_blk);
        memcpy(dst.dentry, src.dentry, SIZE_OF_DIR_ENTRY * src.max);
        memcpy(dst.filename, src.filename, src.max * F2FS_SLOT_LEN);
 
-       kunmap_atomic(dentry_blk);
        if (!PageUptodate(page))
                SetPageUptodate(page);
        set_page_dirty(page);
 
                inode->i_op = &f2fs_dir_inode_operations;
                inode->i_fop = &f2fs_dir_operations;
                inode->i_mapping->a_ops = &f2fs_dblock_aops;
-               mapping_set_gfp_mask(inode->i_mapping, GFP_F2FS_HIGH_ZERO);
+               inode_nohighmem(inode);
        } else if (S_ISLNK(inode->i_mode)) {
                if (f2fs_encrypted_inode(inode))
                        inode->i_op = &f2fs_encrypted_symlink_inode_operations;
 
 
        de = f2fs_find_entry(dir, &dot, &page);
        if (de) {
-               f2fs_dentry_kunmap(dir, page);
                f2fs_put_page(page, 0);
        } else if (IS_ERR(page)) {
                err = PTR_ERR(page);
        }
 
        de = f2fs_find_entry(dir, &dotdot, &page);
-       if (de) {
-               f2fs_dentry_kunmap(dir, page);
+       if (de)
                f2fs_put_page(page, 0);
-       } else if (IS_ERR(page)) {
+       else if (IS_ERR(page))
                err = PTR_ERR(page);
-       } else {
+       else
                err = __f2fs_add_link(dir, &dotdot, NULL, pino, S_IFDIR);
-       }
 out:
        if (!err)
                clear_inode_flag(dir, FI_INLINE_DOTS);
        }
 
        ino = le32_to_cpu(de->ino);
-       f2fs_dentry_kunmap(dir, page);
        f2fs_put_page(page, 0);
 
        inode = f2fs_iget(dir->i_sb, ino);
        err = acquire_orphan_inode(sbi);
        if (err) {
                f2fs_unlock_op(sbi);
-               f2fs_dentry_kunmap(dir, page);
                f2fs_put_page(page, 0);
                goto fail;
        }
        inode->i_op = &f2fs_dir_inode_operations;
        inode->i_fop = &f2fs_dir_operations;
        inode->i_mapping->a_ops = &f2fs_dblock_aops;
-       mapping_set_gfp_mask(inode->i_mapping, GFP_F2FS_HIGH_ZERO);
+       inode_nohighmem(inode);
 
        set_inode_flag(inode, FI_INC_LINK);
        f2fs_lock_op(sbi);
        }
 
        if (old_dir_entry) {
-               if (old_dir != new_dir && !whiteout) {
+               if (old_dir != new_dir && !whiteout)
                        f2fs_set_link(old_inode, old_dir_entry,
                                                old_dir_page, new_dir);
-               } else {
-                       f2fs_dentry_kunmap(old_inode, old_dir_page);
+               else
                        f2fs_put_page(old_dir_page, 0);
-               }
                f2fs_i_links_write(old_dir, false);
        }
        add_ino_entry(sbi, new_dir->i_ino, TRANS_DIR_INO);
 
 put_out_dir:
        f2fs_unlock_op(sbi);
-       if (new_page) {
-               f2fs_dentry_kunmap(new_dir, new_page);
+       if (new_page)
                f2fs_put_page(new_page, 0);
-       }
 out_whiteout:
        if (whiteout)
                iput(whiteout);
 out_dir:
-       if (old_dir_entry) {
-               f2fs_dentry_kunmap(old_inode, old_dir_page);
+       if (old_dir_entry)
                f2fs_put_page(old_dir_page, 0);
-       }
 out_old:
-       f2fs_dentry_kunmap(old_dir, old_page);
        f2fs_put_page(old_page, 0);
 out:
        return err;
        return 0;
 out_new_dir:
        if (new_dir_entry) {
-               f2fs_dentry_kunmap(new_inode, new_dir_page);
                f2fs_put_page(new_dir_page, 0);
        }
 out_old_dir:
        if (old_dir_entry) {
-               f2fs_dentry_kunmap(old_inode, old_dir_page);
                f2fs_put_page(old_dir_page, 0);
        }
 out_new:
-       f2fs_dentry_kunmap(new_dir, new_page);
        f2fs_put_page(new_page, 0);
 out_old:
-       f2fs_dentry_kunmap(old_dir, old_page);
        f2fs_put_page(old_page, 0);
 out:
        return err;
 
 retry:
        de = __f2fs_find_entry(dir, &fname, &page);
        if (de && inode->i_ino == le32_to_cpu(de->ino))
-               goto out_unmap_put;
+               goto out_put;
 
        if (de) {
                einode = f2fs_iget_retry(inode->i_sb, le32_to_cpu(de->ino));
                        err = PTR_ERR(einode);
                        if (err == -ENOENT)
                                err = -EEXIST;
-                       goto out_unmap_put;
+                       goto out_put;
                }
 
                err = dquot_initialize(einode);
                if (err) {
                        iput(einode);
-                       goto out_unmap_put;
+                       goto out_put;
                }
 
                err = acquire_orphan_inode(F2FS_I_SB(inode));
                if (err) {
                        iput(einode);
-                       goto out_unmap_put;
+                       goto out_put;
                }
                f2fs_delete_entry(de, page, dir, einode);
                iput(einode);
                goto retry;
        goto out;
 
-out_unmap_put:
-       f2fs_dentry_kunmap(dir, page);
+out_put:
        f2fs_put_page(page, 0);
 out:
        if (file_enc_name(inode))
 
 
 /* This flag is used by node and meta inodes, and by recovery */
 #define GFP_F2FS_ZERO          (GFP_NOFS | __GFP_ZERO)
-#define GFP_F2FS_HIGH_ZERO     (GFP_NOFS | __GFP_ZERO | __GFP_HIGHMEM)
 
 /*
  * For further optimization on multi-head logs, on-disk layout supports maximum