On Fri, 7 Aug 2026 09:03:52 +0800
Baolin Liu <[email protected]> wrote:
> @@ -960,6 +966,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 != NULL, zero, no_da);
Hmm, why not just pass new in. It looks like this is the only place that
calls this tracepoint, right?
> +TRACE_EVENT(ntfs3_attr_data_get_block,
> + TP_PROTO(struct inode *inode, u64 vcn, u64 clen, bool create,
> + bool zero, bool no_da),
> + TP_ARGS(inode, vcn, clen, create, 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 = create;
Then you can have this be:
__entry->create = new != NULL;
and keep that logic out of the code and out of line in the trace event.
-- Steve
> + __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>