public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Jonathan Corbet <corbet@lwn.net>
Cc: mpm@selenic.com, dada1@cosmosbay.com,
	linux-kernel@vger.kernel.org, andi@firstfloor.org,
	oleg@redhat.com, viro@ZenIV.linux.org.uk,
	davidel@xmailserver.org, davem@davemloft.net, hch@lst.de,
	linux-api@vger.kernel.org, alan@lxorguk.ukuu.org.uk
Subject: Re: [PATCH 2/4] Convert epoll to a bitlock
Date: Tue, 3 Feb 2009 14:53:46 -0800	[thread overview]
Message-ID: <20090203145346.8df40277.akpm@linux-foundation.org> (raw)
In-Reply-To: <20090203153740.363d0a04@bike.lwn.net>

On Tue, 3 Feb 2009 15:37:40 -0700
Jonathan Corbet <corbet@lwn.net> wrote:

> On Tue, 03 Feb 2009 16:22:02 -0600
> Matt Mackall <mpm@selenic.com> wrote:
> 
> > But that re-opens the question of what to do about poor Jon's quest.
> >
> > I got confused halfway through as he went from using a global fasync
> > spinlock to a non-locked but atomic flag bit. Not sure why using a
> > per-file or per-inode lock doesn't work for the fasync code.
> 
> No per-file lock because (1) there is resistance to growing struct
> file, and (2) lockless algorithms are all the rage now.  Additionally,
> solving the fasync-atomicity problem with locks requires the use of a
> mutex (or the BKL) rather than a spinlock.  I suppose we could combine
> a global f_flags lock with the set-FASYNC-in-fasync_helper() bits.
> 
> At this point Poor Jon sees a fork in the road as he contemplates the
> future of his quest:
> 
> - Go with this patch set, perhaps with a bit of cleanup as suggested by
>   Andrew.
> 
> - Go back to the global lock.
> 
> - Go away, leave the BKL in place, and wait for somebody smarter to
>   attack the problem.

Well.  We _could_ whack part of this nut with my usual hammer: protect
f_flags with file->f_dentry->d_inode->i_lock.  IIRC there was some
objection to that - performance?

One problem here seems to be that we're trying to change multiple
things at the same time.  We can blame the BKL for that.

Can we break the problem into manageable chunks?  Your patchset did
that, I guess.  What were those chunks again? ;)

  reply	other threads:[~2009-02-03 22:55 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-02 18:20 [PATCH/RFC] F_SETFL/Fasync BKL removal, now without unsightly global locks Jonathan Corbet
2009-02-02 18:20 ` [PATCH 1/4] Use bit operations for file->f_flags Jonathan Corbet
2009-02-03 21:37   ` Andrew Morton
2009-02-02 18:20 ` [PATCH 2/4] Convert epoll to a bitlock Jonathan Corbet
2009-02-03 21:39   ` Andrew Morton
2009-02-03 21:55     ` Eric Dumazet
2009-02-03 22:05       ` Andrew Morton
2009-02-03 22:22         ` Matt Mackall
2009-02-03 22:37           ` Jonathan Corbet
2009-02-03 22:53             ` Andrew Morton [this message]
2009-02-03 23:09               ` Davide Libenzi
2009-02-03 23:12                 ` Davide Libenzi
2009-02-03 23:19               ` Jonathan Corbet
2009-02-03 23:29                 ` Andrew Morton
2009-02-04  7:13                 ` Christoph Hellwig
2009-02-04  7:20                   ` Nick Piggin
2009-02-04 13:34                     ` Jonathan Corbet
2009-02-04 16:51                   ` Davide Libenzi
2009-02-03 23:08       ` Davide Libenzi
2009-02-04  2:48         ` Eric Dumazet
2009-02-04  1:00     ` wli
2009-02-04  4:54     ` Nick Piggin
2009-02-02 18:20 ` [PATCH 3/4] Move FASYNC bit handling to f_op->fasync() Jonathan Corbet
2009-02-02 18:20 ` [PATCH 4/4] Rationalize fasync return values Jonathan Corbet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090203145346.8df40277.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=andi@firstfloor.org \
    --cc=corbet@lwn.net \
    --cc=dada1@cosmosbay.com \
    --cc=davem@davemloft.net \
    --cc=davidel@xmailserver.org \
    --cc=hch@lst.de \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpm@selenic.com \
    --cc=oleg@redhat.com \
    --cc=viro@ZenIV.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox