bcachefs: Add tracepoints for bch2_sync_fs() and bch2_fsync()
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>
This commit is contained in:
parent
8b0882505d
commit
747d1d6c7e
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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),
|
||||
|
Loading…
Reference in New Issue
Block a user