Btrfs: add tracepoint for adding block groups
authorJosef Bacik <jbacik@fb.com>
Fri, 25 Mar 2016 17:25:52 +0000 (13:25 -0400)
committerDavid Sterba <dsterba@suse.com>
Thu, 7 Jul 2016 16:45:53 +0000 (18:45 +0200)
I'm writing a tool to visualize the enospc system inside btrfs, I need this
tracepoint in order to keep track of the block groups in the system.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-tree.c
include/trace/events/btrfs.h

index a1355a33e7e954266bedd2be735ad092e6d4331c..aae7b04afa9f895af2e46242382c6e08322580f1 100644 (file)
@@ -9994,6 +9994,7 @@ int btrfs_read_block_groups(struct btrfs_root *root)
                        goto error;
                }
 
+               trace_btrfs_add_block_group(root->fs_info, cache, 0);
                ret = update_space_info(info, cache->flags, found_key.offset,
                                        btrfs_block_group_used(&cache->item),
                                        cache->bytes_super, &space_info);
@@ -10164,6 +10165,7 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans,
         * Now that our block group has its ->space_info set and is inserted in
         * the rbtree, update the space info's counters.
         */
+       trace_btrfs_add_block_group(root->fs_info, cache, 1);
        ret = update_space_info(root->fs_info, cache->flags, size, bytes_used,
                                cache->bytes_super, &cache->space_info);
        if (ret) {
index e90e82ad68754cc8776935961275631507695ac4..985e01b6c849d7459ddda406205093103ebaafe2 100644 (file)
@@ -440,6 +440,46 @@ TRACE_EVENT(btrfs_sync_fs,
        TP_printk("wait = %d", __entry->wait)
 );
 
+TRACE_EVENT(btrfs_add_block_group,
+
+       TP_PROTO(struct btrfs_fs_info *fs_info,
+                struct btrfs_block_group_cache *block_group, int create),
+
+       TP_ARGS(fs_info, block_group, create),
+
+       TP_STRUCT__entry(
+               __array(        u8,     fsid,   BTRFS_UUID_SIZE )
+               __field(        u64,    offset                  )
+               __field(        u64,    size                    )
+               __field(        u64,    flags                   )
+               __field(        u64,    bytes_used              )
+               __field(        u64,    bytes_super             )
+               __field(        int,    create                  )
+       ),
+
+       TP_fast_assign(
+               memcpy(__entry->fsid, fs_info->fsid, BTRFS_UUID_SIZE);
+               __entry->offset         = block_group->key.objectid;
+               __entry->size           = block_group->key.offset;
+               __entry->flags          = block_group->flags;
+               __entry->bytes_used     =
+                       btrfs_block_group_used(&block_group->item);
+               __entry->bytes_super    = block_group->bytes_super;
+               __entry->create         = create;
+       ),
+
+       TP_printk("%pU: block_group offset = %llu, size = %llu, "
+                 "flags = %llu(%s), bytes_used = %llu, bytes_super = %llu, "
+                 "create = %d", __entry->fsid,
+                 (unsigned long long)__entry->offset,
+                 (unsigned long long)__entry->size,
+                 (unsigned long long)__entry->flags,
+                 __print_flags((unsigned long)__entry->flags, "|",
+                               BTRFS_GROUP_FLAGS),
+                 (unsigned long long)__entry->bytes_used,
+                 (unsigned long long)__entry->bytes_super, __entry->create)
+);
+
 #define show_ref_action(action)                                                \
        __print_symbolic(action,                                        \
                { BTRFS_ADD_DELAYED_REF,    "ADD_DELAYED_REF" },        \