[1/1] f2fs: pass I_NEW flag to trace event

Message ID 20230516120747.68844-1-bo.wu@vivo.com
State New
Headers
Series [1/1] f2fs: pass I_NEW flag to trace event |

Commit Message

Wu Bo May 16, 2023, 12:07 p.m. UTC
  Modify the order between 'trace_f2fs_iget' & 'unlock_new_inode', so the
I_NEW can pass to the trace event when the inode initialised.

Signed-off-by: Wu Bo <bo.wu@vivo.com>
---
 fs/f2fs/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Chao Yu May 17, 2023, 2:44 a.m. UTC | #1
On 2023/5/16 20:07, Wu Bo wrote:
> Modify the order between 'trace_f2fs_iget' & 'unlock_new_inode', so the
> I_NEW can pass to the trace event when the inode initialised.

Why is it needed? And trace_f2fs_iget() won't print inode->i_state?

Thanks,

> 
> Signed-off-by: Wu Bo <bo.wu@vivo.com>
> ---
>   fs/f2fs/inode.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
> index cf4327ad106c..caf959289fe7 100644
> --- a/fs/f2fs/inode.c
> +++ b/fs/f2fs/inode.c
> @@ -577,8 +577,8 @@ struct inode *f2fs_iget(struct super_block *sb, unsigned long ino)
>   		file_dont_truncate(inode);
>   	}
>   
> -	unlock_new_inode(inode);
>   	trace_f2fs_iget(inode);
> +	unlock_new_inode(inode);
>   	return inode;
>   
>   bad_inode:
  
Wu Bo May 17, 2023, 3:59 a.m. UTC | #2
On 2023/5/17 10:44, Chao Yu wrote:
> On 2023/5/16 20:07, Wu Bo wrote:
>> Modify the order between 'trace_f2fs_iget' & 'unlock_new_inode', so the
>> I_NEW can pass to the trace event when the inode initialised.
>
> Why is it needed? And trace_f2fs_iget() won't print inode->i_state?

When connect a trace_probe to f2fs_iget, it will be able to determine whether
the inode is new initialised in order to do different process.

>
> Thanks,
>
>>
>> Signed-off-by: Wu Bo <bo.wu@vivo.com>
>> ---
>>   fs/f2fs/inode.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
>> index cf4327ad106c..caf959289fe7 100644
>> --- a/fs/f2fs/inode.c
>> +++ b/fs/f2fs/inode.c
>> @@ -577,8 +577,8 @@ struct inode *f2fs_iget(struct super_block *sb,
>> unsigned long ino)
>>           file_dont_truncate(inode);
>>       }
>>   -    unlock_new_inode(inode);
>>       trace_f2fs_iget(inode);
>> +    unlock_new_inode(inode);
>>       return inode;
>>     bad_inode:
>
>
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>
  
Chao Yu May 17, 2023, 8:36 a.m. UTC | #3
On 2023/5/17 11:59, Wu Bo wrote:
> On 2023/5/17 10:44, Chao Yu wrote:
>> On 2023/5/16 20:07, Wu Bo wrote:
>>> Modify the order between 'trace_f2fs_iget' & 'unlock_new_inode', so the
>>> I_NEW can pass to the trace event when the inode initialised.
>>
>> Why is it needed? And trace_f2fs_iget() won't print inode->i_state?
> 
> When connect a trace_probe to f2fs_iget, it will be able to determine whether
> the inode is new initialised in order to do different process.

I didn't get it, you want to hook __tracepoint_f2fs_iget() w/ your own callback?

Thanks,

> 
>>
>> Thanks,
>>
>>>
>>> Signed-off-by: Wu Bo <bo.wu@vivo.com>
>>> ---
>>>    fs/f2fs/inode.c | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
>>> index cf4327ad106c..caf959289fe7 100644
>>> --- a/fs/f2fs/inode.c
>>> +++ b/fs/f2fs/inode.c
>>> @@ -577,8 +577,8 @@ struct inode *f2fs_iget(struct super_block *sb,
>>> unsigned long ino)
>>>            file_dont_truncate(inode);
>>>        }
>>>    -    unlock_new_inode(inode);
>>>        trace_f2fs_iget(inode);
>>> +    unlock_new_inode(inode);
>>>        return inode;
>>>      bad_inode:
>>
>>
>> _______________________________________________
>> Linux-f2fs-devel mailing list
>> Linux-f2fs-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>>
  
Wu Bo May 17, 2023, 2:31 p.m. UTC | #4
On 2023/5/17 16:36, Chao Yu wrote:
> On 2023/5/17 11:59, Wu Bo wrote:
>> On 2023/5/17 10:44, Chao Yu wrote:
>>> On 2023/5/16 20:07, Wu Bo wrote:
>>>> Modify the order between 'trace_f2fs_iget' & 'unlock_new_inode', so 
>>>> the
>>>> I_NEW can pass to the trace event when the inode initialised.
>>>
>>> Why is it needed? And trace_f2fs_iget() won't print inode->i_state?
>>
>> When connect a trace_probe to f2fs_iget, it will be able to determine 
>> whether
>> the inode is new initialised in order to do different process.
>
> I didn't get it, you want to hook __tracepoint_f2fs_iget() w/ your own 
> callback?
Yes,  to use 'tracepoint_probe_register ' to register a probe at 
trace_f2fs_iget
>
> Thanks,
>
>>
>>>
>>> Thanks,
>>>
>>>>
>>>> Signed-off-by: Wu Bo <bo.wu@vivo.com>
>>>> ---
>>>>    fs/f2fs/inode.c | 2 +-
>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
>>>> index cf4327ad106c..caf959289fe7 100644
>>>> --- a/fs/f2fs/inode.c
>>>> +++ b/fs/f2fs/inode.c
>>>> @@ -577,8 +577,8 @@ struct inode *f2fs_iget(struct super_block *sb,
>>>> unsigned long ino)
>>>>            file_dont_truncate(inode);
>>>>        }
>>>>    -    unlock_new_inode(inode);
>>>>        trace_f2fs_iget(inode);
>>>> +    unlock_new_inode(inode);
>>>>        return inode;
>>>>      bad_inode:
>>>
>>>
>>> _______________________________________________
>>> Linux-f2fs-devel mailing list
>>> Linux-f2fs-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>>>
  
