diff options
author | Jeff Mahoney <jeffm@suse.com> | 2016-06-09 17:27:55 -0400 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2016-07-26 07:53:16 -0400 |
commit | bc074524e123ded281cde25ebc5661910f9679e3 (patch) | |
tree | f8231fd35d5cf2838817c40df07c40a1b8f9f911 /fs/btrfs | |
parent | cb001095ca705dcd95f57fe98867e38a4889916d (diff) |
btrfs: prefix fsid to all trace events
When using trace events to debug a problem, it's impossible to determine
which file system generated a particular event. This patch adds a
macro to prefix standard information to the head of a trace event.
The extent_state alloc/free events are all that's left without an
fs_info available.
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/delayed-ref.c | 9 | ||||
-rw-r--r-- | fs/btrfs/extent-tree.c | 10 | ||||
-rw-r--r-- | fs/btrfs/qgroup.c | 19 | ||||
-rw-r--r-- | fs/btrfs/qgroup.h | 9 | ||||
-rw-r--r-- | fs/btrfs/super.c | 2 |
5 files changed, 27 insertions, 22 deletions
diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c index 08e452599249..b6d210e7a993 100644 --- a/fs/btrfs/delayed-ref.c +++ b/fs/btrfs/delayed-ref.c | |||
@@ -606,7 +606,8 @@ add_delayed_ref_head(struct btrfs_fs_info *fs_info, | |||
606 | qrecord->num_bytes = num_bytes; | 606 | qrecord->num_bytes = num_bytes; |
607 | qrecord->old_roots = NULL; | 607 | qrecord->old_roots = NULL; |
608 | 608 | ||
609 | qexisting = btrfs_qgroup_insert_dirty_extent(delayed_refs, | 609 | qexisting = btrfs_qgroup_insert_dirty_extent(fs_info, |
610 | delayed_refs, | ||
610 | qrecord); | 611 | qrecord); |
611 | if (qexisting) | 612 | if (qexisting) |
612 | kfree(qrecord); | 613 | kfree(qrecord); |
@@ -615,7 +616,7 @@ add_delayed_ref_head(struct btrfs_fs_info *fs_info, | |||
615 | spin_lock_init(&head_ref->lock); | 616 | spin_lock_init(&head_ref->lock); |
616 | mutex_init(&head_ref->mutex); | 617 | mutex_init(&head_ref->mutex); |
617 | 618 | ||
618 | trace_add_delayed_ref_head(ref, head_ref, action); | 619 | trace_add_delayed_ref_head(fs_info, ref, head_ref, action); |
619 | 620 | ||
620 | existing = htree_insert(&delayed_refs->href_root, | 621 | existing = htree_insert(&delayed_refs->href_root, |
621 | &head_ref->href_node); | 622 | &head_ref->href_node); |
@@ -682,7 +683,7 @@ add_delayed_tree_ref(struct btrfs_fs_info *fs_info, | |||
682 | ref->type = BTRFS_TREE_BLOCK_REF_KEY; | 683 | ref->type = BTRFS_TREE_BLOCK_REF_KEY; |
683 | full_ref->level = level; | 684 | full_ref->level = level; |
684 | 685 | ||
685 | trace_add_delayed_tree_ref(ref, full_ref, action); | 686 | trace_add_delayed_tree_ref(fs_info, ref, full_ref, action); |
686 | 687 | ||
687 | ret = add_delayed_ref_tail_merge(trans, delayed_refs, head_ref, ref); | 688 | ret = add_delayed_ref_tail_merge(trans, delayed_refs, head_ref, ref); |
688 | 689 | ||
@@ -739,7 +740,7 @@ add_delayed_data_ref(struct btrfs_fs_info *fs_info, | |||
739 | full_ref->objectid = owner; | 740 | full_ref->objectid = owner; |
740 | full_ref->offset = offset; | 741 | full_ref->offset = offset; |
741 | 742 | ||
742 | trace_add_delayed_data_ref(ref, full_ref, action); | 743 | trace_add_delayed_data_ref(fs_info, ref, full_ref, action); |
743 | 744 | ||
744 | ret = add_delayed_ref_tail_merge(trans, delayed_refs, head_ref, ref); | 745 | ret = add_delayed_ref_tail_merge(trans, delayed_refs, head_ref, ref); |
745 | 746 | ||
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 81d83300c99b..73f6dd2cf3cb 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -2204,7 +2204,7 @@ static int run_delayed_data_ref(struct btrfs_trans_handle *trans, | |||
2204 | ins.type = BTRFS_EXTENT_ITEM_KEY; | 2204 | ins.type = BTRFS_EXTENT_ITEM_KEY; |
2205 | 2205 | ||
2206 | ref = btrfs_delayed_node_to_data_ref(node); | 2206 | ref = btrfs_delayed_node_to_data_ref(node); |
2207 | trace_run_delayed_data_ref(node, ref, node->action); | 2207 | trace_run_delayed_data_ref(root->fs_info, node, ref, node->action); |
2208 | 2208 | ||
2209 | if (node->type == BTRFS_SHARED_DATA_REF_KEY) | 2209 | if (node->type == BTRFS_SHARED_DATA_REF_KEY) |
2210 | parent = ref->parent; | 2210 | parent = ref->parent; |
@@ -2359,7 +2359,7 @@ static int run_delayed_tree_ref(struct btrfs_trans_handle *trans, | |||
2359 | SKINNY_METADATA); | 2359 | SKINNY_METADATA); |
2360 | 2360 | ||
2361 | ref = btrfs_delayed_node_to_tree_ref(node); | 2361 | ref = btrfs_delayed_node_to_tree_ref(node); |
2362 | trace_run_delayed_tree_ref(node, ref, node->action); | 2362 | trace_run_delayed_tree_ref(root->fs_info, node, ref, node->action); |
2363 | 2363 | ||
2364 | if (node->type == BTRFS_SHARED_BLOCK_REF_KEY) | 2364 | if (node->type == BTRFS_SHARED_BLOCK_REF_KEY) |
2365 | parent = ref->parent; | 2365 | parent = ref->parent; |
@@ -2423,7 +2423,8 @@ static int run_one_delayed_ref(struct btrfs_trans_handle *trans, | |||
2423 | */ | 2423 | */ |
2424 | BUG_ON(extent_op); | 2424 | BUG_ON(extent_op); |
2425 | head = btrfs_delayed_node_to_head(node); | 2425 | head = btrfs_delayed_node_to_head(node); |
2426 | trace_run_delayed_ref_head(node, head, node->action); | 2426 | trace_run_delayed_ref_head(root->fs_info, node, head, |
2427 | node->action); | ||
2427 | 2428 | ||
2428 | if (insert_reserved) { | 2429 | if (insert_reserved) { |
2429 | btrfs_pin_extent(root, node->bytenr, | 2430 | btrfs_pin_extent(root, node->bytenr, |
@@ -8542,7 +8543,8 @@ static int record_one_subtree_extent(struct btrfs_trans_handle *trans, | |||
8542 | 8543 | ||
8543 | delayed_refs = &trans->transaction->delayed_refs; | 8544 | delayed_refs = &trans->transaction->delayed_refs; |
8544 | spin_lock(&delayed_refs->lock); | 8545 | spin_lock(&delayed_refs->lock); |
8545 | if (btrfs_qgroup_insert_dirty_extent(delayed_refs, qrecord)) | 8546 | if (btrfs_qgroup_insert_dirty_extent(trans->root->fs_info, |
8547 | delayed_refs, qrecord)) | ||
8546 | kfree(qrecord); | 8548 | kfree(qrecord); |
8547 | spin_unlock(&delayed_refs->lock); | 8549 | spin_unlock(&delayed_refs->lock); |
8548 | 8550 | ||
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index 9d4c05b14f6e..13e28d8a7d42 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c | |||
@@ -1453,9 +1453,10 @@ int btrfs_qgroup_prepare_account_extents(struct btrfs_trans_handle *trans, | |||
1453 | return ret; | 1453 | return ret; |
1454 | } | 1454 | } |
1455 | 1455 | ||
1456 | struct btrfs_qgroup_extent_record | 1456 | struct btrfs_qgroup_extent_record * |
1457 | *btrfs_qgroup_insert_dirty_extent(struct btrfs_delayed_ref_root *delayed_refs, | 1457 | btrfs_qgroup_insert_dirty_extent(struct btrfs_fs_info *fs_info, |
1458 | struct btrfs_qgroup_extent_record *record) | 1458 | struct btrfs_delayed_ref_root *delayed_refs, |
1459 | struct btrfs_qgroup_extent_record *record) | ||
1459 | { | 1460 | { |
1460 | struct rb_node **p = &delayed_refs->dirty_extent_root.rb_node; | 1461 | struct rb_node **p = &delayed_refs->dirty_extent_root.rb_node; |
1461 | struct rb_node *parent_node = NULL; | 1462 | struct rb_node *parent_node = NULL; |
@@ -1463,7 +1464,7 @@ struct btrfs_qgroup_extent_record | |||
1463 | u64 bytenr = record->bytenr; | 1464 | u64 bytenr = record->bytenr; |
1464 | 1465 | ||
1465 | assert_spin_locked(&delayed_refs->lock); | 1466 | assert_spin_locked(&delayed_refs->lock); |
1466 | trace_btrfs_qgroup_insert_dirty_extent(record); | 1467 | trace_btrfs_qgroup_insert_dirty_extent(fs_info, record); |
1467 | 1468 | ||
1468 | while (*p) { | 1469 | while (*p) { |
1469 | parent_node = *p; | 1470 | parent_node = *p; |
@@ -1595,8 +1596,8 @@ static int qgroup_update_counters(struct btrfs_fs_info *fs_info, | |||
1595 | cur_old_count = btrfs_qgroup_get_old_refcnt(qg, seq); | 1596 | cur_old_count = btrfs_qgroup_get_old_refcnt(qg, seq); |
1596 | cur_new_count = btrfs_qgroup_get_new_refcnt(qg, seq); | 1597 | cur_new_count = btrfs_qgroup_get_new_refcnt(qg, seq); |
1597 | 1598 | ||
1598 | trace_qgroup_update_counters(qg->qgroupid, cur_old_count, | 1599 | trace_qgroup_update_counters(fs_info, qg->qgroupid, |
1599 | cur_new_count); | 1600 | cur_old_count, cur_new_count); |
1600 | 1601 | ||
1601 | /* Rfer update part */ | 1602 | /* Rfer update part */ |
1602 | if (cur_old_count == 0 && cur_new_count > 0) { | 1603 | if (cur_old_count == 0 && cur_new_count > 0) { |
@@ -1687,8 +1688,8 @@ btrfs_qgroup_account_extent(struct btrfs_trans_handle *trans, | |||
1687 | goto out_free; | 1688 | goto out_free; |
1688 | BUG_ON(!fs_info->quota_root); | 1689 | BUG_ON(!fs_info->quota_root); |
1689 | 1690 | ||
1690 | trace_btrfs_qgroup_account_extent(bytenr, num_bytes, nr_old_roots, | 1691 | trace_btrfs_qgroup_account_extent(fs_info, bytenr, num_bytes, |
1691 | nr_new_roots); | 1692 | nr_old_roots, nr_new_roots); |
1692 | 1693 | ||
1693 | qgroups = ulist_alloc(GFP_NOFS); | 1694 | qgroups = ulist_alloc(GFP_NOFS); |
1694 | if (!qgroups) { | 1695 | if (!qgroups) { |
@@ -1759,7 +1760,7 @@ int btrfs_qgroup_account_extents(struct btrfs_trans_handle *trans, | |||
1759 | record = rb_entry(node, struct btrfs_qgroup_extent_record, | 1760 | record = rb_entry(node, struct btrfs_qgroup_extent_record, |
1760 | node); | 1761 | node); |
1761 | 1762 | ||
1762 | trace_btrfs_qgroup_account_extents(record); | 1763 | trace_btrfs_qgroup_account_extents(fs_info, record); |
1763 | 1764 | ||
1764 | if (!ret) { | 1765 | if (!ret) { |
1765 | /* | 1766 | /* |
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h index ecb2c143ef75..710887c06aaf 100644 --- a/fs/btrfs/qgroup.h +++ b/fs/btrfs/qgroup.h | |||
@@ -63,9 +63,10 @@ void btrfs_free_qgroup_config(struct btrfs_fs_info *fs_info); | |||
63 | struct btrfs_delayed_extent_op; | 63 | struct btrfs_delayed_extent_op; |
64 | int btrfs_qgroup_prepare_account_extents(struct btrfs_trans_handle *trans, | 64 | int btrfs_qgroup_prepare_account_extents(struct btrfs_trans_handle *trans, |
65 | struct btrfs_fs_info *fs_info); | 65 | struct btrfs_fs_info *fs_info); |
66 | struct btrfs_qgroup_extent_record | 66 | struct btrfs_qgroup_extent_record * |
67 | *btrfs_qgroup_insert_dirty_extent(struct btrfs_delayed_ref_root *delayed_refs, | 67 | btrfs_qgroup_insert_dirty_extent(struct btrfs_fs_info *fs_info, |
68 | struct btrfs_qgroup_extent_record *record); | 68 | struct btrfs_delayed_ref_root *delayed_refs, |
69 | struct btrfs_qgroup_extent_record *record); | ||
69 | int | 70 | int |
70 | btrfs_qgroup_account_extent(struct btrfs_trans_handle *trans, | 71 | btrfs_qgroup_account_extent(struct btrfs_trans_handle *trans, |
71 | struct btrfs_fs_info *fs_info, | 72 | struct btrfs_fs_info *fs_info, |
@@ -88,7 +89,7 @@ static inline void btrfs_qgroup_free_delayed_ref(struct btrfs_fs_info *fs_info, | |||
88 | u64 ref_root, u64 num_bytes) | 89 | u64 ref_root, u64 num_bytes) |
89 | { | 90 | { |
90 | btrfs_qgroup_free_refroot(fs_info, ref_root, num_bytes); | 91 | btrfs_qgroup_free_refroot(fs_info, ref_root, num_bytes); |
91 | trace_btrfs_qgroup_free_delayed_ref(ref_root, num_bytes); | 92 | trace_btrfs_qgroup_free_delayed_ref(fs_info, ref_root, num_bytes); |
92 | } | 93 | } |
93 | void assert_qgroups_uptodate(struct btrfs_trans_handle *trans); | 94 | void assert_qgroups_uptodate(struct btrfs_trans_handle *trans); |
94 | 95 | ||
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 208b15e7a171..d965abbcac8e 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -1171,7 +1171,7 @@ int btrfs_sync_fs(struct super_block *sb, int wait) | |||
1171 | struct btrfs_fs_info *fs_info = btrfs_sb(sb); | 1171 | struct btrfs_fs_info *fs_info = btrfs_sb(sb); |
1172 | struct btrfs_root *root = fs_info->tree_root; | 1172 | struct btrfs_root *root = fs_info->tree_root; |
1173 | 1173 | ||
1174 | trace_btrfs_sync_fs(wait); | 1174 | trace_btrfs_sync_fs(fs_info, wait); |
1175 | 1175 | ||
1176 | if (!wait) { | 1176 | if (!wait) { |
1177 | filemap_flush(fs_info->btree_inode->i_mapping); | 1177 | filemap_flush(fs_info->btree_inode->i_mapping); |