linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Anton Altaparmakov <aia21@cam.ac.uk>
To: Akshat Aranya <aaranya@cs.sunysb.edu>
Cc: linux-fsdevel@vger.kernel.org
Subject: Re: Expected getdents behaviour
Date: Thu, 15 Sep 2005 15:12:38 +0100	[thread overview]
Message-ID: <1126793558.1676.15.camel@imp.csi.cam.ac.uk> (raw)
In-Reply-To: <1126793268.1676.9.camel@imp.csi.cam.ac.uk>

On Thu, 2005-09-15 at 15:07 +0100, Anton Altaparmakov wrote:
> On Thu, 2005-09-15 at 09:57 -0400, Akshat Aranya wrote:
> > I noticed that bonnie++, in its directory tests, does the following on
> > a large directory
> > 
> > open(dir);
> > while (getdents() != 0)
> > {
> >    unlink all the returned entries from getdents
> > }
> > close(dir);
> > 
> > My question is whether the filesystem's readdir is expected to
> > consider the offset value in the second readdir to still be valid,
> > given that entries from the directory were deleted after the first
> > readdir.
> 
> This would fail horribly on ntfs for example (once it supports file
> deletion anyway) since the offset value of all entries changes when the
> directory is modified.

Oops.  I forgot to answer your question.  Yes, the filesystem needs to
consider the offset value in the second readdir to still be valid.  You
cannot keep rewinding back to zero every time you make a modification or
you would keep returning entries you have already returned and never
make any progress if e.g. some user does this in a loop at the same
time:

while 1; do
	touch blah
	rm blah
done

It would be a very effective DOS that any user can trigger.

Bonnie++'s code is just complete crap...  It is the author's fault that
it will not work on filesystems where the directory entries are not in
fixed locations...

Best regards,

        Anton
-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/


  reply	other threads:[~2005-09-15 14:12 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-15 13:57 Expected getdents behaviour Akshat Aranya
2005-09-15 14:03 ` Peter Staubach
2005-09-15 14:07 ` Anton Altaparmakov
2005-09-15 14:12   ` Anton Altaparmakov [this message]
2005-09-15 14:45     ` Miklos Szeredi
2005-09-15 15:17       ` Anton Altaparmakov
2005-09-15 16:41         ` Jan Blunck
2005-09-15 17:46           ` Jörn Engel
2005-09-15 18:19             ` Theodore Ts'o
2005-09-15 21:04               ` Anton Altaparmakov
2005-09-16  7:50                 ` Nikita Danilov
2005-09-15 21:47               ` Jörn Engel
2005-09-16  7:29               ` Nikita Danilov
2005-09-16 11:58                 ` Theodore Ts'o
2005-09-15 21:00             ` Anton Altaparmakov
2005-09-15 21:15               ` Charles P. Wright
2005-09-15 21:19                 ` Anton Altaparmakov
2005-09-15 20:28           ` Anton Altaparmakov
2005-09-15 16:51         ` Miklos Szeredi
2005-09-15 21:17           ` Anton Altaparmakov
2005-09-15 15:51     ` Theodore Ts'o
2005-09-15 16:52       ` Bryan Henderson
2005-09-15 16:57         ` Jeremy Allison
2005-09-15 20:51           ` Anton Altaparmakov
2005-09-15 20:50         ` Anton Altaparmakov
2005-09-15 23:41           ` Bryan Henderson
2005-09-15 20:25       ` Anton Altaparmakov
2005-09-16  3:39         ` Theodore Ts'o
2005-09-16 11:57           ` Dave Kleikamp
2005-09-15 18:08     ` Nikita Danilov
2005-09-16 11:23       ` Miklos Szeredi
2005-09-16  1:28   ` tridge

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=1126793558.1676.15.camel@imp.csi.cam.ac.uk \
    --to=aia21@cam.ac.uk \
    --cc=aaranya@cs.sunysb.edu \
    --cc=linux-fsdevel@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;
as well as URLs for NNTP newsgroup(s).