struct scrub_page *spage = sblock->pagev[page_num];
 
        BUG_ON(spage->page == NULL);
-       if (spage->io_error) {
-               void *mapped_buffer = kmap_atomic(spage->page);
+       if (spage->io_error)
+               clear_page(page_address(spage->page));
 
-               clear_page(mapped_buffer);
-               flush_dcache_page(spage->page);
-               kunmap_atomic(mapped_buffer);
-       }
        return scrub_add_page_to_wr_bio(sblock->sctx, spage);
 }
 
 
        on_disk_csum = sblock->pagev[0]->csum;
        page = sblock->pagev[0]->page;
-       buffer = kmap_atomic(page);
+       buffer = page_address(page);
 
        len = sctx->fs_info->sectorsize;
        index = 0;
                u64 l = min_t(u64, len, PAGE_SIZE);
 
                crypto_shash_update(shash, buffer, l);
-               kunmap_atomic(buffer);
                len -= l;
                if (len == 0)
                        break;
                BUG_ON(index >= sblock->page_count);
                BUG_ON(!sblock->pagev[index]->page);
                page = sblock->pagev[index]->page;
-               buffer = kmap_atomic(page);
+               buffer = page_address(page);
        }
 
        crypto_shash_final(shash, csum);
 
        BUG_ON(sblock->page_count < 1);
        page = sblock->pagev[0]->page;
-       mapped_buffer = kmap_atomic(page);
+       mapped_buffer = page_address(page);
        h = (struct btrfs_header *)mapped_buffer;
        memcpy(on_disk_csum, h->csum, sctx->csum_size);
 
                u64 l = min_t(u64, len, mapped_size);
 
                crypto_shash_update(shash, p, l);
-               kunmap_atomic(mapped_buffer);
                len -= l;
                if (len == 0)
                        break;
                BUG_ON(index >= sblock->page_count);
                BUG_ON(!sblock->pagev[index]->page);
                page = sblock->pagev[index]->page;
-               mapped_buffer = kmap_atomic(page);
+               mapped_buffer = page_address(page);
                mapped_size = PAGE_SIZE;
                p = mapped_buffer;
        }
 
        BUG_ON(sblock->page_count < 1);
        page = sblock->pagev[0]->page;
-       mapped_buffer = kmap_atomic(page);
+       mapped_buffer = page_address(page);
        s = (struct btrfs_super_block *)mapped_buffer;
        memcpy(on_disk_csum, s->csum, sctx->csum_size);
 
                u64 l = min_t(u64, len, mapped_size);
 
                crypto_shash_update(shash, p, l);
-               kunmap_atomic(mapped_buffer);
                len -= l;
                if (len == 0)
                        break;
                BUG_ON(index >= sblock->page_count);
                BUG_ON(!sblock->pagev[index]->page);
                page = sblock->pagev[index]->page;
-               mapped_buffer = kmap_atomic(page);
+               mapped_buffer = page_address(page);
                mapped_size = PAGE_SIZE;
                p = mapped_buffer;
        }