fix: btrfs: tracepoints: output proper root owner for trace_find_free_extent() (v5.10)
authorMichael Jeanson <mjeanson@efficios.com>
Tue, 27 Oct 2020 15:42:23 +0000 (11:42 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 20 Nov 2020 20:34:56 +0000 (15:34 -0500)
See upstream commit :

  commit 437490fed3b0c9ae21af8f70e0f338d34560842b
  Author: Qu Wenruo <wqu@suse.com>
  Date:   Tue Jul 28 09:42:49 2020 +0800

    btrfs: tracepoints: output proper root owner for trace_find_free_extent()

    The current trace event always output result like this:

     find_free_extent: root=2(EXTENT_TREE) len=16384 empty_size=0 flags=4(METADATA)
     find_free_extent: root=2(EXTENT_TREE) len=16384 empty_size=0 flags=4(METADATA)
     find_free_extent: root=2(EXTENT_TREE) len=8192 empty_size=0 flags=1(DATA)
     find_free_extent: root=2(EXTENT_TREE) len=8192 empty_size=0 flags=1(DATA)
     find_free_extent: root=2(EXTENT_TREE) len=4096 empty_size=0 flags=1(DATA)
     find_free_extent: root=2(EXTENT_TREE) len=4096 empty_size=0 flags=1(DATA)

    T's saying we're allocating data extent for EXTENT tree, which is not
    even possible.

    It's because we always use EXTENT tree as the owner for
    trace_find_free_extent() without using the @root from
    btrfs_reserve_extent().

    This patch will change the parameter to use proper @root for
    trace_find_free_extent():

    Now it looks much better:

     find_free_extent: root=5(FS_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)
     find_free_extent: root=5(FS_TREE) len=8192 empty_size=0 flags=1(DATA)
     find_free_extent: root=5(FS_TREE) len=16384 empty_size=0 flags=1(DATA)
     find_free_extent: root=5(FS_TREE) len=4096 empty_size=0 flags=1(DATA)
     find_free_extent: root=5(FS_TREE) len=8192 empty_size=0 flags=1(DATA)
     find_free_extent: root=5(FS_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)
     find_free_extent: root=7(CSUM_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)
     find_free_extent: root=2(EXTENT_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)
     find_free_extent: root=1(ROOT_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1d674064d29b31417e2acffdeb735f5052a87032

include/instrumentation/events/btrfs.h

index f38444bfac11d290c92816cc59dc903d15a1790a..f3062121b00a762fa2da87ec8ef6a2bce8bf177b 100644 (file)
@@ -1856,7 +1856,29 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent,  btrfs_reserved_extent_f
 
 #endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,5,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0) || \
+       LTTNG_KERNEL_RANGE(5,9,6, 5,10,0) || \
+       LTTNG_KERNEL_RANGE(5,4,78, 5,5,0))
+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
+
+       btrfs_find_free_extent,
+
+       TP_PROTO(const struct btrfs_root *root, u64 num_bytes, u64 empty_size,
+                u64 data),
+
+       TP_ARGS(root, num_bytes, empty_size, data),
+
+       TP_FIELDS(
+               ctf_array(u8, fsid, root->lttng_fs_info_fsid, BTRFS_UUID_SIZE)
+               ctf_integer(u64, root_objectid, root->root_key.objectid)
+               ctf_integer(u64, num_bytes, num_bytes)
+               ctf_integer(u64, empty_size, empty_size)
+               ctf_integer(u64, data, data)
+       )
+)
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5,5,0))
+
 LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
 
        btrfs_find_free_extent,
