提交 e7ff6aed 编写于 作者: D David Chinner 提交者: Tim Shimmin

[XFS] Don't use kmap in xfs_iozero.

kmap() is inefficient and does not scale well. kmap_atomic() is a better
choice. Use the generic wrapper function instead of open coding the
kmap-memset-dcache flush-kunmap stuff.

SGI-PV: 960904
SGI-Modid: xfs-linux-melb:xfs-kern:28041a
Signed-off-by: NDavid Chinner <dgc@sgi.com>
Signed-off-by: NChristoph Hellwig <hch@infradead.org>
Signed-off-by: NTim Shimmin <tes@sgi.com>
上级 6be145bf
......@@ -137,7 +137,6 @@ xfs_iozero(
unsigned bytes;
struct page *page;
struct address_space *mapping;
char *kaddr;
int status;
mapping = ip->i_mapping;
......@@ -155,15 +154,13 @@ xfs_iozero(
if (!page)
break;
kaddr = kmap(page);
status = mapping->a_ops->prepare_write(NULL, page, offset,
offset + bytes);
if (status) {
if (status)
goto unlock;
}
memset((void *) (kaddr + offset), 0, bytes);
flush_dcache_page(page);
memclear_highpage_flush(page, offset, bytes);
status = mapping->a_ops->commit_write(NULL, page, offset,
offset + bytes);
if (!status) {
......@@ -172,7 +169,6 @@ xfs_iozero(
}
unlock:
kunmap(page);
unlock_page(page);
page_cache_release(page);
if (status)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册