btrfs: print more details when checking tree block finds a problem
[sfrench/cifs-2.6.git] / fs / btrfs / disk-io.c
index 205092dc939082d48cabc43d7d4a4340a1feffb4..c77afa9e5d91fdefc67d6e7ae121738fdf8b056e 100644 (file)
@@ -615,8 +615,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 +628,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;
        }
@@ -1292,15 +1292,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 +1366,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 +1789,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 +1805,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 ||