Re: [PATCH] vfs: Add a trace point in the mark_inode_dirty function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[ Adding Ingo, Peter and Mathieu ]

On Mon, 2010-11-29 at 14:15 +0900, KOSAKI Motohiro wrote:
> > On Mon, 29 Nov 2010 10:41:51 +0900 (JST)
> > KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> wrote:
> > 
> > > > Signed-of-by: Arjan van de Ven <arjan@xxxxxxxxxxxxxxx>
> > > > ---
> > > >  fs/fs-writeback.c                |    3 +++
> > > >  include/linux/fs.h               |   12 ++++++++++++
> > > >  include/trace/events/writeback.h |   28
> > > > ++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 0
> > > > deletions(-)
> > > > 
> > > > diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
> > > > index 3d06ccc..62e33cc 100644
> > > > --- a/fs/fs-writeback.c
> > > > +++ b/fs/fs-writeback.c
> > > > @@ -952,6 +952,9 @@ void __mark_inode_dirty(struct inode *inode,
> > > > int flags) if ((inode->i_state & flags) == flags)
> > > >  		return;
> > > >  
> > > > +	if (flags & (I_DIRTY_SYNC | I_DIRTY_DATASYNC |
> > > > I_DIRTY_PAGES))
> > > > +		trace_writeback_inode_dirty(inode, flags);
> > > > +
> > > 
> > > Why can't we move this branch into TP_fast_assign()?
> > 
> > not really because then the tracepoint is already in process of being
> > emitted... no way to retract it anymore.
> 
> I'm not tracing expert. but Steven said we can it in past. (cc him)
> 
> http://www.spinics.net/lists/linux-ext4/msg20045.html
> 

Yes, this came up before. Currently, if you add the if statement in the
trcacepoint, you just wasted space. But if we can add a discard_entry,
or better yet, I can add a TRACE_EVENT_CONDITION() that adds an if
statement to check. Something like:

	TRACE_EVENT_CONDITION(name,
		[...]
	TP_condition(
			if (flags & (I_DIRTY_SYNC | I_DIRTY_DATASYNC |
			    I_DIRTY_PAGES))
				return 1;
			else
				return 0;
		    ),

Have this run on the parameters and not the entry fields (because the
entry fields are from the ring buffer, and to use them, we must first
write to the ring buffer (something we want to avoid).

We could also make this code work with "pre-filters". That is, filters
on the tracepoints that access the parameters and not the final entries.
This would let us circumvent allocating ring buffer space when the
filter states to skip the entry.

-- Steve

			


--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux