page = bvec->bv_page;
if (is_partial_io(bvec)) {
/* Use a temporary buffer to decompress the page */
- page = alloc_page(GFP_NOIO|__GFP_HIGHMEM);
+ page = alloc_page(GFP_NOIO);
if (!page)
return -ENOMEM;
}
if (unlikely(ret))
goto out;
- if (is_partial_io(bvec)) {
- void *src = kmap_atomic(page);
-
- memcpy_to_bvec(bvec, src + offset);
- kunmap_atomic(src);
- }
+ if (is_partial_io(bvec))
+ memcpy_to_bvec(bvec, page_address(page) + offset);
out:
if (is_partial_io(bvec))
__free_page(page);
vec = *bvec;
if (is_partial_io(bvec)) {
- void *dst;
/*
* This is a partial IO. We need to read the full page
* before to write the changes.
*/
- page = alloc_page(GFP_NOIO|__GFP_HIGHMEM);
+ page = alloc_page(GFP_NOIO);
if (!page)
return -ENOMEM;
if (ret)
goto out;
- dst = kmap_atomic(page);
- memcpy_from_bvec(dst + offset, bvec);
- kunmap_atomic(dst);
+ memcpy_from_bvec(page_address(page) + offset, bvec);
bvec_set_page(&vec, page, PAGE_SIZE, 0);
}