btrfs: remove unused member async_submit_bio::fs_info
[sfrench/cifs-2.6.git] / fs / btrfs / disk-io.c
index 205092dc939082d48cabc43d7d4a4340a1feffb4..8033289d21895bc0099b61737a121505be8a058a 100644 (file)
@@ -5,8 +5,6 @@
 
 #include <linux/fs.h>
 #include <linux/blkdev.h>
-#include <linux/scatterlist.h>
-#include <linux/swap.h>
 #include <linux/radix-tree.h>
 #include <linux/writeback.h>
 #include <linux/buffer_head.h>
@@ -108,7 +106,6 @@ void __cold btrfs_end_io_wq_exit(void)
  */
 struct async_submit_bio {
        void *private_data;
-       struct btrfs_fs_info *fs_info;
        struct bio *bio;
        extent_submit_bio_start_t *submit_bio_start;
        extent_submit_bio_done_t *submit_bio_done;
@@ -212,7 +209,7 @@ struct extent_map *btree_get_extent(struct btrfs_inode *inode,
                struct page *page, size_t pg_offset, u64 start, u64 len,
                int create)
 {
-       struct btrfs_fs_info *fs_info = btrfs_sb(inode->vfs_inode.i_sb);
+       struct btrfs_fs_info *fs_info = inode->root->fs_info;
        struct extent_map_tree *em_tree = &inode->extent_tree;
        struct extent_map *em;
        int ret;
@@ -615,8 +612,8 @@ static int btree_readpage_end_io_hook(struct btrfs_io_bio *io_bio,
 
        found_start = btrfs_header_bytenr(eb);
        if (found_start != eb->start) {
-               btrfs_err_rl(fs_info, "bad tree block start %llu %llu",
-                            found_start, eb->start);
+               btrfs_err_rl(fs_info, "bad tree block start, want %llu have %llu",
+                            eb->start, found_start);
                ret = -EIO;
                goto err;
        }
@@ -628,8 +625,8 @@ static int btree_readpage_end_io_hook(struct btrfs_io_bio *io_bio,
        }
        found_level = btrfs_header_level(eb);
        if (found_level >= BTRFS_MAX_LEVEL) {
-               btrfs_err(fs_info, "bad tree block level %d",
-                         (int)btrfs_header_level(eb));
+               btrfs_err(fs_info, "bad tree block level %d on %llu",
+                         (int)btrfs_header_level(eb), eb->start);
                ret = -EIO;
                goto err;
        }
@@ -803,7 +800,6 @@ blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
                return BLK_STS_RESOURCE;
 
        async->private_data = private_data;
-       async->fs_info = fs_info;
        async->bio = bio;
        async->mirror_num = mirror_num;
        async->submit_bio_start = submit_bio_start;
@@ -961,8 +957,9 @@ static int btree_writepages(struct address_space *mapping,
 
                fs_info = BTRFS_I(mapping->host)->root->fs_info;
                /* this is a bit racy, but that's ok */
-               ret = percpu_counter_compare(&fs_info->dirty_metadata_bytes,
-                                            BTRFS_DIRTY_METADATA_THRESH);
+               ret = __percpu_counter_compare(&fs_info->dirty_metadata_bytes,
+                                            BTRFS_DIRTY_METADATA_THRESH,
+                                            fs_info->dirty_metadata_batch);
                if (ret < 0)
                        return 0;
        }
@@ -1292,15 +1289,7 @@ struct btrfs_root *btrfs_create_tree(struct btrfs_trans_handle *trans,
                goto fail;
        }
 
-       memzero_extent_buffer(leaf, 0, sizeof(struct btrfs_header));
-       btrfs_set_header_bytenr(leaf, leaf->start);
-       btrfs_set_header_generation(leaf, trans->transid);
-       btrfs_set_header_backref_rev(leaf, BTRFS_MIXED_BACKREF_REV);
-       btrfs_set_header_owner(leaf, objectid);
        root->node = leaf;
-
-       write_extent_buffer_fsid(leaf, fs_info->fsid);
-       write_extent_buffer_chunk_tree_uuid(leaf, fs_info->chunk_tree_uuid);
        btrfs_mark_buffer_dirty(leaf);
 
        root->commit_root = btrfs_root_node(root);
@@ -1374,14 +1363,8 @@ static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans,
                return ERR_CAST(leaf);
        }
 
-       memzero_extent_buffer(leaf, 0, sizeof(struct btrfs_header));
-       btrfs_set_header_bytenr(leaf, leaf->start);
-       btrfs_set_header_generation(leaf, trans->transid);
-       btrfs_set_header_backref_rev(leaf, BTRFS_MIXED_BACKREF_REV);
-       btrfs_set_header_owner(leaf, BTRFS_TREE_LOG_OBJECTID);
        root->node = leaf;
 
-       write_extent_buffer_fsid(root->node, fs_info->fsid);
        btrfs_mark_buffer_dirty(root->node);
        btrfs_tree_unlock(root->node);
        return root;
@@ -1803,7 +1786,7 @@ static int transaction_kthread(void *arg)
        struct btrfs_trans_handle *trans;
        struct btrfs_transaction *cur;
        u64 transid;
-       unsigned long now;
+       time64_t now;
        unsigned long delay;
        bool cannot_commit;
 
@@ -1819,7 +1802,7 @@ static int transaction_kthread(void *arg)
                        goto sleep;
                }
 
-               now = get_seconds();
+               now = ktime_get_seconds();
                if (cur->state < TRANS_STATE_BLOCKED &&
                    !test_bit(BTRFS_FS_NEED_ASYNC_COMMIT, &fs_info->flags) &&
                    (now < cur->start_time ||
@@ -4104,10 +4087,10 @@ void btrfs_mark_buffer_dirty(struct extent_buffer *buf)
 #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
        /*
         * This is a fast path so only do this check if we have sanity tests
-        * enabled.  Normal people shouldn't be marking dummy buffers as dirty
+        * enabled.  Normal people shouldn't be using umapped buffers as dirty
         * outside of the sanity tests.
         */
-       if (unlikely(test_bit(EXTENT_BUFFER_DUMMY, &buf->bflags)))
+       if (unlikely(test_bit(EXTENT_BUFFER_UNMAPPED, &buf->bflags)))
                return;
 #endif
        root = BTRFS_I(buf->pages[0]->mapping->host)->root;
@@ -4150,8 +4133,9 @@ static void __btrfs_btree_balance_dirty(struct btrfs_fs_info *fs_info,
        if (flush_delayed)
                btrfs_balance_delayed_items(fs_info);
 
-       ret = percpu_counter_compare(&fs_info->dirty_metadata_bytes,
-                                    BTRFS_DIRTY_METADATA_THRESH);
+       ret = __percpu_counter_compare(&fs_info->dirty_metadata_bytes,
+                                    BTRFS_DIRTY_METADATA_THRESH,
+                                    fs_info->dirty_metadata_batch);
        if (ret > 0) {
                balance_dirty_pages_ratelimited(fs_info->btree_inode->i_mapping);
        }