Tracepoint updates
Subsystems (2)
David Sterba
maintainercover Tracepoint updates
Switch the inode number type to u64, plus other cleanups and fixups.
David Sterba (7):
btrfs: tracepoints, use correct type for inode number
btrfs: tracepoints, use %llu instead of %Lu
btrfs: tracepoints, drop unnecessary ULL casts
btrfs: tracepoints, fix whitespace in strings
btrfs: tracepoints, use extended format with UUID where possible
btrfs: tests: pass fs_info to extent_map tests
btrfs: use fs_info for btrfs_handle_em_exist tracepoint
fs/btrfs/extent_map.c | 6 +- fs/btrfs/extent_map.h | 3 +- fs/btrfs/inode.c | 2 +- fs/btrfs/tests/extent-map-tests.c | 60 ++++++---- include/trace/events/btrfs.h | 225 +++++++++++++++++++------------------- 5 files changed, 158 insertions(+), 138 deletions(-)
Signature · 1 line
2.16.2
David Sterba
maintainerPATCH 1/7 btrfs: tracepoints, use correct type for inode number
The size of ino_t depends on 32/64bit architecture type. Btrfs stores the full 64bit inode anyway so we should use it.
--- include/trace/events/btrfs.h | 47 ++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 23 deletions(-)
include/trace/events/btrfs.h +24 -23
@@ -133,7 +133,7 @@ DECLARE_EVENT_CLASS(btrfs__inode,TP_ARGS (inode),TP_STRUCT__entry_btrfs ( - __field( ino_t, ino ) + __field( u64, ino ) __field( blkcnt_t, blocks ) __field( u64, disk_i_size ) __field( u64, generation )
@@ -143,7 +143,7 @@ DECLARE_EVENT_CLASS(btrfs__inode, ),TP_fast_assign_btrfs (btrfs_sb (inode->i_sb), - __entry->ino = inode->i_ino; + __entry->ino = btrfs_ino(BTRFS_I(inode)); __entry->blocks = inode->i_blocks; __entry->disk_i_size =BTRFS_I (inode)->disk_i_size; __entry->generation =BTRFS_I (inode)->generation;
@@ -153,11 +153,11 @@ DECLARE_EVENT_CLASS(btrfs__inode,BTRFS_I (inode)->root->root_key.objectid; ), - TP_printk_btrfs("root=%llu(%s) gen=%llu ino=%lu blocks=%llu " + TP_printk_btrfs("root=%llu(%s) gen=%llu ino=%llu blocks=%llu " "disk_i_size=%llu last_trans=%llu logged_trans=%llu", show_root_type(__entry->root_objectid), (unsigned long long)__entry->generation, - (unsigned long)__entry->ino, + (unsigned long long)__entry->ino, (unsigned long long)__entry->blocks, (unsigned long long)__entry->disk_i_size, (unsigned long long)__entry->last_trans,
@@ -443,7 +443,7 @@ DECLARE_EVENT_CLASS(btrfs__ordered_extent, TP_ARGS(inode, ordered),TP_STRUCT__entry_btrfs ( -__field (ino_t ,ino ) +__field (u64 ,ino )__field ( u64, file_offset )__field ( u64, start ) __field( u64, len )
@@ -457,7 +457,7 @@ DECLARE_EVENT_CLASS(btrfs__ordered_extent, ),TP_fast_assign_btrfs (btrfs_sb (inode->i_sb), - __entry->ino = inode->i_ino; + __entry->ino = btrfs_ino(BTRFS_I(inode)); __entry->file_offset = ordered->file_offset; __entry->start = ordered->start; __entry->len = ordered->len;
@@ -528,7 +528,7 @@ DECLARE_EVENT_CLASS(btrfs__writepage, TP_ARGS(page, inode, wbc),TP_STRUCT__entry_btrfs ( -__field (ino_t ,ino ) +__field (u64 ,ino )__field ( pgoff_t, index )__field ( long, nr_to_write ) __field( long, pages_skipped )
@@ -542,7 +542,7 @@ DECLARE_EVENT_CLASS(btrfs__writepage, ),TP_fast_assign_btrfs (btrfs_sb (inode->i_sb), - __entry->ino = inode->i_ino; + __entry->ino = btrfs_ino(BTRFS_I(inode)); __entry->index = page->index; __entry->nr_to_write = wbc->nr_to_write; __entry->pages_skipped = wbc->pages_skipped;
@@ -556,12 +556,12 @@ DECLARE_EVENT_CLASS(btrfs__writepage,BTRFS_I (inode)->root->root_key.objectid; ), - TP_printk_btrfs("root=%llu(%s) ino=%lu page_index=%lu " + TP_printk_btrfs("root=%llu(%s) ino=%llu page_index=%lu " "nr_to_write=%ld pages_skipped=%ld range_start=%llu " "range_end=%llu for_kupdate=%d " "for_reclaim=%d range_cyclic=%d writeback_index=%lu", show_root_type(__entry->root_objectid), - (unsigned long)__entry->ino, __entry->index, + (unsigned long long)__entry->ino, __entry->index, __entry->nr_to_write, __entry->pages_skipped, __entry->range_start, __entry->range_end, __entry->for_kupdate,
@@ -584,7 +584,7 @@ TRACE_EVENT(btrfs_writepage_end_io_hook,TP_ARGS (page, start, end, uptodate),TP_STRUCT__entry_btrfs ( -__field (ino_t ,ino ) + __field( u64, ino ) __field( pgoff_t, index ) __field( u64, start ) __field( u64, end )
@@ -593,7 +593,7 @@ TRACE_EVENT(btrfs_writepage_end_io_hook, ),TP_fast_assign_btrfs (btrfs_sb (page->mapping->host->i_sb), - __entry->ino = page->mapping->host->i_ino; + __entry->ino = btrfs_ino(BTRFS_I(page->mapping->host)); __entry->index = page->index; __entry->start = start; __entry->end = end;
@@ -602,10 +602,10 @@ TRACE_EVENT(btrfs_writepage_end_io_hook,BTRFS_I (page->mapping->host)->root->root_key.objectid; ), -TP_printk_btrfs ("root=%llu(%s) ino=%lu page_index=%lu start=%llu " +TP_printk_btrfs ("root=%llu(%s) ino=%llu page_index=%lu start=%llu " "end=%llu uptodate=%d" ,show_root_type (__entry->root_objectid), - (unsigned long )__entry->ino, (unsigned long )__entry->index, + (unsigned long long )__entry->ino, (unsigned long )__entry->index, (unsigned long long )__entry->start, (unsigned long long )__entry->end, __entry->uptodate) );
@@ -617,8 +617,8 @@ TRACE_EVENT(btrfs_sync_file, TP_ARGS(file, datasync),TP_STRUCT__entry_btrfs ( -__field (ino_t ,ino ) -__field ( ino_t, parent ) +__field (u64 ,ino ) +__field ( u64, parent )__field ( int, datasync )__field ( u64, root_objectid ) ),
@@ -628,16 +628,17 @@ TRACE_EVENT(btrfs_sync_file,const struct inode *inode =d_inode (dentry);TP_fast_assign_fsid (btrfs_sb (file->f_path.dentry->d_sb)); - __entry->ino = inode->i_ino; - __entry->parent =d_inode (dentry->d_parent)->i_ino; + __entry->ino =btrfs_ino (BTRFS_I (inode)); + __entry->parent =btrfs_ino (BTRFS_I (d_inode (dentry->d_parent))); __entry->datasync = datasync; __entry->root_objectid =BTRFS_I (inode)->root->root_key.objectid; ), -TP_printk_btrfs ("root=%llu(%s) ino=%ld parent=%ld datasync=%d" , +TP_printk_btrfs ("root=%llu(%s) ino=%llu parent=%llu datasync=%d" ,show_root_type (__entry->root_objectid), - (unsigned long )__entry->ino, (unsigned long )__entry->parent, + (unsigned long long )__entry->ino, + (unsigned long long )__entry->parent, __entry->datasync) );
@@ -1476,7 +1477,7 @@ DECLARE_EVENT_CLASS(btrfs__qgroup_rsv_data,TP_STRUCT__entry_btrfs (__field (u64 ,rootid ) - __field( unsigned long, ino ) +__field ( u64, ino )__field ( u64, start )__field ( u64, len ) __field( u64, reserved )
@@ -1485,14 +1486,14 @@ DECLARE_EVENT_CLASS(btrfs__qgroup_rsv_data,TP_fast_assign_btrfs (btrfs_sb (inode->i_sb), __entry->rootid = BTRFS_I(inode)->root->objectid; - __entry->ino = inode->i_ino; + __entry->ino =btrfs_ino (BTRFS_I (inode)); __entry->start = start; __entry->len = len; __entry->reserved = reserved; __entry->op = op; ), - TP_printk_btrfs("root=%llu ino=%lu start=%llu len=%llu reserved=%llu op=%s", + TP_printk_btrfs("root=%llu ino=%llu start=%llu len=%llu reserved=%llu op=%s", __entry->rootid, __entry->ino, __entry->start, __entry->len, __entry->reserved, __print_flags((unsigned long)__entry->op, "",
Signature · 1 line
2.16.2
David Sterba
maintainerPATCH 2/7 btrfs: tracepoints, use %llu instead of %Lu
In reply to David SterbaFor consistency, use the %llu form.
--- include/trace/events/btrfs.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
include/trace/events/btrfs.h +9 -9
@@ -1002,7 +1002,7 @@ TRACE_EVENT(btrfs_space_reservation, __entry->reserve = reserve; ), -TP_printk_btrfs ("%s: %Lu %s %Lu" ,__get_str (type), __entry->val, +TP_printk_btrfs ("%s: %llu %s %llu" ,__get_str (type), __entry->val, __entry->reserve ?"reserve" :"release" , __entry->bytes) );
@@ -1141,7 +1141,7 @@ TRACE_EVENT(find_free_extent, __entry->data = data; ), - TP_printk_btrfs("root=%Lu(%s) len=%Lu empty_size=%Lu flags=%Lu(%s)", + TP_printk_btrfs("root=%llu(%s) len=%llu empty_size=%llu flags=%llu(%s)", show_root_type(BTRFS_EXTENT_TREE_OBJECTID), __entry->num_bytes, __entry->empty_size, __entry->data, __print_flags((unsigned long)__entry->data, "|",
@@ -1170,8 +1170,8 @@ DECLARE_EVENT_CLASS(btrfs__reserve_extent, __entry->len = len; ), - TP_printk_btrfs("root=%Lu(%s) block_group=%Lu flags=%Lu(%s) " - "start=%Lu len=%Lu", + TP_printk_btrfs("root=%llu(%s) block_group=%llu flags=%llu(%s) " + "start=%llu len=%llu", show_root_type(BTRFS_EXTENT_TREE_OBJECTID), __entry->bg_objectid, __entry->flags, __print_flags((unsigned long)__entry->flags,
@@ -1222,8 +1222,8 @@ TRACE_EVENT(btrfs_find_cluster, __entry->min_bytes = min_bytes; ), - TP_printk_btrfs("block_group=%Lu flags=%Lu(%s) start=%Lu len=%Lu " - "empty_size=%Lu min_bytes=%Lu", __entry->bg_objectid, + TP_printk_btrfs("block_group=%llu flags=%llu(%s) start=%llu len=%llu " + "empty_size=%llu min_bytes=%llu", __entry->bg_objectid, __entry->flags, __print_flags((unsigned long)__entry->flags, "|", BTRFS_GROUP_FLAGS), __entry->start,
@@ -1244,7 +1244,7 @@ TRACE_EVENT(btrfs_failed_cluster_setup, __entry->bg_objectid = block_group->key.objectid; ), -TP_printk_btrfs ("block_group=%Lu" , __entry->bg_objectid) +TP_printk_btrfs ("block_group=%llu" , __entry->bg_objectid) ); TRACE_EVENT(btrfs_setup_cluster,
@@ -1273,8 +1273,8 @@ TRACE_EVENT(btrfs_setup_cluster, __entry->bitmap = bitmap; ), - TP_printk_btrfs("block_group=%Lu flags=%Lu(%s) window_start=%Lu " - "size=%Lu max_size=%Lu bitmap=%d", + TP_printk_btrfs("block_group=%llu flags=%llu(%s) window_start=%llu " + "size=%llu max_size=%llu bitmap=%d", __entry->bg_objectid, __entry->flags, __print_flags((unsigned long)__entry->flags, "|",
Signature · 1 line
2.16.2
David Sterba
maintainerPATCH 3/7 btrfs: tracepoints, drop unnecessary ULL casts
In reply to David SterbaThe (unsigned long long) casts are not necessary since long ago.
--- include/trace/events/btrfs.h | 124 +++++++++++++++++++++---------------------- 1 file changed, 62 insertions(+), 62 deletions(-)
include/trace/events/btrfs.h +62 -62
@@ -123,7 +123,7 @@ TRACE_EVENT(btrfs_transaction_commit,TP_printk_btrfs ("root = %llu(%s), gen = %llu" ,show_root_type (__entry->root_objectid), - (unsigned long long )__entry->generation) + __entry->generation) ); DECLARE_EVENT_CLASS(btrfs__inode,
@@ -156,12 +156,12 @@ DECLARE_EVENT_CLASS(btrfs__inode,TP_printk_btrfs ("root=%llu(%s) gen=%llu ino=%llu blocks=%llu " "disk_i_size=%llu last_trans=%llu logged_trans=%llu" ,show_root_type (__entry->root_objectid), - (unsigned long long )__entry->generation, - (unsigned long long )__entry->ino, + __entry->generation, + __entry->ino, (unsigned long long )__entry->blocks, - (unsigned long long )__entry->disk_i_size, - (unsigned long long )__entry->last_trans, - (unsigned long long )__entry->logged_trans) + __entry->disk_i_size, + __entry->last_trans, + __entry->logged_trans) ); DEFINE_EVENT(btrfs__inode, btrfs_inode_new,
@@ -244,12 +244,12 @@ TRACE_EVENT_CONDITION(btrfs_get_extent,"block_len=%llu flags=%s refs=%u " "compress_type=%u" ,show_root_type (__entry->root_objectid), - (unsigned long long )__entry->ino, - (unsigned long long )__entry->start, - (unsigned long long )__entry->len, - (unsigned long long )__entry->orig_start, + __entry->ino, + __entry->start, + __entry->len, + __entry->orig_start,show_map_type (__entry->block_start), - (unsigned long long )__entry->block_len, + __entry->block_len,show_map_flags (__entry->flags), __entry->refs, __entry->compress_type) );
@@ -281,12 +281,12 @@ TRACE_EVENT(btrfs_handle_em_exist,TP_printk ("start=%llu len=%llu " "existing(start=%llu len=%llu) " "em(start=%llu len=%llu)" , - (unsigned long long )__entry->start, - (unsigned long long )__entry->len, - (unsigned long long )__entry->e_start, - (unsigned long long )__entry->e_len, - (unsigned long long )__entry->map_start, - (unsigned long long )__entry->map_len) + __entry->start, + __entry->len, + __entry->e_start, + __entry->e_len, + __entry->map_start, + __entry->map_len) );/* file extent item */
@@ -477,13 +477,13 @@ DECLARE_EVENT_CLASS(btrfs__ordered_extent,"bytes_left=%llu flags=%s compress_type=%d " "refs=%d" ,show_root_type (__entry->root_objectid), - (unsigned long long )__entry->ino, - (unsigned long long )__entry->file_offset, - (unsigned long long )__entry->start, - (unsigned long long )__entry->len, - (unsigned long long )__entry->disk_len, - (unsigned long long )__entry->truncated_len, - (unsigned long long )__entry->bytes_left, + __entry->ino, + __entry->file_offset, + __entry->start, + __entry->len, + __entry->disk_len, + __entry->truncated_len, + __entry->bytes_left,show_ordered_flags (__entry->flags), __entry->compress_type, __entry->refs) );
@@ -561,7 +561,7 @@ DECLARE_EVENT_CLASS(btrfs__writepage,"range_end=%llu for_kupdate=%d " "for_reclaim=%d range_cyclic=%d writeback_index=%lu" ,show_root_type (__entry->root_objectid), - (unsigned long long )__entry->ino, __entry->index, + __entry->ino, __entry->index, __entry->nr_to_write, __entry->pages_skipped, __entry->range_start, __entry->range_end, __entry->for_kupdate,
@@ -605,9 +605,9 @@ TRACE_EVENT(btrfs_writepage_end_io_hook,TP_printk_btrfs ("root=%llu(%s) ino=%llu page_index=%lu start=%llu " "end=%llu uptodate=%d" ,show_root_type (__entry->root_objectid), - (unsigned long long )__entry->ino, (unsigned long )__entry->index, - (unsigned long long )__entry->start, - (unsigned long long )__entry->end, __entry->uptodate) + __entry->ino, (unsigned long )__entry->index, + __entry->start, + __entry->end, __entry->uptodate) ); TRACE_EVENT(btrfs_sync_file,
@@ -637,8 +637,8 @@ TRACE_EVENT(btrfs_sync_file,TP_printk_btrfs ("root=%llu(%s) ino=%llu parent=%llu datasync=%d" ,show_root_type (__entry->root_objectid), - (unsigned long long )__entry->ino, - (unsigned long long )__entry->parent, + __entry->ino, + __entry->parent, __entry->datasync) );
@@ -690,13 +690,13 @@ TRACE_EVENT(btrfs_add_block_group,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, + __entry->offset, + __entry->size, + __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) + __entry->bytes_used, + __entry->bytes_super, __entry->create) );#define show_ref_action (action) \
@@ -741,13 +741,13 @@ DECLARE_EVENT_CLASS(btrfs_delayed_tree_ref,TP_printk_btrfs ("bytenr=%llu num_bytes=%llu action=%s " "parent=%llu(%s) ref_root=%llu(%s) level=%d " "type=%s seq=%llu" , - (unsigned long long )__entry->bytenr, - (unsigned long long )__entry->num_bytes, + __entry->bytenr, + __entry->num_bytes,show_ref_action (__entry->action),show_root_type (__entry->parent),show_root_type (__entry->ref_root), __entry->level,show_ref_type (__entry->type), - (unsigned long long )__entry->seq) + __entry->seq) ); DEFINE_EVENT(btrfs_delayed_tree_ref, add_delayed_tree_ref,
@@ -806,15 +806,15 @@ DECLARE_EVENT_CLASS(btrfs_delayed_data_ref,TP_printk_btrfs ("bytenr=%llu num_bytes=%llu action=%s " "parent=%llu(%s) ref_root=%llu(%s) owner=%llu " "offset=%llu type=%s seq=%llu" , - (unsigned long long )__entry->bytenr, - (unsigned long long )__entry->num_bytes, + __entry->bytenr, + __entry->num_bytes,show_ref_action (__entry->action),show_root_type (__entry->parent),show_root_type (__entry->ref_root), - (unsigned long long )__entry->owner, - (unsigned long long )__entry->offset, + __entry->owner, + __entry->offset,show_ref_type (__entry->type), - (unsigned long long )__entry->seq) + __entry->seq) ); DEFINE_EVENT(btrfs_delayed_data_ref, add_delayed_data_ref,
@@ -860,8 +860,8 @@ DECLARE_EVENT_CLASS(btrfs_delayed_ref_head, ),TP_printk_btrfs ("bytenr=%llu num_bytes=%llu action=%s is_data=%d" , - (unsigned long long )__entry->bytenr, - (unsigned long long )__entry->num_bytes, + __entry->bytenr, + __entry->num_bytes,show_ref_action (__entry->action), __entry->is_data) );
@@ -924,8 +924,8 @@ DECLARE_EVENT_CLASS(btrfs__chunk,TP_printk_btrfs ("root=%llu(%s) offset=%llu size=%llu " "num_stripes=%d sub_stripes=%d type=%s" ,show_root_type (__entry->root_objectid), - (unsigned long long )__entry->offset, - (unsigned long long )__entry->size, + __entry->offset, + __entry->size, __entry->num_stripes, __entry->sub_stripes,show_chunk_type (__entry->type)) );
@@ -975,9 +975,9 @@ TRACE_EVENT(btrfs_cow_block,"(orig_level=%d) cow_buf=%llu (cow_level=%d)" ,show_root_type (__entry->root_objectid), __entry->refs, - (unsigned long long )__entry->buf_start, + __entry->buf_start, __entry->buf_level, - (unsigned long long )__entry->cow_start, + __entry->cow_start, __entry->cow_level) );
@@ -1039,10 +1039,10 @@ TRACE_EVENT(btrfs_trigger_flush,TP_printk ("%pU: %s: flush=%d(%s) flags=%llu(%s) bytes=%llu" , __entry->fsid,__get_str (reason), __entry->flush,show_flush_action (__entry->flush), - (unsigned long long )__entry->flags, + __entry->flags,__print_flags ((unsigned long )__entry->flags,"|" ,BTRFS_GROUP_FLAGS ), - (unsigned long long )__entry->bytes) + __entry->bytes) );#define show_flush_state (state) \
@@ -1080,10 +1080,10 @@ TRACE_EVENT(btrfs_flush_space,TP_printk ("%pU: state=%d(%s) flags=%llu(%s) num_bytes=%llu ret=%d" , __entry->fsid, __entry->state,show_flush_state (__entry->state), - (unsigned long long )__entry->flags, + __entry->flags,__print_flags ((unsigned long )__entry->flags,"|" ,BTRFS_GROUP_FLAGS ), - (unsigned long long )__entry->num_bytes, __entry->ret) + __entry->num_bytes, __entry->ret) ); DECLARE_EVENT_CLASS(btrfs__reserved_extent,
@@ -1104,8 +1104,8 @@ DECLARE_EVENT_CLASS(btrfs__reserved_extent,TP_printk_btrfs ("root=%llu(%s) start=%llu len=%llu" ,show_root_type (BTRFS_EXTENT_TREE_OBJECTID ), - (unsigned long long )__entry->start, - (unsigned long long )__entry->len) + __entry->start, + __entry->len) ); DEFINE_EVENT(btrfs__reserved_extent, btrfs_reserved_extent_alloc,
@@ -1766,14 +1766,14 @@ DECLARE_EVENT_CLASS(btrfs__prelim_ref, ),TP_printk_btrfs ("root_id=%llu key=[%llu,%u,%llu] level=%d count=[%d+%d=%d] parent=%llu wanted_disk_byte=%llu nodes=%llu" , - (unsigned long long )__entry->root_id, - (unsigned long long )__entry->objectid, __entry->type, - (unsigned long long )__entry->offset, __entry->level, + __entry->root_id, + __entry->objectid, __entry->type, + __entry->offset, __entry->level, __entry->old_count, __entry->mod_count, __entry->old_count + __entry->mod_count, - (unsigned long long )__entry->parent, - (unsigned long long )__entry->bytenr, - (unsigned long long )__entry->tree_size) + __entry->parent, + __entry->bytenr, + __entry->tree_size) ); DEFINE_EVENT(btrfs__prelim_ref, btrfs_prelim_ref_merge,
@@ -1809,7 +1809,7 @@ TRACE_EVENT(btrfs_inode_mod_outstanding_extents,TP_printk_btrfs ("root=%llu(%s) ino=%llu mod=%d" ,show_root_type (__entry->root_objectid), - (unsigned long long )__entry->ino, __entry->mod) + __entry->ino, __entry->mod) );#endif /* _TRACE_BTRFS_H */
Signature · 1 line
2.16.2
David Sterba
maintainerPATCH 4/7 btrfs: tracepoints, fix whitespace in strings
In reply to David SterbaThe preferred style is to avoid spaces between key and value and no commas between key=values.
--- include/trace/events/btrfs.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
include/trace/events/btrfs.h +2 -2
@@ -121,7 +121,7 @@ TRACE_EVENT(btrfs_transaction_commit, __entry->root_objectid = root->root_key.objectid; ), -TP_printk_btrfs ("root = %llu(%s), gen = %llu" , +TP_printk_btrfs ("root=%llu(%s) gen=%llu" ,show_root_type (__entry->root_objectid), __entry->generation) );
@@ -656,7 +656,7 @@ TRACE_EVENT(btrfs_sync_fs, __entry->wait = wait; ), -TP_printk_btrfs ("wait = %d" , __entry->wait) +TP_printk_btrfs ("wait=%d" , __entry->wait) ); TRACE_EVENT(btrfs_add_block_group,
Signature · 1 line
2.16.2
David Sterba
maintainerPATCH 5/7 btrfs: tracepoints, use extended format with UUID where possible
In reply to David SterbaMost of the strings are prefixed by the UUID of the filesystem that generates the message, however there are a few events that still opencode the macro magic and can be converted to the common macros.
--- include/trace/events/btrfs.h | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-)
include/trace/events/btrfs.h +12 -18
@@ -666,8 +666,7 @@ TRACE_EVENT(btrfs_add_block_group,TP_ARGS (fs_info, block_group, create), -TP_STRUCT__entry ( -__array (u8 ,fsid ,BTRFS_FSID_SIZE ) +TP_STRUCT__entry_btrfs ( __field( u64, offset ) __field( u64, size ) __field( u64, flags )
@@ -676,8 +675,7 @@ TRACE_EVENT(btrfs_add_block_group,__field ( int, create ) ), -TP_fast_assign ( - memcpy(__entry->fsid, fs_info->fsid, BTRFS_FSID_SIZE); +TP_fast_assign_btrfs (fs_info, __entry->offset = block_group->key.objectid; __entry->size = block_group->key.offset; __entry->flags = block_group->flags;
@@ -687,9 +685,9 @@ TRACE_EVENT(btrfs_add_block_group, __entry->create = create; ), - TP_printk("%pU: block_group offset=%llu size=%llu " + TP_printk_btrfs("block_group offset=%llu size=%llu " "flags=%llu(%s) bytes_used=%llu bytes_super=%llu " - "create=%d", __entry->fsid, + "create=%d", __entry->offset, __entry->size, __entry->flags,
@@ -1020,24 +1018,22 @@ TRACE_EVENT(btrfs_trigger_flush,TP_ARGS (fs_info, flags, bytes, flush, reason), -TP_STRUCT__entry ( -__array (u8 ,fsid ,BTRFS_FSID_SIZE ) +TP_STRUCT__entry_btrfs ( __field( u64, flags ) __field( u64, bytes ) __field( int, flush )__string ( reason, reason ) ), -TP_fast_assign ( - memcpy(__entry->fsid, fs_info->fsid, BTRFS_FSID_SIZE); +TP_fast_assign_btrfs (fs_info, __entry->flags = flags; __entry->bytes = bytes; __entry->flush = flush;__assign_str (reason, reason) ), - TP_printk("%pU: %s: flush=%d(%s) flags=%llu(%s) bytes=%llu", - __entry->fsid, __get_str(reason), __entry->flush, + TP_printk_btrfs("%s: flush=%d(%s) flags=%llu(%s) bytes=%llu", + __get_str(reason), __entry->flush, show_flush_action(__entry->flush), __entry->flags, __print_flags((unsigned long)__entry->flags, "|",
@@ -1061,24 +1057,22 @@ TRACE_EVENT(btrfs_flush_space, TP_ARGS(fs_info, flags, num_bytes, state, ret), -TP_STRUCT__entry ( -__array (u8 ,fsid ,BTRFS_FSID_SIZE ) +TP_STRUCT__entry_btrfs (__field (u64 ,flags )__field ( u64, num_bytes )__field ( int, state )__field ( int, ret ) ), -TP_fast_assign ( - memcpy(__entry->fsid, fs_info->fsid, BTRFS_FSID_SIZE); +TP_fast_assign_btrfs (fs_info , __entry->flags = flags; __entry->num_bytes = num_bytes; __entry->state = state; __entry->ret = ret; ), - TP_printk("%pU: state=%d(%s) flags=%llu(%s) num_bytes=%llu ret=%d", - __entry->fsid, __entry->state, + TP_printk_btrfs("state=%d(%s) flags=%llu(%s) num_bytes=%llu ret=%d", + __entry->state, show_flush_state(__entry->state), __entry->flags, __print_flags((unsigned long)__entry->flags, "|",
Signature · 1 line
2.16.2
David Sterba
maintainerPATCH 6/7 btrfs: tests: pass fs_info to extent_map tests
In reply to David SterbaPreparatory work to pass fs_info to btrfs_add_extent_mapping so we can get a better tracepoint message. Extent maps do not need fs_info for anything so we only add a dummy one without any other initialization.
--- fs/btrfs/tests/extent-map-tests.c | 52 +++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 16 deletions(-)
fs/btrfs/tests/extent-map-tests.c +36 -16
@@ -60,7 +60,8 @@ static void free_extent_map_tree(struct extent_map_tree *em_tree)* ->add_extent_mapping(0, 16K) * -> #handle -EEXIST */ -static void test_case_1 (struct extent_map_tree *em_tree) +static void test_case_1 (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree) {struct extent_map *em;u64 start =0 ;
@@ -125,7 +126,8 @@ static void test_case_1(struct extent_map_tree *em_tree)* Reading the inline ending up with EEXIST, ie. read an inline * extent and discard page cache and read it again. */ -static void test_case_2 (struct extent_map_tree *em_tree) +static void test_case_2 (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree) {struct extent_map *em;int ret;
@@ -182,7 +184,8 @@ static void test_case_2(struct extent_map_tree *em_tree)free_extent_map_tree (em_tree); } -static void __test_case_3 (struct extent_map_tree *em_tree,u64 start) +static void __test_case_3 (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree,u64 start) {struct extent_map *em;u64 len =SZ_4K ;
@@ -248,14 +251,16 @@ static void __test_case_3(struct extent_map_tree *em_tree, u64 start)* -> add_extent_mapping() * -> add_extent_mapping() */ -static void test_case_3 (struct extent_map_tree *em_tree) +static void test_case_3 (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree) { -__test_case_3 (em_tree,0 ); -__test_case_3 (em_tree,SZ_8K ); -__test_case_3 (em_tree, (12 *1024ULL )); +__test_case_3 (fs_info, em_tree,0 ); +__test_case_3 (fs_info, em_tree,SZ_8K ); +__test_case_3 (fs_info, em_tree, (12 *1024ULL )); } -static void __test_case_4 (struct extent_map_tree *em_tree,u64 start) +static void __test_case_4 (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree,u64 start) {struct extent_map *em;u64 len =SZ_4K ;
@@ -337,30 +342,45 @@ static void __test_case_4(struct extent_map_tree *em_tree, u64 start)* # handle -EEXIST when adding * # [0, 32K) */ -static void test_case_4 (struct extent_map_tree *em_tree) +static void test_case_4 (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree) { -__test_case_4 (em_tree,0 ); -__test_case_4 (em_tree,SZ_4K ); +__test_case_4 (fs_info, em_tree,0 ); +__test_case_4 (fs_info, em_tree,SZ_4K ); }int btrfs_test_extent_map (void ) { +struct btrfs_fs_info *fs_info =NULL ;struct extent_map_tree *em_tree;test_msg ("Running extent_map tests\n" ); +/* +* Note: the fs_info is not set up completely, we only need +* fs_info::fsid for the tracepoint. +*/ + fs_info =btrfs_alloc_dummy_fs_info (PAGE_SIZE ,PAGE_SIZE ); +if (!fs_info) { +test_msg ("Couldn't allocate dummy fs info\n" ); +return -ENOMEM ; + } + em_tree =kzalloc (sizeof (*em_tree),GFP_KERNEL );if (!em_tree)/* Skip the test on error. */ -return 0 ; + goto out;extent_map_tree_init (em_tree); -test_case_1 (em_tree); -test_case_2 (em_tree); -test_case_3 (em_tree); -test_case_4 (em_tree); +test_case_1 (fs_info, em_tree); +test_case_2 (fs_info, em_tree); +test_case_3 (fs_info, em_tree); +test_case_4 (fs_info, em_tree);kfree (em_tree); +out: +btrfs_free_dummy_fs_info (fs_info); +return 0 ; }
Signature · 1 line
2.16.2
David Sterba
maintainerPATCH 7/7 btrfs: use fs_info for btrfs_handle_em_exist tracepoint
In reply to David SterbaWe really want to know to which filesystem the extent map events belong, but as it cannot be reached from the extent_map pointers, we need to pass it down the callchain.
--- fs/btrfs/extent_map.c | 6 ++++-- fs/btrfs/extent_map.h | 3 ++- fs/btrfs/inode.c | 2 +- fs/btrfs/tests/extent-map-tests.c | 8 ++++---- include/trace/events/btrfs.h | 12 +++++++----- 5 files changed, 18 insertions(+), 13 deletions(-)
fs/btrfs/extent_map.c +4 -2
@@ -517,6 +517,7 @@ static noinline int merge_extent_mapping(struct extent_map_tree *em_tree,/** * btrfs_add_extent_mapping - add extent mapping into em_tree +* @fs_info - used for tracepoint * @em_tree - the extent tree into which we want to insert the extent mapping * @em_in - extent we are inserting * @start - start of the logical range btrfs_get_extent() is requesting
@@ -534,7 +535,8 @@ static noinline int merge_extent_mapping(struct extent_map_tree *em_tree,* Return 0 on success, otherwise -EEXIST. * */ -int btrfs_add_extent_mapping (struct extent_map_tree *em_tree, +int btrfs_add_extent_mapping (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree,struct extent_map **em_in,u64 start,u64 len) {int ret;
@@ -552,7 +554,7 @@ int btrfs_add_extent_mapping(struct extent_map_tree *em_tree, existing =search_extent_mapping (em_tree, start, len); -trace_btrfs_handle_em_exist (existing, em, start, len); +trace_btrfs_handle_em_exist (fs_info, existing, em, start, len);/* * existing will always be non-NULL, since there must be
fs/btrfs/extent_map.h +2 -1
@@ -91,6 +91,7 @@ int unpin_extent_cache(struct extent_map_tree *tree, u64 start, u64 len, u64 genvoid clear_em_logging (struct extent_map_tree *tree,struct extent_map *em);struct extent_map *search_extent_mapping (struct extent_map_tree *tree,u64 start,u64 len); -int btrfs_add_extent_mapping (struct extent_map_tree *em_tree, +int btrfs_add_extent_mapping (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree,struct extent_map **em_in,u64 start,u64 len);#endif
fs/btrfs/inode.c +1 -1
@@ -7092,7 +7092,7 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, err =0 ;write_lock (&em_tree->lock); - err =btrfs_add_extent_mapping (em_tree, &em, start, len); + err =btrfs_add_extent_mapping (fs_info, em_tree, &em, start, len);write_unlock (&em_tree->lock); out:
fs/btrfs/tests/extent-map-tests.c +4 -4
@@ -104,7 +104,7 @@ static void test_case_1(struct btrfs_fs_info *fs_info, em->len = len; em->block_start = start; em->block_len = len; - ret =btrfs_add_extent_mapping (em_tree, &em, em->start, em->len); + ret =btrfs_add_extent_mapping (fs_info, em_tree, &em, em->start, em->len);if (ret)test_msg ("case1 [%llu %llu]: ret %d\n" , start, start + len, ret); if (em &&
@@ -168,7 +168,7 @@ static void test_case_2(struct btrfs_fs_info *fs_info, em->len =SZ_1K ; em->block_start =EXTENT_MAP_INLINE ; em->block_len = (u64)-1 ; - ret =btrfs_add_extent_mapping (em_tree, &em, em->start, em->len); + ret =btrfs_add_extent_mapping (fs_info, em_tree, &em, em->start, em->len);if (ret)test_msg ("case2 [0 1K]: ret %d\n" , ret); if (em &&
@@ -214,7 +214,7 @@ static void __test_case_3(struct btrfs_fs_info *fs_info, em->len =SZ_16K ; em->block_start =0 ; em->block_len =SZ_16K ; - ret =btrfs_add_extent_mapping (em_tree, &em, start, len); + ret =btrfs_add_extent_mapping (fs_info, em_tree, &em, start, len);if (ret)test_msg ("case3 [0x%llx 0x%llx): ret %d\n" , start, start + len, ret);
@@ -301,7 +301,7 @@ static void __test_case_4(struct btrfs_fs_info *fs_info, em->len =SZ_32K ; em->block_start =0 ; em->block_len =SZ_32K ; - ret =btrfs_add_extent_mapping (em_tree, &em, start, len); + ret =btrfs_add_extent_mapping (fs_info, em_tree, &em, start, len);if (ret)test_msg ("case4 [0x%llx 0x%llx): ret %d\n" , start, len, ret);
include/trace/events/btrfs.h +7 -5
@@ -256,11 +256,13 @@ TRACE_EVENT_CONDITION(btrfs_get_extent, TRACE_EVENT(btrfs_handle_em_exist, - TP_PROTO(const struct extent_map *existing, const struct extent_map *map, u64 start, u64 len), + TP_PROTO(struct btrfs_fs_info *fs_info, + const struct extent_map *existing, const struct extent_map *map, + u64 start, u64 len), - TP_ARGS(existing, map, start, len), + TP_ARGS(fs_info, existing, map, start, len), - TP_STRUCT__entry( + TP_STRUCT__entry_btrfs( __field( u64, e_start ) __field( u64, e_len ) __field( u64, map_start )
@@ -269,7 +271,7 @@ TRACE_EVENT(btrfs_handle_em_exist,__field ( u64, len ) ), -TP_fast_assign ( +TP_fast_assign_btrfs (fs_info, __entry->e_start = existing->start; __entry->e_len = existing->len; __entry->map_start = map->start;
@@ -278,7 +280,7 @@ TRACE_EVENT(btrfs_handle_em_exist, __entry->len = len; ), - TP_printk("start=%llu len=%llu " + TP_printk_btrfs("start=%llu len=%llu " "existing(start=%llu len=%llu) " "em(start=%llu len=%llu)", __entry->start,
Signature · 1 line
2.16.2
Re: [PATCH 7/7] btrfs: use fs_info for btrfs_handle_em_exist tracepoint
Quoted 3 lines · David Sterba
We really want to know to which filesystem the extent map events belong, but as it cannot be reached from the
extent_mappointers, we need to pass it down the callchain.
I really dislike propagating arguments solely for tracepoints purposes, but if we don't have any other choice then I guess we should go with it. However...
Quoted 59 lines
Signed-off-by David Sterba <[email protected]>--- fs/btrfs/extent_map.c | 6 ++++-- fs/btrfs/extent_map.h | 3 ++- fs/btrfs/inode.c | 2 +- fs/btrfs/tests/extent-map-tests.c | 8 ++++---- include/trace/events/btrfs.h | 12 +++++++----- 5 files changed, 18 insertions(+), 13 deletions(-)fs/btrfs/extent_map.c +4
-2@@ -517,6 +517,7 @@ static noinline int merge_extent_mapping(struct extent_map_tree *em_tree,/** * btrfs_add_extent_mapping - add extent mapping into em_tree +* @fs_info - used for tracepoint * @em_tree - the extent tree into which we want to insert the extent mapping * @em_in - extent we are inserting * @start - start of the logical range btrfs_get_extent() is requesting @@ -534,7 +535,8 @@ static noinline int merge_extent_mapping(struct extent_map_tree *em_tree,* Return 0 on success, otherwise -EEXIST. * */ -int btrfs_add_extent_mapping (struct extent_map_tree *em_tree, +int btrfs_add_extent_mapping (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree,struct extent_map **em_in,u64 start,u64 len) {int ret;@@ -552,7 +554,7 @@ int btrfs_add_extent_mapping(struct extent_map_tree *em_tree, existing =search_extent_mapping (em_tree, start, len); -trace_btrfs_handle_em_exist (existing, em, start, len); +trace_btrfs_handle_em_exist (fs_info, existing, em, start, len);/* * existing will always be non-NULL, since there must be fs/btrfs/extent_map.h +2
-1@@ -91,6 +91,7 @@ int unpin_extent_cache(struct extent_map_tree *tree, u64 start, u64 len, u64 genvoid clear_em_logging (struct extent_map_tree *tree,struct extent_map *em);struct extent_map *search_extent_mapping (struct extent_map_tree *tree,u64 start,u64 len); -int btrfs_add_extent_mapping (struct extent_map_tree *em_tree, +int btrfs_add_extent_mapping (struct btrfs_fs_info *fs_info, +struct extent_map_tree *em_tree,struct extent_map **em_in,u64 start,u64 len);#endif fs/btrfs/inode.c +0
-0
fs/btrfs/inode.c struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, · line 7095
Quoted 5 lines
fs/btrfs/inode.c +1
-1@@ -7092,7 +7092,7 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, err =0 ;write_lock (&em_tree->lock); - err =btrfs_add_extent_mapping (em_tree, &em, start, len); + err =btrfs_add_extent_mapping (fs_info, em_tree, &em, start, len);
This function is called only here, and we know that em_tree passed points to a struct, stored in btrfs_inode. So can't we use container_of to get the btrfs_inode in this function, from where we can reference the fs_info? I guess it could be a problem for tests.
Admittedly this feels somewhat hacky and I guess is not very future-proof, but it's still a viable alternative.
Re: [PATCH 7/7] btrfs: use fs_info for btrfs_handle_em_exist tracepoint
Quoted 22 lines · Nikolay Borisov
Quoted 3 lines · David Sterba
We really want to know to which filesystem the extent map events belong, but as it cannot be reached from the
extent_mappointers, we need to pass it down the callchain.I really dislike propagating arguments solely for tracepoints purposes, but if we don't have any other choice then I guess we should go with it. However...
fs/btrfs/inode.c struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, · line 7095
Quoted 6 lines
fs/btrfs/inode.c +1
-1@@ -7092,7 +7092,7 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, err =0 ;write_lock (&em_tree->lock); - err =btrfs_add_extent_mapping (em_tree, &em, start, len); + err =btrfs_add_extent_mapping (fs_info, em_tree, &em, start, len);This function is called only here, and we know that
em_treepassed points to a struct, stored inbtrfs_inode. So can't we usecontainer_ofto get thebtrfs_inodein this function, from where we can reference thefs_info? I guess it could be a problem for tests.
Quoted 2 lines
Admittedly this feels somewhat hacky and I guess is not very future-proof, but it's still a viable alternative.
Sounds too fragile to me, from all the alternatives passing fs_info looks like the cleanest way for now. The filesystem UUID in the tracepoint is IMO an important part.
Quoted 10 lines · David Sterba
Switch the inode number type to u64, plus other cleanups and fixups.
David Sterba (7):
btrfs: tracepoints, use correct type for inode number
btrfs: tracepoints, use %llu instead of %Lu
btrfs: tracepoints, drop unnecessary ULL casts
btrfs: tracepoints, fix whitespace in strings
btrfs: tracepoints, use extended format with UUID where possible
btrfs: tests: passfs_infotoextent_maptests
btrfs: usefs_infoforbtrfs_handle_em_existtracepoint
Quoted 8 lines
fs/btrfs/extent_map.c | 6 +- fs/btrfs/extent_map.h | 3 +- fs/btrfs/inode.c | 2 +- fs/btrfs/tests/extent-map-tests.c | 60 ++++++---- include/trace/events/btrfs.h | 225 +++++++++++++++++++------------------- 5 files changed, 158 insertions(+), 138 deletions(-)