diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-10-19 02:41:38 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-11-03 19:07:35 -0500 |
commit | f1e33a041e39535571cd19f4799c3673868f2118 (patch) | |
tree | d4e1a328a1030ed48511ade5102fc1457a658390 | |
parent | 062a3e7ba7eebcd7d44e49e9510135f901f93f48 (diff) |
f2fs: use kmap_atomic instead of kmap
For better performance, we need to use kmap_atomic instead of kmap.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r-- | fs/f2fs/inline.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c index a30984505f16..024546b80fd0 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) | |||
55 | 55 | ||
56 | /* Copy the whole inline data block */ | 56 | /* Copy the whole inline data block */ |
57 | src_addr = inline_data_addr(ipage); | 57 | src_addr = inline_data_addr(ipage); |
58 | dst_addr = kmap(page); | 58 | dst_addr = kmap_atomic(page); |
59 | memcpy(dst_addr, src_addr, MAX_INLINE_DATA); | 59 | memcpy(dst_addr, src_addr, MAX_INLINE_DATA); |
60 | kunmap(page); | 60 | kunmap_atomic(dst_addr); |
61 | f2fs_put_page(ipage, 1); | 61 | f2fs_put_page(ipage, 1); |
62 | |||
63 | out: | 62 | out: |
64 | SetPageUptodate(page); | 63 | SetPageUptodate(page); |
65 | unlock_page(page); | 64 | unlock_page(page); |
@@ -105,9 +104,9 @@ static int __f2fs_convert_inline_data(struct inode *inode, struct page *page) | |||
105 | 104 | ||
106 | /* Copy the whole inline data block */ | 105 | /* Copy the whole inline data block */ |
107 | src_addr = inline_data_addr(ipage); | 106 | src_addr = inline_data_addr(ipage); |
108 | dst_addr = kmap(page); | 107 | dst_addr = kmap_atomic(page); |
109 | memcpy(dst_addr, src_addr, MAX_INLINE_DATA); | 108 | memcpy(dst_addr, src_addr, MAX_INLINE_DATA); |
110 | kunmap(page); | 109 | kunmap_atomic(dst_addr); |
111 | SetPageUptodate(page); | 110 | SetPageUptodate(page); |
112 | 111 | ||
113 | /* write data page to try to make data consistent */ | 112 | /* write data page to try to make data consistent */ |
@@ -177,10 +176,10 @@ int f2fs_write_inline_data(struct inode *inode, | |||
177 | f2fs_wait_on_page_writeback(ipage, NODE); | 176 | f2fs_wait_on_page_writeback(ipage, NODE); |
178 | zero_user_segment(ipage, INLINE_DATA_OFFSET, | 177 | zero_user_segment(ipage, INLINE_DATA_OFFSET, |
179 | INLINE_DATA_OFFSET + MAX_INLINE_DATA); | 178 | INLINE_DATA_OFFSET + MAX_INLINE_DATA); |
180 | src_addr = kmap(page); | 179 | src_addr = kmap_atomic(page); |
181 | dst_addr = inline_data_addr(ipage); | 180 | dst_addr = inline_data_addr(ipage); |
182 | memcpy(dst_addr, src_addr, size); | 181 | memcpy(dst_addr, src_addr, size); |
183 | kunmap(page); | 182 | kunmap_atomic(src_addr); |
184 | 183 | ||
185 | set_inode_flag(F2FS_I(inode), FI_APPEND_WRITE); | 184 | set_inode_flag(F2FS_I(inode), FI_APPEND_WRITE); |
186 | sync_inode_page(&dn); | 185 | sync_inode_page(&dn); |
@@ -351,7 +350,7 @@ int f2fs_convert_inline_dir(struct inode *dir, struct page *ipage, | |||
351 | f2fs_wait_on_page_writeback(page, DATA); | 350 | f2fs_wait_on_page_writeback(page, DATA); |
352 | zero_user_segment(page, 0, PAGE_CACHE_SIZE); | 351 | zero_user_segment(page, 0, PAGE_CACHE_SIZE); |
353 | 352 | ||
354 | dentry_blk = kmap(page); | 353 | dentry_blk = kmap_atomic(page); |
355 | 354 | ||
356 | /* copy data from inline dentry block to new dentry block */ | 355 | /* copy data from inline dentry block to new dentry block */ |
357 | memcpy(dentry_blk->dentry_bitmap, inline_dentry->dentry_bitmap, | 356 | memcpy(dentry_blk->dentry_bitmap, inline_dentry->dentry_bitmap, |
@@ -361,7 +360,7 @@ int f2fs_convert_inline_dir(struct inode *dir, struct page *ipage, | |||
361 | memcpy(dentry_blk->filename, inline_dentry->filename, | 360 | memcpy(dentry_blk->filename, inline_dentry->filename, |
362 | NR_INLINE_DENTRY * F2FS_SLOT_LEN); | 361 | NR_INLINE_DENTRY * F2FS_SLOT_LEN); |
363 | 362 | ||
364 | kunmap(page); | 363 | kunmap_atomic(dentry_blk); |
365 | SetPageUptodate(page); | 364 | SetPageUptodate(page); |
366 | set_page_dirty(page); | 365 | set_page_dirty(page); |
367 | 366 | ||