mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
ntfs3: add allocation tracepoints
Add ntfs3 tracepoints for allocation operations. This adds trace events for attr_allocate_clusters(), attr_set_size_ex(), and attr_data_get_block() to help observe cluster allocation, size changes, and block mapping activity. Signed-off-by: Baolin Liu <liubaolin@kylinos.cn> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
parent
4feafef66a
commit
3bd6d6540d
|
|
@ -13,6 +13,7 @@
|
|||
#include "debug.h"
|
||||
#include "ntfs.h"
|
||||
#include "ntfs_fs.h"
|
||||
#include <trace/events/ntfs3.h>
|
||||
|
||||
/*
|
||||
* You can set external NTFS_MIN_LOG2_OF_CLUMP/NTFS_MAX_LOG2_OF_CLUMP to manage
|
||||
|
|
@ -172,6 +173,8 @@ int attr_allocate_clusters(struct ntfs_sb_info *sbi, struct runs_tree *run,
|
|||
CLST flen, vcn0 = vcn, pre = pre_alloc ? *pre_alloc : 0;
|
||||
size_t cnt = run->count;
|
||||
|
||||
trace_ntfs3_attr_allocate_clusters(sbi->sb, vcn, lcn, len, opt);
|
||||
|
||||
for (;;) {
|
||||
err = ntfs_look_for_free_space(sbi, lcn, len + pre, &lcn, &flen,
|
||||
opt);
|
||||
|
|
@ -470,6 +473,12 @@ int attr_set_size_ex(struct ntfs_inode *ni, enum ATTR_TYPE type,
|
|||
goto bad_inode;
|
||||
}
|
||||
|
||||
trace_ntfs3_attr_set_size_ex(&ni->vfs_inode, le32_to_cpu(type),
|
||||
attr_b->non_res ?
|
||||
le64_to_cpu(attr_b->nres.data_size) :
|
||||
le32_to_cpu(attr_b->res.data_size),
|
||||
new_size, keep_prealloc, no_da);
|
||||
|
||||
if (!attr_b->non_res) {
|
||||
err = attr_set_size_res(ni, attr_b, le_b, mi_b, new_size, run,
|
||||
&attr_b);
|
||||
|
|
@ -971,6 +980,9 @@ int attr_data_get_block(struct ntfs_inode *ni, CLST vcn, CLST clen, CLST *lcn,
|
|||
if (res)
|
||||
*res = NULL;
|
||||
|
||||
trace_ntfs3_attr_data_get_block(&ni->vfs_inode, vcn, clen, new, zero,
|
||||
no_da);
|
||||
|
||||
/* Try to find in cache. */
|
||||
down_read(&ni->file.run_lock);
|
||||
if (run_lookup_entry_da(&ni->file.run, !no_da ? &ni->file.run_da : NULL,
|
||||
|
|
|
|||
|
|
@ -223,6 +223,84 @@ TRACE_EVENT(ntfs3_indx_delete_entry,
|
|||
__entry->ino, __entry->type, __entry->key_len)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ntfs3_attr_allocate_clusters,
|
||||
TP_PROTO(struct super_block *sb, u64 vcn, u64 lcn, u64 len, u32 opt),
|
||||
TP_ARGS(sb, vcn, lcn, len, opt),
|
||||
TP_STRUCT__entry(
|
||||
__field(u64, vcn)
|
||||
__field(u64, lcn)
|
||||
__field(u64, len)
|
||||
__field(dev_t, dev)
|
||||
__field(u32, opt)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->vcn = vcn;
|
||||
__entry->lcn = lcn;
|
||||
__entry->len = len;
|
||||
__entry->dev = sb->s_dev;
|
||||
__entry->opt = opt;
|
||||
),
|
||||
TP_printk("dev=(%d,%d) vcn=%llu lcn=%llu len=%llu opt=0x%x",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev),
|
||||
__entry->vcn, __entry->lcn, __entry->len, __entry->opt)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ntfs3_attr_set_size_ex,
|
||||
TP_PROTO(struct inode *inode, u32 type, u64 old_size, u64 new_size,
|
||||
bool keep_prealloc, bool no_da),
|
||||
TP_ARGS(inode, type, old_size, new_size, keep_prealloc, no_da),
|
||||
TP_STRUCT__entry(
|
||||
__field(u64, old_size)
|
||||
__field(u64, new_size)
|
||||
__field(unsigned long, ino)
|
||||
__field(dev_t, dev)
|
||||
__field(u32, type)
|
||||
__field(bool, keep_prealloc)
|
||||
__field(bool, no_da)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->old_size = old_size;
|
||||
__entry->new_size = new_size;
|
||||
__entry->ino = inode->i_ino;
|
||||
__entry->dev = inode->i_sb->s_dev;
|
||||
__entry->type = type;
|
||||
__entry->keep_prealloc = keep_prealloc;
|
||||
__entry->no_da = no_da;
|
||||
),
|
||||
TP_printk("dev=(%d,%d) ino=%lu type=0x%x old_size=%llu new_size=%llu keep_prealloc=%d no_da=%d",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino,
|
||||
__entry->type, __entry->old_size, __entry->new_size,
|
||||
__entry->keep_prealloc, __entry->no_da)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ntfs3_attr_data_get_block,
|
||||
TP_PROTO(struct inode *inode, u64 vcn, u64 clen, bool *new,
|
||||
bool zero, bool no_da),
|
||||
TP_ARGS(inode, vcn, clen, new, zero, no_da),
|
||||
TP_STRUCT__entry(
|
||||
__field(u64, vcn)
|
||||
__field(u64, clen)
|
||||
__field(unsigned long, ino)
|
||||
__field(dev_t, dev)
|
||||
__field(bool, create)
|
||||
__field(bool, zero)
|
||||
__field(bool, no_da)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->vcn = vcn;
|
||||
__entry->clen = clen;
|
||||
__entry->ino = inode->i_ino;
|
||||
__entry->dev = inode->i_sb->s_dev;
|
||||
__entry->create = !!new;
|
||||
__entry->zero = zero;
|
||||
__entry->no_da = no_da;
|
||||
),
|
||||
TP_printk("dev=(%d,%d) ino=%lu vcn=%llu clen=%llu create=%d zero=%d no_da=%d",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino,
|
||||
__entry->vcn, __entry->clen, __entry->create,
|
||||
__entry->zero, __entry->no_da)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_NTFS3_H */
|
||||
|
||||
#include <trace/define_trace.h>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user