Btrfs: fix stop searching test in replace_one_extent
[safe/jmp/linux-2.6] / fs / btrfs / inode.c
index c0ca9c3..45cf03e 100644 (file)
@@ -34,7 +34,6 @@
 #include <linux/statfs.h>
 #include <linux/compat.h>
 #include <linux/bit_spinlock.h>
-#include <linux/version.h>
 #include <linux/xattr.h>
 #include <linux/posix_acl.h>
 #include <linux/falloc.h>
@@ -157,7 +156,6 @@ static noinline int insert_inline_extent(struct btrfs_trans_handle *trans,
        key.objectid = inode->i_ino;
        key.offset = start;
        btrfs_set_key_type(&key, BTRFS_EXTENT_DATA_KEY);
-       inode_add_bytes(inode, size);
        datasize = btrfs_file_extent_calc_inline_size(cur_size);
 
        inode_add_bytes(inode, size);
@@ -920,8 +918,8 @@ static noinline int csum_exist_in_range(struct btrfs_root *root,
        struct btrfs_ordered_sum *sums;
        LIST_HEAD(list);
 
-       ret = btrfs_lookup_csums_range(root, bytenr, bytenr + num_bytes - 1,
-                                      &list);
+       ret = btrfs_lookup_csums_range(root->fs_info->csum_root, bytenr,
+                                      bytenr + num_bytes - 1, &list);
        if (ret == 0 && list_empty(&list))
                return 0;
 
@@ -1325,12 +1323,11 @@ static noinline int add_pending_csums(struct btrfs_trans_handle *trans,
                             struct inode *inode, u64 file_offset,
                             struct list_head *list)
 {
-       struct list_head *cur;
        struct btrfs_ordered_sum *sum;
 
        btrfs_set_trans_block_group(trans, inode);
-       list_for_each(cur, list) {
-               sum = list_entry(cur, struct btrfs_ordered_sum, list);
+
+       list_for_each_entry(sum, list, list) {
                btrfs_csum_file_blocks(trans,
                       BTRFS_I(inode)->root->fs_info->csum_root, sum);
        }
@@ -1728,7 +1725,6 @@ static int btrfs_readpage_end_io_hook(struct page *page, u64 start, u64 end,
        int ret;
        struct btrfs_root *root = BTRFS_I(inode)->root;
        u32 csum = ~(u32)0;
-       unsigned long flags;
 
        if (PageChecked(page)) {
                ClearPageChecked(page);
@@ -1750,8 +1746,7 @@ static int btrfs_readpage_end_io_hook(struct page *page, u64 start, u64 end,
        } else {
                ret = get_state_private(io_tree, start, &private);
        }
-       local_irq_save(flags);
-       kaddr = kmap_atomic(page, KM_IRQ0);
+       kaddr = kmap_atomic(page, KM_USER0);
        if (ret)
                goto zeroit;
 
@@ -1760,8 +1755,7 @@ static int btrfs_readpage_end_io_hook(struct page *page, u64 start, u64 end,
        if (csum != private)
                goto zeroit;
 
-       kunmap_atomic(kaddr, KM_IRQ0);
-       local_irq_restore(flags);
+       kunmap_atomic(kaddr, KM_USER0);
 good:
        /* if the io failure tree for this inode is non-empty,
         * check to see if we've recovered from a failed IO
@@ -1776,8 +1770,7 @@ zeroit:
               (unsigned long long)private);
        memset(kaddr + offset, 1, end - start + 1);
        flush_dcache_page(page);
-       kunmap_atomic(kaddr, KM_IRQ0);
-       local_irq_restore(flags);
+       kunmap_atomic(kaddr, KM_USER0);
        if (private == 0)
                return 0;
        return -EIO;