Add btrfs file item tracepoints
authorMichael Jeanson <mjeanson@efficios.com>
Thu, 7 Jun 2018 19:48:31 +0000 (15:48 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 7 Jun 2018 20:09:19 +0000 (16:09 -0400)
See upstream commit:

  commit 09ed2f165cb3449237dec842b3564044e12d22cb
  Author: Liu Bo <bo.li.liu@oracle.com>
  Date:   Fri Mar 10 11:09:48 2017 -0800

    Btrfs: add file item tracepoints

    While debugging truncate problems, I found that these tracepoints could
    help us quickly know what went wrong.

    Two sets of tracepoints are created to track regular/prealloc file item
    and inline file item respectively, I put inline as a separate one since
    what inline file items cares about are way less than the regular one.

    This adds four tracepoints:
    - btrfs_get_extent_show_fi_regular
    - btrfs_get_extent_show_fi_inline
    - btrfs_truncate_show_fi_regular
    - btrfs_truncate_show_fi_inline

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
instrumentation/events/lttng-module/btrfs.h

index c413e921bd69f292bcd292ede0fae8afa6010b49..6ef21e0013b57cc4be429cf29ee6582a2299a530 100644 (file)
@@ -291,6 +291,89 @@ LTTNG_TRACEPOINT_EVENT(btrfs_handle_em_exist,
 )
 #endif
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0))
+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__file_extent_item_regular,
+
+       TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
+                struct btrfs_file_extent_item *fi, u64 start),
+
+       TP_ARGS(bi, l, fi, start),
+
+       TP_FIELDS(
+               ctf_array(u8, fsid, bi->root->fs_info, BTRFS_FSID_SIZE)
+               ctf_integer(u64, root_obj, bi->root->objectid)
+               ctf_integer(u64, ino, btrfs_ino(bi))
+               ctf_integer(loff_t, isize, bi->vfs_inode.i_size)
+               ctf_integer(u64, disk_isize, bi->disk_i_size)
+               ctf_integer(u64, num_bytes, btrfs_file_extent_num_bytes(l, fi))
+               ctf_integer(u64, ram_bytes, btrfs_file_extent_ram_bytes(l, fi))
+               ctf_integer(u64, disk_bytenr, btrfs_file_extent_disk_bytenr(l, fi))
+               ctf_integer(u64, disk_num_bytes, btrfs_file_extent_disk_num_bytes(l, fi))
+               ctf_integer(u64, extent_offset, btrfs_file_extent_offset(l, fi))
+               ctf_integer(u8, extent_type, btrfs_file_extent_type(l, fi))
+               ctf_integer(u8, compression, btrfs_file_extent_compression(l, fi))
+               ctf_integer(u64, extent_start, start)
+               ctf_integer(u64, extent_end, (start + btrfs_file_extent_num_bytes(l, fi)))
+       )
+)
+
+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__file_extent_item_inline,
+
+       TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
+                struct btrfs_file_extent_item *fi, int slot, u64 start),
+
+       TP_ARGS(bi, l, fi, slot, start),
+
+       TP_FIELDS(
+               ctf_array(u8, fsid, bi->root->fs_info, BTRFS_FSID_SIZE)
+               ctf_integer(u64, root_obj, bi->root->objectid)
+               ctf_integer(u64, ino, btrfs_ino(bi))
+               ctf_integer(loff_t, isize, bi->vfs_inode.i_size)
+               ctf_integer(u64, disk_isize, bi->disk_i_size)
+               ctf_integer(u8, extent_type, btrfs_file_extent_type(l, fi))
+               ctf_integer(u8, compression, btrfs_file_extent_compression(l, fi))
+               ctf_integer(u64, extent_start, start)
+               ctf_integer(u64, extent_end, (start + btrfs_file_extent_inline_len(l, slot, fi)))
+       )
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(
+       btrfs__file_extent_item_regular, btrfs_get_extent_show_fi_regular,
+
+       TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
+                struct btrfs_file_extent_item *fi, u64 start),
+
+       TP_ARGS(bi, l, fi, start)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(
+       btrfs__file_extent_item_regular, btrfs_truncate_show_fi_regular,
+
+       TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
+                struct btrfs_file_extent_item *fi, u64 start),
+
+       TP_ARGS(bi, l, fi, start)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(
+       btrfs__file_extent_item_inline, btrfs_get_extent_show_fi_inline,
+
+       TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
+                struct btrfs_file_extent_item *fi, int slot, u64 start),
+
+       TP_ARGS(bi, l, fi, slot, start)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(
+       btrfs__file_extent_item_inline, btrfs_truncate_show_fi_inline,
+
+       TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
+                struct btrfs_file_extent_item *fi, int slot, u64 start),
+
+       TP_ARGS(bi, l, fi, slot, start)
+)
+#endif
+
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
 LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__ordered_extent,
 
This page took 0.027697 seconds and 4 git commands to generate.