From: Arnd Bergmann <arnd@arndb.de>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>,
Jiri Kosina <jkosina@suse.cz>,
linux-kernel@vger.kernel.org, Matthew Wilcox <matthew@wil.cx>,
Thomas Gleixner <tglx@linutronix.de>,
jblunck@suse.de, Alan Cox <alan@linux.intel.com>,
Ingo Molnar <mingo@elte.hu>, John Kacur <jkacur@redhat.com>
Subject: Re: [GIT, RFC] Killing the Big Kernel Lock
Date: Sun, 28 Mar 2010 22:34:54 +0100 [thread overview]
Message-ID: <201003282334.55253.arnd@arndb.de> (raw)
In-Reply-To: <20100328201516.GE5116@nowhere>
On Sunday 28 March 2010, Frederic Weisbecker wrote:
> On Sun, Mar 28, 2010 at 09:05:50PM +0100, Arnd Bergmann wrote:
> > > General thoughts:
> > >
> > > ".llseek = NULL," so far meant "do the Right Thing on lseek() and
> > > friends, as far as the fs core can tell". Shouldn't we keep it that
> > > way? It's as close to other ".method = NULL," as it can get, which
> > > either mean "silently skip this method if it doesn't matter" (e.g.
> > > .flush) or "fail attempts to use this method with a fitting errno" (e.g.
> > > .write).
> >
> > My series changes the default from 'default_llseek' to 'generic_file_llseek',
> > which is almost identical, except for taking the inode mutex instead of the
> > BKL.
>
>
> What if another file operation changes the file pointer while holding the bkl?
> You're not protected anymore in this case.
>
Exactly, that's why I changed all the drivers to set default_llseek explicitly.
Even this is very likely not needed in more than a handful of drivers (if any),
for a number of reasons:
- sys_read/sys_write *never* hold any locks while calling file_pos_write(),
which is the only place they get updated for regular files.
- concurrent llseek plus other file operations on the same file descriptor
usually already have an undefined outcome.
- when I started inspecting drivers that look at file->f_pos themselves (not
the read/write operation arguments), I found that practically all of them
are doing this in a totally broken way!
- The only think we'd probably ever want to lock against in llseek
is readdir, which is not used in any drivers, but only in file systems.
Arnd
next prev parent reply other threads:[~2010-03-28 21:35 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-24 21:40 [GIT, RFC] Killing the Big Kernel Lock Arnd Bergmann
2010-03-24 21:07 ` Andrew Morton
2010-03-25 10:26 ` Arnd Bergmann
2010-03-28 20:33 ` Frederic Weisbecker
2010-03-24 21:53 ` Roland Dreier
2010-03-24 21:59 ` Arnd Bergmann
2010-03-31 5:22 ` Roland Dreier
2010-03-24 22:10 ` Alan Cox
2010-03-24 22:25 ` Arnd Bergmann
2010-03-24 22:23 ` Ingo Molnar
2010-03-25 12:55 ` Jiri Kosina
2010-03-25 13:06 ` Arnd Bergmann
2010-03-25 13:38 ` Arnd Bergmann
2010-03-26 23:47 ` Stefan Richter
2010-03-27 9:16 ` [PATCH] firewire: char device files are not seekable (BKL removal) Stefan Richter
2010-03-27 9:20 ` [PATCH] ieee1394: " Stefan Richter
2010-03-27 10:40 ` [PATCH RFC] DVB: add dvb_generic_nonseekable_open, dvb_generic_unlocked_ioctl, use in firedtv Stefan Richter
2010-03-28 14:47 ` [PATCH RFC v2] " Stefan Richter
2010-03-27 14:37 ` [GIT, RFC] Killing the Big Kernel Lock Arnd Bergmann
2010-03-28 12:27 ` Stefan Richter
2010-03-28 20:05 ` Arnd Bergmann
2010-03-28 20:15 ` Frederic Weisbecker
2010-03-28 21:34 ` Arnd Bergmann [this message]
2010-03-28 23:24 ` Frederic Weisbecker
2010-04-08 20:45 ` Jan Blunck
2010-04-08 21:27 ` Arnd Bergmann
2010-04-08 21:30 ` Frederic Weisbecker
2010-04-09 11:02 ` Jan Blunck
2010-04-10 15:13 ` Stefan Richter
2010-03-28 21:58 ` Andi Kleen
2010-03-29 1:07 ` [GIT, RFC] Killing the Big Kernel Lock II Andi Kleen
2010-03-29 11:48 ` Arnd Bergmann
2010-03-29 12:30 ` Andi Kleen
2010-03-29 14:43 ` Arnd Bergmann
2010-03-29 20:11 ` Andi Kleen
2010-03-31 15:30 ` Arnd Bergmann
2010-03-25 13:40 ` [GIT, RFC] Killing the Big Kernel Lock Dan Carpenter
2010-03-25 14:14 ` Arnd Bergmann
2010-03-28 20:04 ` Frederic Weisbecker
2010-03-28 20:11 ` Frederic Weisbecker
2010-03-28 23:18 ` Frederic Weisbecker
2010-03-28 23:38 ` Frederic Weisbecker
2010-03-29 11:04 ` Arnd Bergmann
2010-03-29 17:59 ` Frederic Weisbecker
2010-03-29 21:18 ` Arnd Bergmann
2010-03-29 12:45 ` John Kacur
2010-03-31 22:11 ` Roland Dreier
2010-03-31 22:20 ` Frederic Weisbecker
2010-04-01 8:50 ` Arnd Bergmann
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=201003282334.55253.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=alan@linux.intel.com \
--cc=fweisbec@gmail.com \
--cc=jblunck@suse.de \
--cc=jkacur@redhat.com \
--cc=jkosina@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=mingo@elte.hu \
--cc=stefanr@s5r6.in-berlin.de \
--cc=tglx@linutronix.de \
/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