]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: tracepoints: add trace event for btrfs_record_new_subvolume()
authorFilipe Manana <fdmanana@suse.com>
Mon, 11 May 2026 15:13:18 +0000 (16:13 +0100)
committerFilipe Manana <fdmanana@suse.com>
Tue, 9 Jun 2026 10:49:24 +0000 (11:49 +0100)
btrfs_record_new_subvolume() is an important operation that affects
inode logging and is called during subvolume creation. Add a trace event
for it to help debug issues.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/tree-log.c
include/trace/events/btrfs.h

index 7f014e6be4b713050321213763932e66dd803406..3f3c87f580b3dd0cefa48af16ece789e35a3e4c0 100644 (file)
@@ -8024,6 +8024,8 @@ void btrfs_record_snapshot_destroy(struct btrfs_trans_handle *trans,
 void btrfs_record_new_subvolume(const struct btrfs_trans_handle *trans,
                                struct btrfs_inode *dir)
 {
+       trace_btrfs_record_new_subvolume(trans, dir);
+
        mutex_lock(&dir->log_mutex);
        dir->last_unlink_trans = trans->transid;
        mutex_unlock(&dir->log_mutex);
index a14a8d32a6f18e8dc123d74acb070dcb70d8baf3..47e6f382e22aba4986a6e134216cb9662b051943 100644 (file)
@@ -1456,6 +1456,31 @@ TRACE_EVENT(btrfs_record_snapshot_destroy,
                        __entry->dir)
 );
 
+TRACE_EVENT(btrfs_record_new_subvolume,
+
+       TP_PROTO(const struct btrfs_trans_handle *trans,
+                const struct btrfs_inode *dir),
+
+       TP_ARGS(trans, dir),
+
+       TP_STRUCT__entry_btrfs(
+               __field(        u64,            root_objectid           )
+               __field(        u64,            transid                 )
+               __field(        u64,            dir                     )
+       ),
+
+       TP_fast_assign(
+               TP_fast_assign_fsid(trans->fs_info);
+               __entry->root_objectid          = btrfs_root_id(dir->root);
+               __entry->transid                = trans->transid;
+               __entry->dir                    = btrfs_ino(dir);
+       ),
+
+       TP_printk_btrfs("root=%llu(%s) transid=%llu dir=%llu",
+                       show_root_type(__entry->root_objectid), __entry->transid,
+                       __entry->dir)
+);
+
 TRACE_EVENT(btrfs_sync_fs,
 
        TP_PROTO(const struct btrfs_fs_info *fs_info, int wait),