OSDN Git Service

btrfs: make __endio_write_update_ordered take btrfs_inode
authorNikolay Borisov <nborisov@suse.com>
Wed, 3 Jun 2020 05:55:24 +0000 (08:55 +0300)
committerDavid Sterba <dsterba@suse.com>
Mon, 27 Jul 2020 10:55:33 +0000 (12:55 +0200)
It really wants btrfs_inode.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c

index 20bb3a4..c718fdd 100644 (file)
@@ -90,7 +90,7 @@ static struct extent_map *create_io_em(struct btrfs_inode *inode, u64 start,
                                       u64 ram_bytes, int compress_type,
                                       int type);
 
-static void __endio_write_update_ordered(struct inode *inode,
+static void __endio_write_update_ordered(struct btrfs_inode *inode,
                                         const u64 offset, const u64 bytes,
                                         const bool uptodate);
 
@@ -134,7 +134,8 @@ static inline void btrfs_cleanup_ordered_extents(struct inode *inode,
                bytes -= PAGE_SIZE;
        }
 
-       return __endio_write_update_ordered(inode, offset, bytes, false);
+       return __endio_write_update_ordered(BTRFS_I(inode), offset, bytes,
+                                           false);
 }
 
 static int btrfs_dirty_inode(struct inode *inode);
@@ -7474,7 +7475,8 @@ static void btrfs_dio_private_put(struct btrfs_dio_private *dip)
                return;
 
        if (bio_op(dip->dio_bio) == REQ_OP_WRITE) {
-               __endio_write_update_ordered(dip->inode, dip->logical_offset,
+               __endio_write_update_ordered(BTRFS_I(dip->inode),
+                                            dip->logical_offset,
                                             dip->bytes,
                                             !dip->dio_bio->bi_status);
        } else {
@@ -7560,25 +7562,25 @@ static blk_status_t btrfs_check_read_dio_bio(struct inode *inode,
        return err;
 }
 
-static void __endio_write_update_ordered(struct inode *inode,
+static void __endio_write_update_ordered(struct btrfs_inode *inode,
                                         const u64 offset, const u64 bytes,
                                         const bool uptodate)
 {
-       struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+       struct btrfs_fs_info *fs_info = inode->root->fs_info;
        struct btrfs_ordered_extent *ordered = NULL;
        struct btrfs_workqueue *wq;
        u64 ordered_offset = offset;
        u64 ordered_bytes = bytes;
        u64 last_offset;
 
-       if (btrfs_is_free_space_inode(BTRFS_I(inode)))
+       if (btrfs_is_free_space_inode(inode))
                wq = fs_info->endio_freespace_worker;
        else
                wq = fs_info->endio_write_workers;
 
        while (ordered_offset < offset + bytes) {
                last_offset = ordered_offset;
-               if (btrfs_dec_test_first_ordered_pending(BTRFS_I(inode), &ordered,
+               if (btrfs_dec_test_first_ordered_pending(inode, &ordered,
                                                         &ordered_offset,
                                                         ordered_bytes,
                                                         uptodate)) {
@@ -7961,7 +7963,7 @@ static ssize_t btrfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
                         */
                        if (dio_data.unsubmitted_oe_range_start <
                            dio_data.unsubmitted_oe_range_end)
-                               __endio_write_update_ordered(inode,
+                               __endio_write_update_ordered(BTRFS_I(inode),
                                        dio_data.unsubmitted_oe_range_start,
                                        dio_data.unsubmitted_oe_range_end -
                                        dio_data.unsubmitted_oe_range_start,