From: torvalds@transmeta.com (Linus Torvalds)
To: linux-kernel@vger.kernel.org
Subject: Re: Kernel Compile in tmpfs crumples in 2.4.12 w/epoll patch
Date: Sun, 21 Oct 2001 17:50:48 +0000 (UTC) [thread overview]
Message-ID: <9qv1to$ase$1@penguin.transmeta.com> (raw)
In-Reply-To: <016a01c15831$ef51c5c0$5c044589@legato.com> <20011020171730.A28057@parallab.uib.no> <3BD28673.1060302@sap.com> <20011021093547.A24227@work.bitmover.com>
In article <20011021093547.A24227@work.bitmover.com>,
Larry McVoy <lm@bitmover.com> wrote:
>
>One of the engineers here has also seen this. The root cause is that
>readdir() is returning a file multiple times. We've seen it on tmpfs.
Yes. "tmpfs" will consider the position in the dentry lists to be the
"offset" in the file, and if you remove files from the directory as you
do a readdir(), you can get the same file twice (or you can fail to see
files).
If somebody has a good suggestion for what could be used as a reasonably
efficient "cookie" for virtual filesystems like tmpfs, speak up. In the
meantime, one way to _mostly_ avoid this should be to give a big buffer
to readdir(), so that you end up getting all entries in one go (which
will be protected by the semaphore inside the kernel), rather than
having to do multiple readdir() calls.
(But we don't have an EOF cookie either, so..)
The logic, in case people care is just "dcache_readdir()" in
fs/readdir.c, and that logic is used for all virtual filesystems, so
fixing that will fix not just tmpfs..
Now, that said it might be worthwhile to be more robust on an
application layer by simply just sorting the directory. As you point
out, NFS to some servers can have the same issues, for very similar
reasons - on many filesystems a directory "position" is not a stable
thing if you remove or add files at the same time.
So I would consider the current tmpfs behaviour a beauty wart and
something to be fixed, but at the same time I also think you're
depending on behaviour that is not in any way guaranteed, and I would
argue that the tmpfs behaviour (while bad) is not actually strictly a
bug but more a quality-of-implementation issue.
Linus
next prev parent reply other threads:[~2001-10-21 17:52 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-19 0:06 Kernel Compile in tmpfs crumples in 2.4.12 w/epoll patch David E. Weekly
2001-10-19 0:22 ` Davide Libenzi
2001-10-19 1:26 ` safemode
2001-10-19 5:12 ` Daniel T. Chen
2001-10-19 8:28 ` Christoph Rohland
2001-10-20 15:17 ` Jan-Frode Myklebust
2001-10-21 8:25 ` Christoph Rohland
2001-10-21 10:07 ` Jan-Frode Myklebust
2001-10-20 22:35 ` wild pointer!!!!! Kalyan
2001-10-21 12:21 ` Paul Mackerras
2001-10-21 12:15 ` Kernel Compile in tmpfs crumples in 2.4.12 w/epoll patch safemode
[not found] ` <E15vHVx-0001Nc-00@ii.uib.no>
2001-10-21 12:34 ` Jan-Frode Myklebust
2001-10-21 12:53 ` safemode
[not found] ` <E15vI6n-0001oC-00@ii.uib.no>
2001-10-21 13:10 ` bk regression fails on tmpfs /tmp, was: " Jan-Frode Myklebust
2001-10-21 13:36 ` safemode
2001-10-21 16:35 ` Larry McVoy
2001-10-21 17:50 ` Linus Torvalds [this message]
2001-10-21 20:15 ` Daniel Phillips
2001-10-22 17:03 ` bill davidsen
2001-10-22 17:12 ` Larry McVoy
2001-10-22 17:29 ` Alexander Viro
2001-10-23 5:25 ` Keith Owens
2001-10-22 9:44 ` Christoph Rohland
2001-10-22 10:01 ` Alexander Viro
2001-10-22 13:29 ` Wayne Scott
2001-10-22 17:31 ` bill davidsen
2001-10-30 17:29 ` Theodore Tso
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='9qv1to$ase$1@penguin.transmeta.com' \
--to=torvalds@transmeta.com \
--cc=linux-kernel@vger.kernel.org \
/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