Jaegeuk Kim May 18, 2023, 12:32 a.m. UTC | #5
On 05/17, Wu Bo wrote:
> On 2023/5/17 16:36, Chao Yu wrote:
> > On 2023/5/17 11:59, Wu Bo wrote:
> > > On 2023/5/17 10:44, Chao Yu wrote:
> > > > On 2023/5/16 20:07, Wu Bo wrote:
> > > > > Modify the order between 'trace_f2fs_iget' &
> > > > > 'unlock_new_inode', so the
> > > > > I_NEW can pass to the trace event when the inode initialised.
> > > > 
> > > > Why is it needed? And trace_f2fs_iget() won't print inode->i_state?
> > > 
> > > When connect a trace_probe to f2fs_iget, it will be able to
> > > determine whether
> > > the inode is new initialised in order to do different process.
> > 
> > I didn't get it, you want to hook __tracepoint_f2fs_iget() w/ your own
> > callback?
> Yes,  to use 'tracepoint_probe_register ' to register a probe at
> trace_f2fs_iget

Why?

> > 
> > Thanks,
> > 
> > > 
> > > > 
> > > > Thanks,
> > > > 
> > > > > 
> > > > > Signed-off-by: Wu Bo <bo.wu@vivo.com>
> > > > > ---
> > > > >    fs/f2fs/inode.c | 2 +-
> > > > >    1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
> > > > > index cf4327ad106c..caf959289fe7 100644
> > > > > --- a/fs/f2fs/inode.c
> > > > > +++ b/fs/f2fs/inode.c
> > > > > @@ -577,8 +577,8 @@ struct inode *f2fs_iget(struct super_block *sb,
> > > > > unsigned long ino)
> > > > >            file_dont_truncate(inode);
> > > > >        }
> > > > >    -    unlock_new_inode(inode);
> > > > >        trace_f2fs_iget(inode);
> > > > > +    unlock_new_inode(inode);
> > > > >        return inode;
> > > > >      bad_inode:
> > > > 
> > > > 
> > > > _______________________________________________
> > > > Linux-f2fs-devel mailing list
> > > > Linux-f2fs-devel@lists.sourceforge.net
> > > > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
> > > >
  
Wu Bo May 18, 2023, 3:02 p.m. UTC | #6
On 2023/5/18 08:32, Jaegeuk Kim wrote:
> On 05/17, Wu Bo wrote:
>> On 2023/5/17 16:36, Chao Yu wrote:
>>> On 2023/5/17 11:59, Wu Bo wrote:
>>>> On 2023/5/17 10:44, Chao Yu wrote:
>>>>> On 2023/5/16 20:07, Wu Bo wrote:
>>>>>> Modify the order between 'trace_f2fs_iget' &
>>>>>> 'unlock_new_inode', so the
>>>>>> I_NEW can pass to the trace event when the inode initialised.
>>>>> Why is it needed? And trace_f2fs_iget() won't print inode->i_state?
>>>> When connect a trace_probe to f2fs_iget, it will be able to
>>>> determine whether
>>>> the inode is new initialised in order to do different process.
>>> I didn't get it, you want to hook __tracepoint_f2fs_iget() w/ your own
>>> callback?
>> Yes,  to use 'tracepoint_probe_register ' to register a probe at
>> trace_f2fs_iget
> Why?

Sorry, I don't understand what is your real question.

In my understanding, a trace_event is also a  non-volatile point in 
kernel for probing.

And for my case, I want to develop a tool by trace_probe to collect some 
information.

Thanks

>
>>> Thanks,
>>>
>>>>> Thanks,
>>>>>
>>>>>> Signed-off-by: Wu Bo <bo.wu@vivo.com>
>>>>>> ---
>>>>>>     fs/f2fs/inode.c | 2 +-
>>>>>>     1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
>>>>>> index cf4327ad106c..caf959289fe7 100644
>>>>>> --- a/fs/f2fs/inode.c
>>>>>> +++ b/fs/f2fs/inode.c
>>>>>> @@ -577,8 +577,8 @@ struct inode *f2fs_iget(struct super_block *sb,
>>>>>> unsigned long ino)
>>>>>>             file_dont_truncate(inode);
>>>>>>         }
>>>>>>     -    unlock_new_inode(inode);
>>>>>>         trace_f2fs_iget(inode);
>>>>>> +    unlock_new_inode(inode);
>>>>>>         return inode;
>>>>>>       bad_inode:
>>>>>
>>>>> _______________________________________________
>>>>> Linux-f2fs-devel mailing list
>>>>> Linux-f2fs-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>>>>>
  

Patch

diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
index cf4327ad106c..caf959289fe7 100644
--- a/fs/f2fs/inode.c
+++ b/fs/f2fs/inode.c
@@ -577,8 +577,8 @@  struct inode *f2fs_iget(struct super_block *sb, unsigned long ino)
 		file_dont_truncate(inode);
 	}
 
-	unlock_new_inode(inode);
 	trace_f2fs_iget(inode);
+	unlock_new_inode(inode);
 	return inode;
 
 bad_inode: