btrfs: remove inode argument from repair_io_failure
authorJosef Bacik <josef@toxicpanda.com>
Fri, 5 May 2017 15:57:14 +0000 (11:57 -0400)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2017 16:25:58 +0000 (18:25 +0200)
Once we remove the btree_inode we won't have an inode to pass anymore,
just pass the fs_info directly and the inum since we use that to print
out the repair message.

Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c
fs/btrfs/extent_io.h
fs/btrfs/scrub.c

index 70832b9b9e210c99d4b1a85a2a1ab266da27e77a..47ebaec85096b6ecefcc8bec01d31fa43e3e5e2a 100644 (file)
@@ -1972,11 +1972,10 @@ int free_io_failure(struct btrfs_inode *inode, struct io_failure_record *rec)
  * currently, there can be no more than two copies of every data bit. thus,
  * exactly one rewrite is required.
  */
-int repair_io_failure(struct btrfs_inode *inode, u64 start, u64 length,
-               u64 logical, struct page *page,
-               unsigned int pg_offset, int mirror_num)
+int repair_io_failure(struct btrfs_fs_info *fs_info, u64 ino, u64 start,
+                     u64 length, u64 logical, struct page *page,
+                     unsigned int pg_offset, int mirror_num)
 {
-       struct btrfs_fs_info *fs_info = inode->root->fs_info;
        struct bio *bio;
        struct btrfs_device *dev;
        u64 map_length = 0;
@@ -2048,7 +2047,7 @@ int repair_io_failure(struct btrfs_inode *inode, u64 start, u64 length,
 
        btrfs_info_rl_in_rcu(fs_info,
                "read error corrected: ino %llu off %llu (dev %s sector %llu)",
-                                 btrfs_ino(inode), start,
+                                 ino, start,
                                  rcu_str_deref(dev->name), sector);
        btrfs_bio_counter_dec(fs_info);
        bio_put(bio);
@@ -2068,8 +2067,7 @@ int repair_eb_io_failure(struct btrfs_fs_info *fs_info,
        for (i = 0; i < num_pages; i++) {
                struct page *p = eb->pages[i];
 
-               ret = repair_io_failure(BTRFS_I(fs_info->btree_inode), start,
-                                       PAGE_SIZE, start, p,
+               ret = repair_io_failure(fs_info, 0, start, PAGE_SIZE, start, p,
                                        start - page_offset(p), mirror_num);
                if (ret)
                        break;
@@ -2127,8 +2125,8 @@ int clean_io_failure(struct btrfs_inode *inode, u64 start, struct page *page,
                num_copies = btrfs_num_copies(fs_info, failrec->logical,
                                              failrec->len);
                if (num_copies > 1)  {
-                       repair_io_failure(inode, start, failrec->len,
-                                         failrec->logical, page,
+                       repair_io_failure(fs_info, btrfs_ino(inode), start,
+                                         failrec->len, failrec->logical, page,
                                          pg_offset, failrec->failed_mirror);
                }
        }
index 15ef696dda510e3dbcd6ca7eb53031b8620345cd..aa3b1fcfc15f0a2b8ecafedce0ccacc257171571 100644 (file)
@@ -471,9 +471,9 @@ struct bio *btrfs_bio_clone(struct bio *bio, gfp_t gfp_mask);
 struct btrfs_fs_info;
 struct btrfs_inode;
 
-int repair_io_failure(struct btrfs_inode *inode, u64 start, u64 length,
-               u64 logical, struct page *page,
-               unsigned int pg_offset, int mirror_num);
+int repair_io_failure(struct btrfs_fs_info *fs_info, u64 ino, u64 start,
+                     u64 length, u64 logical, struct page *page,
+                     unsigned int pg_offset, int mirror_num);
 int clean_io_failure(struct btrfs_inode *inode, u64 start,
                struct page *page, unsigned int pg_offset);
 void end_extent_writepage(struct page *page, int err, u64 start, u64 end);
index c7b45eb2403d09e94b2538dabcb5a1f0116c55dd..ba9134b5b1303ad4a48ef5d102c688e831697962 100644 (file)
@@ -954,7 +954,7 @@ static int scrub_fixup_readpage(u64 inum, u64 offset, u64 root, void *fixup_ctx)
                        ret = -EIO;
                        goto out;
                }
-               ret = repair_io_failure(BTRFS_I(inode), offset, PAGE_SIZE,
+               ret = repair_io_failure(fs_info, inum, offset, PAGE_SIZE,
                                        fixup->logical, page,
                                        offset - page_offset(page),
                                        fixup->mirror_num);