Skip to content
Snippets Groups Projects
Commit a44c53f6 authored by Bobi Jam's avatar Bobi Jam
Browse files

Branch HEAD

b=13626
i=johann, adilger

use k(un)map_atomic instead of k(un)map for short/tight code paths.
parent ee13379b
No related branches found
No related tags found
No related merge requests found
...@@ -168,9 +168,10 @@ void ll_truncate(struct inode *inode) ...@@ -168,9 +168,10 @@ void ll_truncate(struct inode *inode)
if (page != NULL) { if (page != NULL) {
struct ll_async_page *llap = llap_cast_private(page); struct ll_async_page *llap = llap_cast_private(page);
if (llap != NULL) { if (llap != NULL) {
char *kaddr = kmap_atomic(page, KM_USER0);
llap->llap_checksum = llap->llap_checksum =
crc32_le(0, kmap(page), CFS_PAGE_SIZE); crc32_le(0, kaddr, CFS_PAGE_SIZE);
kunmap(page); kunmap_atomic(kaddr, KM_USER0);
} }
page_cache_release(page); page_cache_release(page);
} }
...@@ -265,10 +266,11 @@ int ll_prepare_write(struct file *file, struct page *page, unsigned from, ...@@ -265,10 +266,11 @@ int ll_prepare_write(struct file *file, struct page *page, unsigned from,
obd_merge_lvb(ll_i2dtexp(inode), lsm, &lvb, 1); obd_merge_lvb(ll_i2dtexp(inode), lsm, &lvb, 1);
lov_stripe_unlock(lsm); lov_stripe_unlock(lsm);
if (lvb.lvb_size <= offset) { if (lvb.lvb_size <= offset) {
char *kaddr = kmap_atomic(page, KM_USER0);
LL_CDEBUG_PAGE(D_PAGE, page, "kms "LPU64" <= offset "LPU64"\n", LL_CDEBUG_PAGE(D_PAGE, page, "kms "LPU64" <= offset "LPU64"\n",
lvb.lvb_size, offset); lvb.lvb_size, offset);
memset(kmap(page), 0, CFS_PAGE_SIZE); memset(kaddr, 0, CFS_PAGE_SIZE);
kunmap(page); kunmap_atomic(kaddr, KM_USER0);
GOTO(prepare_done, rc = 0); GOTO(prepare_done, rc = 0);
} }
...@@ -641,8 +643,9 @@ struct ll_async_page *llap_from_page(struct page *page, unsigned origin) ...@@ -641,8 +643,9 @@ struct ll_async_page *llap_from_page(struct page *page, unsigned origin)
out: out:
if (unlikely(sbi->ll_flags & LL_SBI_CHECKSUM)) { if (unlikely(sbi->ll_flags & LL_SBI_CHECKSUM)) {
__u32 csum = 0; __u32 csum = 0;
csum = crc32_le(csum, kmap(page), CFS_PAGE_SIZE); char *kaddr = kmap_atomic(page, KM_USER0);
kunmap(page); csum = crc32_le(csum, kaddr, CFS_PAGE_SIZE);
kunmap_atomic(kaddr, KM_USER0);
if (origin == LLAP_ORIGIN_READAHEAD || if (origin == LLAP_ORIGIN_READAHEAD ||
origin == LLAP_ORIGIN_READPAGE) { origin == LLAP_ORIGIN_READPAGE) {
llap->llap_checksum = 0; llap->llap_checksum = 0;
...@@ -713,8 +716,9 @@ static int queue_or_sync_write(struct obd_export *exp, struct inode *inode, ...@@ -713,8 +716,9 @@ static int queue_or_sync_write(struct obd_export *exp, struct inode *inode,
llap->llap_checksum != 0)) { llap->llap_checksum != 0)) {
__u32 csum = 0; __u32 csum = 0;
struct page *page = llap->llap_page; struct page *page = llap->llap_page;
csum = crc32_le(csum, kmap(page), CFS_PAGE_SIZE); char *kaddr = kmap_atomic(page, KM_USER0);
kunmap(page); csum = crc32_le(csum, kaddr, CFS_PAGE_SIZE);
kunmap_atomic(kaddr, KM_USER0);
if (llap->llap_checksum == csum) { if (llap->llap_checksum == csum) {
CDEBUG(D_PAGE, "page %p cksum %x confirmed\n", CDEBUG(D_PAGE, "page %p cksum %x confirmed\n",
page, csum); page, csum);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment