fs/f2fs/file.c | 2 ++ include/trace/events/f2fs.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+)
This adds a tracepoint in the fadvise call path.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fs/f2fs/file.c | 2 ++
include/trace/events/f2fs.h | 32 ++++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 6d42e2d28861..4a81089c5df3 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -5288,6 +5288,8 @@ static int f2fs_file_fadvise(struct file *filp, loff_t offset, loff_t len,
struct inode *inode = file_inode(filp);
int err;
+ trace_f2fs_fadvise(inode, offset, len, advice);
+
if (advice == POSIX_FADV_SEQUENTIAL) {
if (S_ISFIFO(inode->i_mode))
return -ESPIPE;
diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
index edbbd869078f..b7f5317b5980 100644
--- a/include/trace/events/f2fs.h
+++ b/include/trace/events/f2fs.h
@@ -586,6 +586,38 @@ TRACE_EVENT(f2fs_file_write_iter,
__entry->ret)
);
+TRACE_EVENT(f2fs_fadvise,
+
+ TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int advice),
+
+ TP_ARGS(inode, offset, len, advice),
+
+ TP_STRUCT__entry(
+ __field(dev_t, dev)
+ __field(ino_t, ino)
+ __field(loff_t, size)
+ __field(loff_t, offset)
+ __field(loff_t, len)
+ __field(int, advice)
+ ),
+
+ TP_fast_assign(
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->ino = inode->i_ino;
+ __entry->size = inode->i_size;
+ __entry->offset = offset;
+ __entry->len = len;
+ __entry->advice = advice;
+ ),
+
+ TP_printk("dev = (%d,%d), ino = %lu, i_size = %lld offset:%llu, len:%llu, advise:%d",
+ show_dev_ino(__entry),
+ (unsigned long long)__entry->size,
+ __entry->offset,
+ __entry->len,
+ __entry->advice)
+);
+
TRACE_EVENT(f2fs_map_blocks,
TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int flag,
int ret),
--
2.51.1.851.g4ebd6896fd-goog
This adds a tracepoint in the fadvise call path.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
v2 from v1:
- use i_size_read()
fs/f2fs/file.c | 2 ++
include/trace/events/f2fs.h | 32 ++++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 7b966f6d40d2..d7047ca6b98d 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -5288,6 +5288,8 @@ static int f2fs_file_fadvise(struct file *filp, loff_t offset, loff_t len,
struct inode *inode = file_inode(filp);
int err;
+ trace_f2fs_fadvise(inode, offset, len, advice);
+
if (advice == POSIX_FADV_SEQUENTIAL) {
if (S_ISFIFO(inode->i_mode))
return -ESPIPE;
diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
index e1fae78d64a5..e00611ead024 100644
--- a/include/trace/events/f2fs.h
+++ b/include/trace/events/f2fs.h
@@ -586,6 +586,38 @@ TRACE_EVENT(f2fs_file_write_iter,
__entry->ret)
);
+TRACE_EVENT(f2fs_fadvise,
+
+ TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int advice),
+
+ TP_ARGS(inode, offset, len, advice),
+
+ TP_STRUCT__entry(
+ __field(dev_t, dev)
+ __field(ino_t, ino)
+ __field(loff_t, size)
+ __field(loff_t, offset)
+ __field(loff_t, len)
+ __field(int, advice)
+ ),
+
+ TP_fast_assign(
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->ino = inode->i_ino;
+ __entry->size = i_size_read(inode);
+ __entry->offset = offset;
+ __entry->len = len;
+ __entry->advice = advice;
+ ),
+
+ TP_printk("dev = (%d,%d), ino = %lu, i_size = %lld offset:%llu, len:%llu, advise:%d",
+ show_dev_ino(__entry),
+ (unsigned long long)__entry->size,
+ __entry->offset,
+ __entry->len,
+ __entry->advice)
+);
+
TRACE_EVENT(f2fs_map_blocks,
TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int flag,
int ret),
--
2.51.2.997.g839fc31de9-goog
On 11/1/25 05:35, Jaegeuk Kim via Linux-f2fs-devel wrote: > This adds a tracepoint in the fadvise call path. > > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> Reviewed-by: Chao Yu <chao@kernel.org> Thanks,
On 10/29/25 03:54, Jaegeuk Kim via Linux-f2fs-devel wrote:
> This adds a tracepoint in the fadvise call path.
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> fs/f2fs/file.c | 2 ++
> include/trace/events/f2fs.h | 32 ++++++++++++++++++++++++++++++++
> 2 files changed, 34 insertions(+)
>
> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
> index 6d42e2d28861..4a81089c5df3 100644
> --- a/fs/f2fs/file.c
> +++ b/fs/f2fs/file.c
> @@ -5288,6 +5288,8 @@ static int f2fs_file_fadvise(struct file *filp, loff_t offset, loff_t len,
> struct inode *inode = file_inode(filp);
> int err;
>
> + trace_f2fs_fadvise(inode, offset, len, advice);
> +
> if (advice == POSIX_FADV_SEQUENTIAL) {
> if (S_ISFIFO(inode->i_mode))
> return -ESPIPE;
> diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
> index edbbd869078f..b7f5317b5980 100644
> --- a/include/trace/events/f2fs.h
> +++ b/include/trace/events/f2fs.h
> @@ -586,6 +586,38 @@ TRACE_EVENT(f2fs_file_write_iter,
> __entry->ret)
> );
>
> +TRACE_EVENT(f2fs_fadvise,
> +
> + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int advice),
> +
> + TP_ARGS(inode, offset, len, advice),
> +
> + TP_STRUCT__entry(
> + __field(dev_t, dev)
> + __field(ino_t, ino)
> + __field(loff_t, size)
> + __field(loff_t, offset)
> + __field(loff_t, len)
> + __field(int, advice)
> + ),
> +
> + TP_fast_assign(
> + __entry->dev = inode->i_sb->s_dev;
> + __entry->ino = inode->i_ino;
> + __entry->size = inode->i_size;
__entry->size = i_size_read(inode)?
Thanks,
> + __entry->offset = offset;
> + __entry->len = len;
> + __entry->advice = advice;
> + ),
> +
> + TP_printk("dev = (%d,%d), ino = %lu, i_size = %lld offset:%llu, len:%llu, advise:%d",
> + show_dev_ino(__entry),
> + (unsigned long long)__entry->size,
> + __entry->offset,
> + __entry->len,
> + __entry->advice)
> +);
> +
> TRACE_EVENT(f2fs_map_blocks,
> TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int flag,
> int ret),
On 10/29/25 10:06, Chao Yu via Linux-f2fs-devel wrote:
> On 10/29/25 03:54, Jaegeuk Kim via Linux-f2fs-devel wrote:
>> This adds a tracepoint in the fadvise call path.
>>
>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>> ---
>> fs/f2fs/file.c | 2 ++
>> include/trace/events/f2fs.h | 32 ++++++++++++++++++++++++++++++++
>> 2 files changed, 34 insertions(+)
>>
>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
>> index 6d42e2d28861..4a81089c5df3 100644
>> --- a/fs/f2fs/file.c
>> +++ b/fs/f2fs/file.c
>> @@ -5288,6 +5288,8 @@ static int f2fs_file_fadvise(struct file *filp, loff_t offset, loff_t len,
>> struct inode *inode = file_inode(filp);
>> int err;
>>
>> + trace_f2fs_fadvise(inode, offset, len, advice);
>> +
>> if (advice == POSIX_FADV_SEQUENTIAL) {
>> if (S_ISFIFO(inode->i_mode))
>> return -ESPIPE;
>> diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
>> index edbbd869078f..b7f5317b5980 100644
>> --- a/include/trace/events/f2fs.h
>> +++ b/include/trace/events/f2fs.h
>> @@ -586,6 +586,38 @@ TRACE_EVENT(f2fs_file_write_iter,
>> __entry->ret)
>> );
>>
>> +TRACE_EVENT(f2fs_fadvise,
>> +
>> + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int advice),
>> +
>> + TP_ARGS(inode, offset, len, advice),
>> +
>> + TP_STRUCT__entry(
>> + __field(dev_t, dev)
>> + __field(ino_t, ino)
>> + __field(loff_t, size)
>> + __field(loff_t, offset)
>> + __field(loff_t, len)
>> + __field(int, advice)
>> + ),
>> +
>> + TP_fast_assign(
>> + __entry->dev = inode->i_sb->s_dev;
>> + __entry->ino = inode->i_ino;
>> + __entry->size = inode->i_size;
>
> __entry->size = i_size_read(inode)?
>
> Thanks,
>
The other "__entry->size = inode->i_size;" in
include/trace/events/f2fs.h also need to be updated?
>> + __entry->offset = offset;
>> + __entry->len = len;
>> + __entry->advice = advice;
>> + ),
>> +
>> + TP_printk("dev = (%d,%d), ino = %lu, i_size = %lld offset:%llu, len:%llu, advise:%d",
>> + show_dev_ino(__entry),
>> + (unsigned long long)__entry->size,
>> + __entry->offset,
>> + __entry->len,
>> + __entry->advice)
>> +);
>> +
>> TRACE_EVENT(f2fs_map_blocks,
>> TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int flag,
>> int ret),
>
>
>
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
On 10/29/25 11:13, Yongpeng Yang wrote:
> On 10/29/25 10:06, Chao Yu via Linux-f2fs-devel wrote:
>> On 10/29/25 03:54, Jaegeuk Kim via Linux-f2fs-devel wrote:
>>> This adds a tracepoint in the fadvise call path.
>>>
>>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>>> ---
>>> fs/f2fs/file.c | 2 ++
>>> include/trace/events/f2fs.h | 32 ++++++++++++++++++++++++++++++++
>>> 2 files changed, 34 insertions(+)
>>>
>>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
>>> index 6d42e2d28861..4a81089c5df3 100644
>>> --- a/fs/f2fs/file.c
>>> +++ b/fs/f2fs/file.c
>>> @@ -5288,6 +5288,8 @@ static int f2fs_file_fadvise(struct file *filp, loff_t offset, loff_t len,
>>> struct inode *inode = file_inode(filp);
>>> int err;
>>> + trace_f2fs_fadvise(inode, offset, len, advice);
>>> +
>>> if (advice == POSIX_FADV_SEQUENTIAL) {
>>> if (S_ISFIFO(inode->i_mode))
>>> return -ESPIPE;
>>> diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
>>> index edbbd869078f..b7f5317b5980 100644
>>> --- a/include/trace/events/f2fs.h
>>> +++ b/include/trace/events/f2fs.h
>>> @@ -586,6 +586,38 @@ TRACE_EVENT(f2fs_file_write_iter,
>>> __entry->ret)
>>> );
>>> +TRACE_EVENT(f2fs_fadvise,
>>> +
>>> + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int advice),
>>> +
>>> + TP_ARGS(inode, offset, len, advice),
>>> +
>>> + TP_STRUCT__entry(
>>> + __field(dev_t, dev)
>>> + __field(ino_t, ino)
>>> + __field(loff_t, size)
>>> + __field(loff_t, offset)
>>> + __field(loff_t, len)
>>> + __field(int, advice)
>>> + ),
>>> +
>>> + TP_fast_assign(
>>> + __entry->dev = inode->i_sb->s_dev;
>>> + __entry->ino = inode->i_ino;
>>> + __entry->size = inode->i_size;
>>
>> __entry->size = i_size_read(inode)?
>>
>> Thanks,
>>
> The other "__entry->size = inode->i_size;" in include/trace/events/f2fs.h also need to be updated?
Yeah, Yongpeng, I noticed that and fixed them right after reply:
https://git.kernel.org/pub/scm/linux/kernel/git/chao/linux.git/commit/?h=bugfix/common&id=ffd21bf791143957f6ff1fc14d7dbd6e8466b320
Thanks for your reminder. :)
Thanks,
>
>>> + __entry->offset = offset;
>>> + __entry->len = len;
>>> + __entry->advice = advice;
>>> + ),
>>> +
>>> + TP_printk("dev = (%d,%d), ino = %lu, i_size = %lld offset:%llu, len:%llu, advise:%d",
>>> + show_dev_ino(__entry),
>>> + (unsigned long long)__entry->size,
>>> + __entry->offset,
>>> + __entry->len,
>>> + __entry->advice)
>>> +);
>>> +
>>> TRACE_EVENT(f2fs_map_blocks,
>>> TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int flag,
>>> int ret),
>>
>>
>>
>> _______________________________________________
>> Linux-f2fs-devel mailing list
>> Linux-f2fs-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>
On 10/29, Chao Yu wrote:
> On 10/29/25 11:13, Yongpeng Yang wrote:
> > On 10/29/25 10:06, Chao Yu via Linux-f2fs-devel wrote:
> >> On 10/29/25 03:54, Jaegeuk Kim via Linux-f2fs-devel wrote:
> >>> This adds a tracepoint in the fadvise call path.
> >>>
> >>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> >>> ---
> >>> fs/f2fs/file.c | 2 ++
> >>> include/trace/events/f2fs.h | 32 ++++++++++++++++++++++++++++++++
> >>> 2 files changed, 34 insertions(+)
> >>>
> >>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
> >>> index 6d42e2d28861..4a81089c5df3 100644
> >>> --- a/fs/f2fs/file.c
> >>> +++ b/fs/f2fs/file.c
> >>> @@ -5288,6 +5288,8 @@ static int f2fs_file_fadvise(struct file *filp, loff_t offset, loff_t len,
> >>> struct inode *inode = file_inode(filp);
> >>> int err;
> >>> + trace_f2fs_fadvise(inode, offset, len, advice);
> >>> +
> >>> if (advice == POSIX_FADV_SEQUENTIAL) {
> >>> if (S_ISFIFO(inode->i_mode))
> >>> return -ESPIPE;
> >>> diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
> >>> index edbbd869078f..b7f5317b5980 100644
> >>> --- a/include/trace/events/f2fs.h
> >>> +++ b/include/trace/events/f2fs.h
> >>> @@ -586,6 +586,38 @@ TRACE_EVENT(f2fs_file_write_iter,
> >>> __entry->ret)
> >>> );
> >>> +TRACE_EVENT(f2fs_fadvise,
> >>> +
> >>> + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int advice),
> >>> +
> >>> + TP_ARGS(inode, offset, len, advice),
> >>> +
> >>> + TP_STRUCT__entry(
> >>> + __field(dev_t, dev)
> >>> + __field(ino_t, ino)
> >>> + __field(loff_t, size)
> >>> + __field(loff_t, offset)
> >>> + __field(loff_t, len)
> >>> + __field(int, advice)
> >>> + ),
> >>> +
> >>> + TP_fast_assign(
> >>> + __entry->dev = inode->i_sb->s_dev;
> >>> + __entry->ino = inode->i_ino;
> >>> + __entry->size = inode->i_size;
> >>
> >> __entry->size = i_size_read(inode)?
> >>
> >> Thanks,
> >>
> > The other "__entry->size = inode->i_size;" in include/trace/events/f2fs.h also need to be updated?
>
> Yeah, Yongpeng, I noticed that and fixed them right after reply:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/chao/linux.git/commit/?h=bugfix/common&id=ffd21bf791143957f6ff1fc14d7dbd6e8466b320
Please post the above patch separately. :)
>
> Thanks for your reminder. :)
>
> Thanks,
>
> >
> >>> + __entry->offset = offset;
> >>> + __entry->len = len;
> >>> + __entry->advice = advice;
> >>> + ),
> >>> +
> >>> + TP_printk("dev = (%d,%d), ino = %lu, i_size = %lld offset:%llu, len:%llu, advise:%d",
> >>> + show_dev_ino(__entry),
> >>> + (unsigned long long)__entry->size,
> >>> + __entry->offset,
> >>> + __entry->len,
> >>> + __entry->advice)
> >>> +);
> >>> +
> >>> TRACE_EVENT(f2fs_map_blocks,
> >>> TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int flag,
> >>> int ret),
> >>
> >>
> >>
> >> _______________________________________________
> >> Linux-f2fs-devel mailing list
> >> Linux-f2fs-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
> >
© 2016 - 2026 Red Hat, Inc.