diff options
| author | Andrew Morton <akpm@digeo.com> | 2002-11-15 18:53:08 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-11-15 18:53:08 -0800 |
| commit | b084fe4bb9f8ed890a758ca37faba8aec8bce7ee (patch) | |
| tree | 7587bfca35f26ac9b35f4351c538a846beccaa4c | |
| parent | deda1b5e732499cad979ddc48b2bf1d0c12eb522 (diff) | |
[PATCH] kmap->kmap_atomic in mpage.c
Replace some kmaps in mpage.c with kmap_atomic.
| -rw-r--r-- | fs/mpage.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/mpage.c b/fs/mpage.c index aadcd6f898fe..6a93622217e8 100644 --- a/fs/mpage.c +++ b/fs/mpage.c @@ -210,10 +210,11 @@ do_mpage_readpage(struct bio *bio, struct page *page, unsigned nr_pages, } if (first_hole != blocks_per_page) { - memset(kmap(page) + (first_hole << blkbits), 0, + char *kaddr = kmap_atomic(page, KM_USER0); + memset(kaddr + (first_hole << blkbits), 0, PAGE_CACHE_SIZE - (first_hole << blkbits)); flush_dcache_page(page); - kunmap(page); + kunmap_atomic(kaddr, KM_USER0); if (first_hole == 0) { SetPageUptodate(page); unlock_page(page); @@ -427,12 +428,14 @@ mpage_writepage(struct bio *bio, struct page *page, get_block_t get_block, end_index = inode->i_size >> PAGE_CACHE_SHIFT; if (page->index >= end_index) { unsigned offset = inode->i_size & (PAGE_CACHE_SIZE - 1); + char *kaddr; if (page->index > end_index || !offset) goto confused; - memset(kmap(page) + offset, 0, PAGE_CACHE_SIZE - offset); + kaddr = kmap_atomic(page, KM_USER0); + memset(kaddr + offset, 0, PAGE_CACHE_SIZE - offset); flush_dcache_page(page); - kunmap(page); + kunmap_atomic(kaddr, KM_USER0); } page_is_mapped: |
