For better performance, we need to use kmap_atomic instead of kmap.

Signed-off-by: Jaegeuk Kim <jaeg...@kernel.org>
---
 fs/f2fs/inline.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index 825995f..c03653d 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -55,11 +55,10 @@ int f2fs_read_inline_data(struct inode *inode, struct page 
*page)
 
        /* Copy the whole inline data block */
        src_addr = inline_data_addr(ipage);
-       dst_addr = kmap(page);
+       dst_addr = kmap_atomic(page);
        memcpy(dst_addr, src_addr, MAX_INLINE_DATA);
-       kunmap(page);
+       kunmap_atomic(dst_addr);
        f2fs_put_page(ipage, 1);
-
 out:
        SetPageUptodate(page);
        unlock_page(page);
@@ -105,9 +104,9 @@ static int __f2fs_convert_inline_data(struct inode *inode, 
struct page *page)
 
        /* Copy the whole inline data block */
        src_addr = inline_data_addr(ipage);
-       dst_addr = kmap(page);
+       dst_addr = kmap_atomic(page);
        memcpy(dst_addr, src_addr, MAX_INLINE_DATA);
-       kunmap(page);
+       kunmap_atomic(dst_addr);
        SetPageUptodate(page);
 
        /* write data page to try to make data consistent */
@@ -177,10 +176,10 @@ int f2fs_write_inline_data(struct inode *inode,
        f2fs_wait_on_page_writeback(ipage, NODE);
        zero_user_segment(ipage, INLINE_DATA_OFFSET,
                                 INLINE_DATA_OFFSET + MAX_INLINE_DATA);
-       src_addr = kmap(page);
+       src_addr = kmap_atomic(page);
        dst_addr = inline_data_addr(ipage);
        memcpy(dst_addr, src_addr, size);
-       kunmap(page);
+       kunmap_atomic(src_addr);
 
        set_inode_flag(F2FS_I(inode), FI_APPEND_WRITE);
        sync_inode_page(&dn);
@@ -351,7 +350,7 @@ int f2fs_convert_inline_dir(struct inode *dir, struct page 
*ipage,
        f2fs_wait_on_page_writeback(page, DATA);
        zero_user_segment(page, 0, PAGE_CACHE_SIZE);
 
-       dentry_blk = kmap(page);
+       dentry_blk = kmap_atomic(page);
 
        /* copy data from inline dentry block to new dentry block */
        memcpy(dentry_blk->dentry_bitmap, inline_dentry->dentry_bitmap,
@@ -363,7 +362,7 @@ int f2fs_convert_inline_dir(struct inode *dir, struct page 
*ipage,
        memcpy(dentry_blk->filename, inline_dentry->filename,
                                        NR_INLINE_DENTRY * F2FS_SLOT_LEN);
 
-       kunmap(page);
+       kunmap_atomic(dentry_blk);
        SetPageUptodate(page);
        set_page_dirty(page);
 
-- 
2.1.1


------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to