diff options
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 4e57fe68e4b9..cdb701165a05 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -1727,7 +1727,6 @@ static int btrfs_readpage_end_io_hook(struct page *page, u64 start, u64 end, | |||
1727 | int ret; | 1727 | int ret; |
1728 | struct btrfs_root *root = BTRFS_I(inode)->root; | 1728 | struct btrfs_root *root = BTRFS_I(inode)->root; |
1729 | u32 csum = ~(u32)0; | 1729 | u32 csum = ~(u32)0; |
1730 | unsigned long flags; | ||
1731 | 1730 | ||
1732 | if (PageChecked(page)) { | 1731 | if (PageChecked(page)) { |
1733 | ClearPageChecked(page); | 1732 | ClearPageChecked(page); |
@@ -1749,8 +1748,7 @@ static int btrfs_readpage_end_io_hook(struct page *page, u64 start, u64 end, | |||
1749 | } else { | 1748 | } else { |
1750 | ret = get_state_private(io_tree, start, &private); | 1749 | ret = get_state_private(io_tree, start, &private); |
1751 | } | 1750 | } |
1752 | local_irq_save(flags); | 1751 | kaddr = kmap(page); |
1753 | kaddr = kmap_atomic(page, KM_IRQ0); | ||
1754 | if (ret) | 1752 | if (ret) |
1755 | goto zeroit; | 1753 | goto zeroit; |
1756 | 1754 | ||
@@ -1759,8 +1757,7 @@ static int btrfs_readpage_end_io_hook(struct page *page, u64 start, u64 end, | |||
1759 | if (csum != private) | 1757 | if (csum != private) |
1760 | goto zeroit; | 1758 | goto zeroit; |
1761 | 1759 | ||
1762 | kunmap_atomic(kaddr, KM_IRQ0); | 1760 | kunmap(page); |
1763 | local_irq_restore(flags); | ||
1764 | good: | 1761 | good: |
1765 | /* if the io failure tree for this inode is non-empty, | 1762 | /* if the io failure tree for this inode is non-empty, |
1766 | * check to see if we've recovered from a failed IO | 1763 | * check to see if we've recovered from a failed IO |
@@ -1775,8 +1772,7 @@ zeroit: | |||
1775 | (unsigned long long)private); | 1772 | (unsigned long long)private); |
1776 | memset(kaddr + offset, 1, end - start + 1); | 1773 | memset(kaddr + offset, 1, end - start + 1); |
1777 | flush_dcache_page(page); | 1774 | flush_dcache_page(page); |
1778 | kunmap_atomic(kaddr, KM_IRQ0); | 1775 | kunmap(page); |
1779 | local_irq_restore(flags); | ||
1780 | if (private == 0) | 1776 | if (private == 0) |
1781 | return 0; | 1777 | return 0; |
1782 | return -EIO; | 1778 | return -EIO; |