struct ll_async_page *llap = llap_cast_private(page);
if (llap != NULL) {
llap->llap_checksum =
- crc32_le(0, kmap(page), CFS_PAGE_SIZE);
- kunmap(page);
+ crc32_le(0,
+ kmap_atomic(page, KM_USER0),
+ CFS_PAGE_SIZE);
+ kunmap_atomic(page, KM_USER0);
}
page_cache_release(page);
}
if (lvb.lvb_size <= offset) {
LL_CDEBUG_PAGE(D_PAGE, page, "kms "LPU64" <= offset "LPU64"\n",
lvb.lvb_size, offset);
- memset(kmap(page), 0, CFS_PAGE_SIZE);
- kunmap(page);
+ memset(kmap_atomic(page, KM_USER0), 0, CFS_PAGE_SIZE);
+ kunmap_atomic(page, KM_USER0);
GOTO(prepare_done, rc = 0);
}
out:
if (unlikely(sbi->ll_flags & LL_SBI_CHECKSUM)) {
__u32 csum = 0;
- csum = crc32_le(csum, kmap(page), CFS_PAGE_SIZE);
- kunmap(page);
+ csum = crc32_le(csum, kmap_atomic(page, KM_USER0),
+ CFS_PAGE_SIZE);
+ kunmap_atomic(page, KM_USER0);
if (origin == LLAP_ORIGIN_READAHEAD ||
origin == LLAP_ORIGIN_READPAGE) {
llap->llap_checksum = 0;
llap->llap_checksum != 0)) {
__u32 csum = 0;
struct page *page = llap->llap_page;
- csum = crc32_le(csum, kmap(page), CFS_PAGE_SIZE);
- kunmap(page);
+ csum = crc32_le(csum, kmap_atomic(page, KM_USER0),
+ CFS_PAGE_SIZE);
+ kunmap_atomic(page, KM_USER0);
if (llap->llap_checksum == csum) {
CDEBUG(D_PAGE, "page %p cksum %x confirmed\n",
page, csum);