mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
xfs: add a tracepoint for blockgc scans
Add some tracepoints so that we can observe when the speculative preallocation garbage collector runs. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Brian Foster <bfoster@redhat.com>
This commit is contained in:
parent
758303d144
commit
38899f8099
@ -2339,6 +2339,8 @@ xfs_file_ioctl(
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
trace_xfs_ioc_free_eofblocks(mp, &keofb, _RET_IP_);
|
||||
|
||||
sb_start_write(mp->m_super);
|
||||
error = xfs_icache_free_eofblocks(mp, &keofb);
|
||||
sb_end_write(mp->m_super);
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include "xfs_filestream.h"
|
||||
#include "xfs_fsmap.h"
|
||||
#include "xfs_btree_staging.h"
|
||||
#include "xfs_icache.h"
|
||||
|
||||
/*
|
||||
* We include this last to have the helpers above available for the trace
|
||||
|
@ -37,6 +37,7 @@ struct xfs_trans_res;
|
||||
struct xfs_inobt_rec_incore;
|
||||
union xfs_btree_ptr;
|
||||
struct xfs_dqtrx;
|
||||
struct xfs_eofblocks;
|
||||
|
||||
#define XFS_ATTR_FILTER_FLAGS \
|
||||
{ XFS_ATTR_ROOT, "ROOT" }, \
|
||||
@ -3888,6 +3889,46 @@ DEFINE_EVENT(xfs_timestamp_range_class, name, \
|
||||
DEFINE_TIMESTAMP_RANGE_EVENT(xfs_inode_timestamp_range);
|
||||
DEFINE_TIMESTAMP_RANGE_EVENT(xfs_quota_expiry_range);
|
||||
|
||||
DECLARE_EVENT_CLASS(xfs_eofblocks_class,
|
||||
TP_PROTO(struct xfs_mount *mp, struct xfs_eofblocks *eofb,
|
||||
unsigned long caller_ip),
|
||||
TP_ARGS(mp, eofb, caller_ip),
|
||||
TP_STRUCT__entry(
|
||||
__field(dev_t, dev)
|
||||
__field(__u32, flags)
|
||||
__field(uint32_t, uid)
|
||||
__field(uint32_t, gid)
|
||||
__field(prid_t, prid)
|
||||
__field(__u64, min_file_size)
|
||||
__field(unsigned long, caller_ip)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->dev = mp->m_super->s_dev;
|
||||
__entry->flags = eofb ? eofb->eof_flags : 0;
|
||||
__entry->uid = eofb ? from_kuid(mp->m_super->s_user_ns,
|
||||
eofb->eof_uid) : 0;
|
||||
__entry->gid = eofb ? from_kgid(mp->m_super->s_user_ns,
|
||||
eofb->eof_gid) : 0;
|
||||
__entry->prid = eofb ? eofb->eof_prid : 0;
|
||||
__entry->min_file_size = eofb ? eofb->eof_min_file_size : 0;
|
||||
__entry->caller_ip = caller_ip;
|
||||
),
|
||||
TP_printk("dev %d:%d flags 0x%x uid %u gid %u prid %u minsize %llu caller %pS",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev),
|
||||
__entry->flags,
|
||||
__entry->uid,
|
||||
__entry->gid,
|
||||
__entry->prid,
|
||||
__entry->min_file_size,
|
||||
(char *)__entry->caller_ip)
|
||||
);
|
||||
#define DEFINE_EOFBLOCKS_EVENT(name) \
|
||||
DEFINE_EVENT(xfs_eofblocks_class, name, \
|
||||
TP_PROTO(struct xfs_mount *mp, struct xfs_eofblocks *eofb, \
|
||||
unsigned long caller_ip), \
|
||||
TP_ARGS(mp, eofb, caller_ip))
|
||||
DEFINE_EOFBLOCKS_EVENT(xfs_ioc_free_eofblocks);
|
||||
|
||||
#endif /* _TRACE_XFS_H */
|
||||
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
|
Loading…
Reference in New Issue
Block a user