]> www.infradead.org Git - nvme.git/commitdiff
bcachefs: Add tracepoints for bch2_sync_fs() and bch2_fsync()
authorYouling Tang <tangyouling@kylinos.cn>
Fri, 31 May 2024 02:35:09 +0000 (10:35 +0800)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 14 Jul 2024 23:00:14 +0000 (19:00 -0400)
Add trace_bch2_sync_fs() and trace_bch2_fsync() implementations.

The output in trace is as follows:
  sync-29779   [000] .....   193.700935: bch2_sync_fs: dev 254,16 wait 1
  <...>-40027  [002] .....   342.535227: bch2_fsync: dev 254,32 ino 4099 parent 4096 datasync 1

Signed-off-by: Youling Tang <tangyouling@kylinos.cn>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/fs-io.c
fs/bcachefs/fs.c
fs/bcachefs/trace.h

index 1b734fd4acd22090279a106257b1c7432094733a..fead9ab10e4a985222e7e341db5a33ba7e5a6d4e 100644 (file)
@@ -194,6 +194,8 @@ int bch2_fsync(struct file *file, loff_t start, loff_t end, int datasync)
        struct bch_fs *c = inode->v.i_sb->s_fs_info;
        int ret, err;
 
+       trace_bch2_fsync(file, datasync);
+
        ret = file_write_and_wait_range(file, start, end);
        if (ret)
                goto out;
index 1e0e5a84224382b66f112804714fca1db7fdb584..3dd60aa3c3de9a987cc29ee737a15d421becfc40 100644 (file)
@@ -26,6 +26,7 @@
 #include "snapshot.h"
 #include "super.h"
 #include "xattr.h"
+#include "trace.h"
 
 #include <linux/aio.h>
 #include <linux/backing-dev.h>
@@ -1697,6 +1698,8 @@ static int bch2_sync_fs(struct super_block *sb, int wait)
        struct bch_fs *c = sb->s_fs_info;
        int ret;
 
+       trace_bch2_sync_fs(sb, wait);
+
        if (c->opts.journal_flush_disabled)
                return 0;
 
index 84fcf26e306e63cdf94be691a916f0466b81d476..d0e6b9deb6cb4d9433f4556042b83ad8bc956663 100644 (file)
@@ -200,6 +200,56 @@ DECLARE_EVENT_CLASS(bio,
                  (unsigned long long)__entry->sector, __entry->nr_sector)
 );
 
+/* fs.c: */
+TRACE_EVENT(bch2_sync_fs,
+       TP_PROTO(struct super_block *sb, int wait),
+
+       TP_ARGS(sb, wait),
+
+       TP_STRUCT__entry(
+               __field(        dev_t,  dev                     )
+               __field(        int,    wait                    )
+
+       ),
+
+       TP_fast_assign(
+               __entry->dev    = sb->s_dev;
+               __entry->wait   = wait;
+       ),
+
+       TP_printk("dev %d,%d wait %d",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __entry->wait)
+);
+
+/* fs-io.c: */
+TRACE_EVENT(bch2_fsync,
+       TP_PROTO(struct file *file, int datasync),
+
+       TP_ARGS(file, datasync),
+
+       TP_STRUCT__entry(
+               __field(        dev_t,  dev                     )
+               __field(        ino_t,  ino                     )
+               __field(        ino_t,  parent                  )
+               __field(        int,    datasync                )
+       ),
+
+       TP_fast_assign(
+               struct dentry *dentry = file->f_path.dentry;
+
+               __entry->dev            = dentry->d_sb->s_dev;
+               __entry->ino            = d_inode(dentry)->i_ino;
+               __entry->parent         = d_inode(dentry->d_parent)->i_ino;
+               __entry->datasync       = datasync;
+       ),
+
+       TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 (unsigned long) __entry->ino,
+                 (unsigned long) __entry->parent, __entry->datasync)
+);
+
 /* super-io.c: */
 TRACE_EVENT(write_super,
        TP_PROTO(struct bch_fs *c, unsigned long ip),