From: jblunck@suse.de
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: viro@ftp.linux.org.uk, linux-kernel@vger.kernel.org
Subject: Re: [RFC,PATCH] libfs dcache_readdir() and dcache_dir_lseek() bugfix
Date: Fri, 4 Nov 2005 16:11:04 +0100 [thread overview]
Message-ID: <20051104151104.GA22322@hasse.suse.de> (raw)
In-Reply-To: <E1EY1fi-0004LB-00@dorka.pomaz.szeredi.hu>
On Fri, Nov 04, Miklos Szeredi wrote:
> > As I said: "Old glibc implementations (e.g. glibc-2.2.5) are
> > lseeking after every call to getdents() ..."
>
> Hmm, why would it do that? This seems like it's glibc being stupid.
>
Well, glibc is that stupid and triggers the bug.
> That said, you are right that the libfs readdir implementation is not
> strictly standards conforming. But neither is your patch: this
> algorithm will break if the entry at the current position is removed
> and then a new entry with the same name is created.
True. Seeking to that offset should at least fail and shouldn't stop at the
new entry. But SuSV3 says that the offset given by telldir() is valid until
the next rewinddir(). This is no problem for directories that can only grow.
I tried to implement some kind of deferred dput'ing of the d_child's but that
was too hackish and was wasting memory. So the best thing I can do now is fail
if someone wants to seek to an offset of an already unlinked file.
So I can include the inode number in the hashing process somehow. Any ideas on
that one?
> Unfortunately I can't since I don't have such old glibc.
The testcase is similar to what "rm *" with the old glibc would do. It just
a testcase to show where the problem is.
next prev parent reply other threads:[~2005-11-04 15:10 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-04 11:38 [RFC,PATCH] libfs dcache_readdir() and dcache_dir_lseek() bugfix jblunck
2005-11-04 11:51 ` Al Viro
2005-11-04 12:20 ` jblunck
2005-11-04 12:56 ` Miklos Szeredi
2005-11-04 13:18 ` jblunck
2005-11-04 13:31 ` Miklos Szeredi
2005-11-04 15:11 ` jblunck [this message]
2005-11-04 15:16 ` Jörn Engel
2005-11-04 15:34 ` jblunck
2005-11-04 15:45 ` Jörn Engel
2005-11-04 15:38 ` Miklos Szeredi
2005-11-04 15:32 ` Miklos Szeredi
2005-11-04 15:46 ` jblunck
2005-11-04 15:55 ` Miklos Szeredi
2005-11-04 16:04 ` jblunck
2005-11-04 16:19 ` Miklos Szeredi
2005-11-07 10:17 ` jblunck
2005-11-04 16:27 ` Al Viro
2005-11-04 16:27 ` Trond Myklebust
2005-11-04 16:39 ` Miklos Szeredi
2005-11-04 16:55 ` Rob Landley
2005-11-07 10:06 ` jblunck
2005-11-04 12:52 ` Jörn Engel
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=20051104151104.GA22322@hasse.suse.de \
--to=jblunck@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=viro@ftp.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