[PATCH] f2fs: add fadvise tracepoint

Jaegeuk Kim posted 1 patch 3 months, 1 week ago
fs/f2fs/file.c              |  2 ++
include/trace/events/f2fs.h | 32 ++++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+)
[PATCH] f2fs: add fadvise tracepoint
Posted by Jaegeuk Kim 3 months, 1 week ago
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
Re: [PATCH v2] f2fs: add fadvise tracepoint
Posted by Jaegeuk Kim 3 months, 1 week ago
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
Re: [f2fs-dev] [PATCH v2] f2fs: add fadvise tracepoint
Posted by Chao Yu 3 months ago
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,
Re: [f2fs-dev] [PATCH] f2fs: add fadvise tracepoint
Posted by Chao Yu 3 months, 1 week ago
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),
Re: [f2fs-dev] [PATCH] f2fs: add fadvise tracepoint
Posted by Yongpeng Yang 3 months, 1 week ago
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
Re: [f2fs-dev] [PATCH] f2fs: add fadvise tracepoint
Posted by Chao Yu 3 months, 1 week ago
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
> 

Re: [f2fs-dev] [PATCH] f2fs: add fadvise tracepoint
Posted by Jaegeuk Kim 3 months, 1 week ago
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
> >