From: jblunck@suse.de
To: "Jörn Engel" <joern@wohnheim.fh-wedel.de>
Cc: jblunck@suse.de, Miklos Szeredi <miklos@szeredi.hu>,
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:34:20 +0100 [thread overview]
Message-ID: <20051104153420.GA23962@hasse.suse.de> (raw)
In-Reply-To: <20051104151646.GB31827@wohnheim.fh-wedel.de>
On Fri, Nov 04, Jörn Engel wrote:
> On Fri, 4 November 2005 16:11:04 +0100, jblunck@suse.de wrote:
> >
> > 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.
>
> Does that mean that, to satisfy the standard, you'd have to allow the
> seek, but return 0 bytes on further reads, as you're already at (or
> beyond, whatever) EOF?
No. To satisfy the standard, it would be necessary to let the seek succeed and
to return the already unlinked dentry or the next dentry (this is
unspecified). I think we should return the next dentry, therefore I let the
seek fail (seekdir() doesn't even have a return value) and the cursor/f_pos is
still at the old offset.
The real problem is this IMHO:
...
telldir() = a
...
telldir() = b
readdir() = foo.txt
unlink(foo.txt)
seekdir(a)
seekdir(b)
readdir() = ???
With my patch the seekdir(b) doesn't find the offset and is placing the cursor
at the end of the directory. In my understanding of the SuSV3 this should be
possible and should return either "foo.txt" or the next entry after
"foo.txt". I don't see any chance how I can implement that.
Regards,
Jan Blunck
--
Jan Blunck jblunck@suse.de
SuSE LINUX AG - A Novell company
Maxfeldstr. 5 +49-911-74053-608
D-90409 Nürnberg http://www.suse.de
next prev parent reply other threads:[~2005-11-04 15:33 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
2005-11-04 15:16 ` Jörn Engel
2005-11-04 15:34 ` jblunck [this message]
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=20051104153420.GA23962@hasse.suse.de \
--to=jblunck@suse.de \
--cc=joern@wohnheim.fh-wedel.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