#undef TRACE_SYSTEM
#define TRACE_SYSTEM btrfs
-#if !defined(_TRACE_BTRFS_H) || defined(TRACE_HEADER_MULTI_READ)
-#define _TRACE_BTRFS_H
+#if !defined(LTTNG_TRACE_BTRFS_H) || defined(TRACE_HEADER_MULTI_READ)
+#define LTTNG_TRACE_BTRFS_H
+#include "../../../probes/lttng-tracepoint-event.h"
#include <linux/writeback.h>
-#include <linux/tracepoint.h>
#include <trace/events/gfpflags.h>
#include <linux/version.h>
{ BTRFS_SHARED_BLOCK_REF_KEY, "SHARED_BLOCK_REF" }, \
{ BTRFS_SHARED_DATA_REF_KEY, "SHARED_DATA_REF" })
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
+#define __show_root_type(obj) \
+ __print_symbolic_u64(obj, \
+ { BTRFS_ROOT_TREE_OBJECTID, "ROOT_TREE" }, \
+ { BTRFS_EXTENT_TREE_OBJECTID, "EXTENT_TREE" }, \
+ { BTRFS_CHUNK_TREE_OBJECTID, "CHUNK_TREE" }, \
+ { BTRFS_DEV_TREE_OBJECTID, "DEV_TREE" }, \
+ { BTRFS_FS_TREE_OBJECTID, "FS_TREE" }, \
+ { BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR" }, \
+ { BTRFS_CSUM_TREE_OBJECTID, "CSUM_TREE" }, \
+ { BTRFS_TREE_LOG_OBJECTID, "TREE_LOG" }, \
+ { BTRFS_QUOTA_TREE_OBJECTID, "QUOTA_TREE" }, \
+ { BTRFS_TREE_RELOC_OBJECTID, "TREE_RELOC" }, \
+ { BTRFS_UUID_TREE_OBJECTID, "UUID_RELOC" }, \
+ { BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" })
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
+#define __show_root_type(obj) \
+ __print_symbolic_u64(obj, \
+ { BTRFS_ROOT_TREE_OBJECTID, "ROOT_TREE" }, \
+ { BTRFS_EXTENT_TREE_OBJECTID, "EXTENT_TREE" }, \
+ { BTRFS_CHUNK_TREE_OBJECTID, "CHUNK_TREE" }, \
+ { BTRFS_DEV_TREE_OBJECTID, "DEV_TREE" }, \
+ { BTRFS_FS_TREE_OBJECTID, "FS_TREE" }, \
+ { BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR" }, \
+ { BTRFS_CSUM_TREE_OBJECTID, "CSUM_TREE" }, \
+ { BTRFS_TREE_LOG_OBJECTID, "TREE_LOG" }, \
+ { BTRFS_QUOTA_TREE_OBJECTID, "QUOTA_TREE" }, \
+ { BTRFS_TREE_RELOC_OBJECTID, "TREE_RELOC" }, \
+ { BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" })
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
#define __show_root_type(obj) \
__print_symbolic_u64(obj, \
{ BTRFS_ROOT_TREE_OBJECTID, "ROOT_TREE" }, \
{ BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" })
#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
+#define show_root_type(obj) \
+ obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) || \
+ (obj >= BTRFS_ROOT_TREE_OBJECTID && \
+ obj <= BTRFS_QUOTA_TREE_OBJECTID)) ? __show_root_type(obj) : "-"
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
+#define show_root_type(obj) \
+ obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) || \
+ (obj >= BTRFS_ROOT_TREE_OBJECTID && \
+ obj <= BTRFS_CSUM_TREE_OBJECTID)) ? __show_root_type(obj) : "-"
+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
#define show_root_type(obj) \
obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) || \
(obj <= BTRFS_CSUM_TREE_OBJECTID )) ? __show_root_type(obj) : "-"
+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
+
+#define BTRFS_GROUP_FLAGS \
+ { BTRFS_BLOCK_GROUP_DATA, "DATA"}, \
+ { BTRFS_BLOCK_GROUP_SYSTEM, "SYSTEM"}, \
+ { BTRFS_BLOCK_GROUP_METADATA, "METADATA"}, \
+ { BTRFS_BLOCK_GROUP_RAID0, "RAID0"}, \
+ { BTRFS_BLOCK_GROUP_RAID1, "RAID1"}, \
+ { BTRFS_BLOCK_GROUP_DUP, "DUP"}, \
+ { BTRFS_BLOCK_GROUP_RAID10, "RAID10"}, \
+ { BTRFS_BLOCK_GROUP_RAID5, "RAID5"}, \
+ { BTRFS_BLOCK_GROUP_RAID6, "RAID6"}
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
#define BTRFS_GROUP_FLAGS \
{ BTRFS_BLOCK_GROUP_DATA, "DATA"}, \
#endif
-TRACE_EVENT(btrfs_transaction_commit,
+LTTNG_TRACEPOINT_EVENT(btrfs_transaction_commit,
TP_PROTO(struct btrfs_root *root),
(unsigned long long)__entry->generation)
)
-DECLARE_EVENT_CLASS(btrfs__inode,
+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__inode,
TP_PROTO(struct inode *inode),
(unsigned long long)__entry->logged_trans)
)
-DEFINE_EVENT(btrfs__inode, btrfs_inode_new,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__inode, btrfs_inode_new,
TP_PROTO(struct inode *inode),
TP_ARGS(inode)
)
-DEFINE_EVENT(btrfs__inode, btrfs_inode_request,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__inode, btrfs_inode_request,
TP_PROTO(struct inode *inode),
TP_ARGS(inode)
)
-DEFINE_EVENT(btrfs__inode, btrfs_inode_evict,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__inode, btrfs_inode_evict,
TP_PROTO(struct inode *inode),
#define show_map_type(type) \
type, (type >= EXTENT_MAP_LAST_BYTE) ? "-" : __show_map_type(type)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,18,0))
+
+#define show_map_flags(flag) \
+ __print_flags(flag, "|", \
+ { (1 << EXTENT_FLAG_PINNED), "PINNED" },\
+ { (1 << EXTENT_FLAG_COMPRESSED), "COMPRESSED" },\
+ { (1 << EXTENT_FLAG_VACANCY), "VACANCY" },\
+ { (1 << EXTENT_FLAG_PREALLOC), "PREALLOC" },\
+ { (1 << EXTENT_FLAG_LOGGING), "LOGGING" },\
+ { (1 << EXTENT_FLAG_FILLING), "FILLING" },\
+ { (1 << EXTENT_FLAG_FS_MAPPING), "FS_MAPPING" })
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
+
+#define show_map_flags(flag) \
+ __print_flags(flag, "|", \
+ { EXTENT_FLAG_PINNED, "PINNED" }, \
+ { EXTENT_FLAG_COMPRESSED, "COMPRESSED" }, \
+ { EXTENT_FLAG_VACANCY, "VACANCY" }, \
+ { EXTENT_FLAG_PREALLOC, "PREALLOC" }, \
+ { EXTENT_FLAG_LOGGING, "LOGGING" }, \
+ { EXTENT_FLAG_FILLING, "FILLING" })
+
+#else
+
#define show_map_flags(flag) \
__print_flags(flag, "|", \
{ EXTENT_FLAG_PINNED, "PINNED" }, \
{ EXTENT_FLAG_VACANCY, "VACANCY" }, \
{ EXTENT_FLAG_PREALLOC, "PREALLOC" })
-TRACE_EVENT(btrfs_get_extent,
+#endif
+
+LTTNG_TRACEPOINT_EVENT(btrfs_get_extent,
TP_PROTO(struct btrfs_root *root, struct extent_map *map),
__entry->refs, __entry->compress_type)
)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+
+#define show_ordered_flags(flags) \
+ __print_flags(flags, "|", \
+ { (1 << BTRFS_ORDERED_IO_DONE), "IO_DONE" }, \
+ { (1 << BTRFS_ORDERED_COMPLETE), "COMPLETE" }, \
+ { (1 << BTRFS_ORDERED_NOCOW), "NOCOW" }, \
+ { (1 << BTRFS_ORDERED_COMPRESSED), "COMPRESSED" }, \
+ { (1 << BTRFS_ORDERED_PREALLOC), "PREALLOC" }, \
+ { (1 << BTRFS_ORDERED_DIRECT), "DIRECT" }, \
+ { (1 << BTRFS_ORDERED_IOERR), "IOERR" }, \
+ { (1 << BTRFS_ORDERED_UPDATED_ISIZE), "UPDATED_ISIZE" }, \
+ { (1 << BTRFS_ORDERED_LOGGED_CSUM), "LOGGED_CSUM" }, \
+ { (1 << BTRFS_ORDERED_TRUNCATED), "TRUNCATED" })
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
+
+#define show_ordered_flags(flags) \
+ __print_symbolic(flags, \
+ { BTRFS_ORDERED_IO_DONE, "IO_DONE" }, \
+ { BTRFS_ORDERED_COMPLETE, "COMPLETE" }, \
+ { BTRFS_ORDERED_NOCOW, "NOCOW" }, \
+ { BTRFS_ORDERED_COMPRESSED, "COMPRESSED" }, \
+ { BTRFS_ORDERED_PREALLOC, "PREALLOC" }, \
+ { BTRFS_ORDERED_DIRECT, "DIRECT" }, \
+ { BTRFS_ORDERED_IOERR, "IOERR" }, \
+ { BTRFS_ORDERED_UPDATED_ISIZE, "UPDATED_ISIZE" }, \
+ { BTRFS_ORDERED_LOGGED_CSUM, "LOGGED_CSUM" })
+
+#else
+
#define show_ordered_flags(flags) \
__print_symbolic(flags, \
{ BTRFS_ORDERED_IO_DONE, "IO_DONE" }, \
{ BTRFS_ORDERED_PREALLOC, "PREALLOC" }, \
{ BTRFS_ORDERED_DIRECT, "DIRECT" })
-DECLARE_EVENT_CLASS(btrfs__ordered_extent,
+#endif
+
+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__ordered_extent,
TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
__entry->compress_type, __entry->refs)
)
-DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_add,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__ordered_extent, btrfs_ordered_extent_add,
TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
TP_ARGS(inode, ordered)
)
-DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_remove,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__ordered_extent, btrfs_ordered_extent_remove,
TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
TP_ARGS(inode, ordered)
)
-DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_start,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__ordered_extent, btrfs_ordered_extent_start,
TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
TP_ARGS(inode, ordered)
)
-DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_put,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__ordered_extent, btrfs_ordered_extent_put,
TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
TP_ARGS(inode, ordered)
)
-DECLARE_EVENT_CLASS(btrfs__writepage,
+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__writepage,
TP_PROTO(struct page *page, struct inode *inode,
struct writeback_control *wbc),
#endif
)
-DEFINE_EVENT(btrfs__writepage, __extent_writepage,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__writepage, __extent_writepage,
TP_PROTO(struct page *page, struct inode *inode,
struct writeback_control *wbc),
TP_ARGS(page, inode, wbc)
)
-TRACE_EVENT(btrfs_writepage_end_io_hook,
+LTTNG_TRACEPOINT_EVENT(btrfs_writepage_end_io_hook,
TP_PROTO(struct page *page, u64 start, u64 end, int uptodate),
(unsigned long long)__entry->end, __entry->uptodate)
)
-TRACE_EVENT(btrfs_sync_file,
+LTTNG_TRACEPOINT_EVENT(btrfs_sync_file,
TP_PROTO(struct file *file, int datasync),
__entry->datasync)
)
-TRACE_EVENT(btrfs_sync_fs,
+LTTNG_TRACEPOINT_EVENT(btrfs_sync_fs,
TP_PROTO(int wait),
{ BTRFS_UPDATE_DELAYED_HEAD, "UPDATE_DELAYED_HEAD" })
-TRACE_EVENT(btrfs_delayed_tree_ref,
+LTTNG_TRACEPOINT_EVENT(btrfs_delayed_tree_ref,
TP_PROTO(struct btrfs_delayed_ref_node *ref,
struct btrfs_delayed_tree_ref *full_ref,
#endif
)
-TRACE_EVENT(btrfs_delayed_data_ref,
+LTTNG_TRACEPOINT_EVENT(btrfs_delayed_data_ref,
TP_PROTO(struct btrfs_delayed_ref_node *ref,
struct btrfs_delayed_data_ref *full_ref,
#endif
)
-TRACE_EVENT(btrfs_delayed_ref_head,
+LTTNG_TRACEPOINT_EVENT(btrfs_delayed_ref_head,
TP_PROTO(struct btrfs_delayed_ref_node *ref,
struct btrfs_delayed_ref_head *head_ref,
__entry->is_data)
)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
+
+#define show_chunk_type(type) \
+ __print_flags(type, "|", \
+ { BTRFS_BLOCK_GROUP_DATA, "DATA" }, \
+ { BTRFS_BLOCK_GROUP_SYSTEM, "SYSTEM"}, \
+ { BTRFS_BLOCK_GROUP_METADATA, "METADATA"}, \
+ { BTRFS_BLOCK_GROUP_RAID0, "RAID0" }, \
+ { BTRFS_BLOCK_GROUP_RAID1, "RAID1" }, \
+ { BTRFS_BLOCK_GROUP_DUP, "DUP" }, \
+ { BTRFS_BLOCK_GROUP_RAID10, "RAID10"}, \
+ { BTRFS_BLOCK_GROUP_RAID5, "RAID5" }, \
+ { BTRFS_BLOCK_GROUP_RAID6, "RAID6" })
+
+#else
+
#define show_chunk_type(type) \
__print_flags(type, "|", \
{ BTRFS_BLOCK_GROUP_DATA, "DATA" }, \
{ BTRFS_BLOCK_GROUP_DUP, "DUP" }, \
{ BTRFS_BLOCK_GROUP_RAID10, "RAID10"})
-DECLARE_EVENT_CLASS(btrfs__chunk,
+#endif
+
+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__chunk,
TP_PROTO(struct btrfs_root *root, struct map_lookup *map,
u64 offset, u64 size),
show_chunk_type(__entry->type))
)
-DEFINE_EVENT(btrfs__chunk, btrfs_chunk_alloc,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_alloc,
TP_PROTO(struct btrfs_root *root, struct map_lookup *map,
u64 offset, u64 size),
TP_ARGS(root, map, offset, size)
)
-DEFINE_EVENT(btrfs__chunk, btrfs_chunk_free,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_free,
TP_PROTO(struct btrfs_root *root, struct map_lookup *map,
u64 offset, u64 size),
TP_ARGS(root, map, offset, size)
)
-TRACE_EVENT(btrfs_cow_block,
+LTTNG_TRACEPOINT_EVENT(btrfs_cow_block,
TP_PROTO(struct btrfs_root *root, struct extent_buffer *buf,
struct extent_buffer *cow),
)
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-TRACE_EVENT(btrfs_space_reservation,
+LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation,
TP_PROTO(struct btrfs_fs_info *fs_info, char *type, u64 val,
u64 bytes, int reserve),
)
#endif
-DECLARE_EVENT_CLASS(btrfs__reserved_extent,
+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent,
TP_PROTO(struct btrfs_root *root, u64 start, u64 len),
(unsigned long long)__entry->len)
)
-DEFINE_EVENT(btrfs__reserved_extent, btrfs_reserved_extent_alloc,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_alloc,
TP_PROTO(struct btrfs_root *root, u64 start, u64 len),
TP_ARGS(root, start, len)
)
-DEFINE_EVENT(btrfs__reserved_extent, btrfs_reserved_extent_free,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_free,
TP_PROTO(struct btrfs_root *root, u64 start, u64 len),
)
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-TRACE_EVENT(find_free_extent,
+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),
BTRFS_GROUP_FLAGS))
)
-DECLARE_EVENT_CLASS(btrfs__reserve_extent,
+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
TP_PROTO(struct btrfs_root *root,
struct btrfs_block_group_cache *block_group, u64 start,
__entry->start, __entry->len)
)
-DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent,
TP_PROTO(struct btrfs_root *root,
struct btrfs_block_group_cache *block_group, u64 start,
TP_ARGS(root, block_group, start, len)
)
-DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent_cluster,
+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_cluster,
TP_PROTO(struct btrfs_root *root,
struct btrfs_block_group_cache *block_group, u64 start,
TP_ARGS(root, block_group, start, len)
)
-TRACE_EVENT(btrfs_find_cluster,
+LTTNG_TRACEPOINT_EVENT(btrfs_find_cluster,
TP_PROTO(struct btrfs_block_group_cache *block_group, u64 start,
u64 bytes, u64 empty_size, u64 min_bytes),
__entry->bytes, __entry->empty_size, __entry->min_bytes)
)
-TRACE_EVENT(btrfs_failed_cluster_setup,
+LTTNG_TRACEPOINT_EVENT(btrfs_failed_cluster_setup,
TP_PROTO(struct btrfs_block_group_cache *block_group),
TP_printk("block_group = %Lu", __entry->bg_objectid)
)
-TRACE_EVENT(btrfs_setup_cluster,
+LTTNG_TRACEPOINT_EVENT(btrfs_setup_cluster,
TP_PROTO(struct btrfs_block_group_cache *block_group,
struct btrfs_free_cluster *cluster, u64 size, int bitmap),
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-TRACE_EVENT(alloc_extent_state,
+LTTNG_TRACEPOINT_EVENT_MAP(alloc_extent_state,
+
+ btrfs_alloc_extent_state,
TP_PROTO(struct extent_state *state, gfp_t mask, unsigned long IP),
show_gfp_flags(__entry->mask), (void *)__entry->ip)
)
-TRACE_EVENT(free_extent_state,
+LTTNG_TRACEPOINT_EVENT_MAP(free_extent_state,
+
+ btrfs_free_extent_state,
TP_PROTO(struct extent_state *state, unsigned long IP),
)
#endif
-#endif /* _TRACE_BTRFS_H */
+#endif /* LTTNG_TRACE_BTRFS_H */
/* This part must be outside protection */
#include "../../../probes/define_trace.h"