From b42b2955e13153b7283f20613f15fe98e6427baf Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Thu, 7 Jun 2018 15:48:31 -0400 Subject: [PATCH] Add btrfs file item tracepoints See upstream commit: commit 09ed2f165cb3449237dec842b3564044e12d22cb Author: Liu Bo 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 Signed-off-by: Mathieu Desnoyers --- instrumentation/events/lttng-module/btrfs.h | 83 +++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/instrumentation/events/lttng-module/btrfs.h b/instrumentation/events/lttng-module/btrfs.h index c413e921..6ef21e00 100644 --- a/instrumentation/events/lttng-module/btrfs.h +++ b/instrumentation/events/lttng-module/btrfs.h @@ -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, -- 2.34.1