@@ -1874,6 +1896,105 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
        )
 )
 
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,0))
+
+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
+
+       btrfs_find_free_extent,
+
+       TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
+                u64 data),
+
+       TP_ARGS(fs_info, num_bytes, empty_size, data),
+
+       TP_FIELDS(
+               ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
+               ctf_integer(u64, num_bytes, num_bytes)
+               ctf_integer(u64, empty_size, empty_size)
+               ctf_integer(u64, data, data)
+       )
+)
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+
+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
+
+       btrfs_find_free_extent,
+
+       TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
+                u64 data),
+
+       TP_ARGS(fs_info, num_bytes, empty_size, data),
+
+       TP_FIELDS(
+               ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
+               ctf_integer(u64, num_bytes, num_bytes)
+               ctf_integer(u64, empty_size, empty_size)
+               ctf_integer(u64, data, data)
+       )
+)
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
+
+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
+
+       btrfs_find_free_extent,
+
+       TP_PROTO(struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
+                u64 data),
+
+       TP_ARGS(fs_info, num_bytes, empty_size, data),
+
+       TP_FIELDS(
+               ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
+               ctf_integer(u64, num_bytes, num_bytes)
+               ctf_integer(u64, empty_size, empty_size)
+               ctf_integer(u64, data, data)
+       )
+)
+
+#elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \
+       LTTNG_SLE_KERNEL_RANGE(4,4,82,6,0,0, 4,4,82,7,0,0) || \
+       LTTNG_SLE_KERNEL_RANGE(4,4,92,6,0,0, 4,4,92,7,0,0) || \
+       LTTNG_SLE_KERNEL_RANGE(4,4,103,6,0,0, 4,5,0,0,0,0))
+
+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
+
+       btrfs_find_free_extent,
+
+       TP_PROTO(const struct btrfs_root *root, u64 num_bytes, u64 empty_size,
+                u64 data),
+
+       TP_ARGS(root, num_bytes, empty_size, data),
+
+       TP_FIELDS(
+               ctf_integer(u64, root_objectid, root->root_key.objectid)
+               ctf_integer(u64, num_bytes, num_bytes)
+               ctf_integer(u64, empty_size, empty_size)
+               ctf_integer(u64, data, data)
+       )
+)
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+
+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
+
+       btrfs_find_free_extent,
+
+       TP_PROTO(struct btrfs_root *root, u64 num_bytes, u64 empty_size,
+                u64 data),
+
+       TP_ARGS(root, num_bytes, empty_size, data),
+
+       TP_FIELDS(
+               ctf_integer(u64, root_objectid, root->root_key.objectid)
+               ctf_integer(u64, num_bytes, num_bytes)
+               ctf_integer(u64, empty_size, empty_size)
+               ctf_integer(u64, data, data)
+       )
+)
+#endif
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,5,0))
 LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
 
        TP_PROTO(const struct btrfs_block_group *block_group, u64 start,
@@ -1907,22 +2028,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
 )
 
 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,0))
-LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-
-       btrfs_find_free_extent,
-
-       TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
-                u64 data),
-
-       TP_ARGS(fs_info, num_bytes, empty_size, data),
-
-       TP_FIELDS(
-               ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-               ctf_integer(u64, num_bytes, num_bytes)
-               ctf_integer(u64, empty_size, empty_size)
-               ctf_integer(u64, data, data)
-       )
-)
 
 LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
 
@@ -1957,22 +2062,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
 )
 
 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
-LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-
-       btrfs_find_free_extent,
-
-       TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
-                u64 data),
-
-       TP_ARGS(fs_info, num_bytes, empty_size, data),
-
-       TP_FIELDS(
-               ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-               ctf_integer(u64, num_bytes, num_bytes)
-               ctf_integer(u64, empty_size, empty_size)
-               ctf_integer(u64, data, data)
-       )
-)
 
 LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
 
@@ -2011,23 +2100,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
 
 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
 
-LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-
-       btrfs_find_free_extent,
-
-       TP_PROTO(struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
-                u64 data),
-
-       TP_ARGS(fs_info, num_bytes, empty_size, data),
-
-       TP_FIELDS(
-               ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-               ctf_integer(u64, num_bytes, num_bytes)
-               ctf_integer(u64, empty_size, empty_size)
-               ctf_integer(u64, data, data)
-       )
-)
-
 LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
 
        TP_PROTO(struct btrfs_fs_info *fs_info,
@@ -2066,23 +2138,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
        LTTNG_SLE_KERNEL_RANGE(4,4,92,6,0,0, 4,4,92,7,0,0) || \
        LTTNG_SLE_KERNEL_RANGE(4,4,103,6,0,0, 4,5,0,0,0,0))
 
-LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-
-       btrfs_find_free_extent,
-
-       TP_PROTO(const struct btrfs_root *root, u64 num_bytes, u64 empty_size,
-                u64 data),
-
-       TP_ARGS(root, num_bytes, empty_size, data),
-
-       TP_FIELDS(
-               ctf_integer(u64, root_objectid, root->root_key.objectid)
-               ctf_integer(u64, num_bytes, num_bytes)
-               ctf_integer(u64, empty_size, empty_size)
-               ctf_integer(u64, data, data)
-       )
-)
-
 LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
 
        TP_PROTO(const struct btrfs_root *root,
@@ -2120,23 +2175,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
 
 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
 
-LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-
-       btrfs_find_free_extent,
-
-       TP_PROTO(struct btrfs_root *root, u64 num_bytes, u64 empty_size,
-                u64 data),
-
-       TP_ARGS(root, num_bytes, empty_size, data),
-
-       TP_FIELDS(
-               ctf_integer(u64, root_objectid, root->root_key.objectid)
-               ctf_integer(u64, num_bytes, num_bytes)
-               ctf_integer(u64, empty_size, empty_size)
-               ctf_integer(u64, data, data)
-       )
-)
-
 LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
 
        TP_PROTO(struct btrfs_root *root,
This page took 0.028281 seconds and 5 git commands to generate.