Subject: Re: [take5 0/4] kevent: Generic event handling mechanism.

From: Andrew Morton <[email-masked]>
Date: Wed, 9 Aug 2006 01:45:27 -0700

On Wed, 9 Aug 2006 09:34:01 +0100
Christoph Hellwig <[email-masked]> wrote:

> On Wed, Aug 09, 2006 at 10:11:59AM +0400, Evgeniy Polyakov wrote:
> > On Tue, Aug 08, 2006 at 10:52:30PM -0700, David Miller ([email-masked]) wrote:
> > > > Using LIST_POISON is a flag that kevent is in appropriate queue or not,
> > > > I can add some flag into the structure, but why, if it is clear just by
> > > > looking into list's pointers.
> > > 
> > > What is wrong with using list_empty() as this indicator?
> > 
> > RCU only replaces ->prev pointer, and list_empty(entry) checks for
> > entry->next == head, but actually I do not see how kevent entry can
> > point to itself, so I will try this.
> 
> Looking at LIST_POISON1 is still not acceptable at all.  It's an internal
> implementation details that goes and comes back once in a while.  We already
> had a past discussion on a use of this and it went away, maybe Andrew
> can remember it.

The list_del() poisoning will dirty the cacheline which holds the
to-be-deleted list_head.  Unnecesarily.  So it's relatively expensive.

Hence it's quite legitimate to simply remove that poisoning code, and we
might choose to do that at any time in the future, or we might move it
under CONFIG_DEBUG_FOO.

So it isn't yours to play with ;)