linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "Andi Kleen" <ak@suse.de>
To: flar@allandria.com
Cc: matthew@wil.cx (Matthew Wilcox),
	khalfmann@libra.de (Halfmann Klaus),
	roman@augan.com (Roman Zippel),
	linuxppc-dev@lists.linuxppc.org, linux-fsdevel@vger.kernel.org
Subject: Re: Btree directories (Re: Status of HFS+ support)
Date: Wed, 30 Aug 2000 10:35:41 +0200	[thread overview]
Message-ID: <20000830103541.A10787@gruyere.muc.suse.de> (raw)
In-Reply-To: <200008300222.TAA13173@marcus.allandria.com>; from flar@allandria.com on Tue, Aug 29, 2000 at 07:22:05PM -0700


On Tue, Aug 29, 2000 at 07:22:05PM -0700, flar@allandria.com wrote:
> Matthew Wilcox wrote:
> > You can lock while you're in a call, but eventually, you fill up the
> > user's buffer and return.  At that point, you have to drop the lock
> > because they might never call you again.  So you have to consider
> > the case of a file being added or removed between calls to getdents.
> > Current HFS doesn't even pretend to try.  It just stores an index (0
> > .. n-1) and you pick up from there.  So sometimes you get files twice,
> > sometimes files don't show up at all.
> >
> > I suspect you need to store the key of the item you just found, and
> > then continue filling in the buffer from there on subsequent calls.
> > The trouble is that there frequently isn't enough space available to
> > do that.  The proposed ext2 btree extensins needed 64 bits of space and
> > there was only 32 bits available.  What size keys does HFS+ have?
>
> Catalog keys in HFS+ can be anywhere from 8 bytes all the way up to
> 518 bytes. I actually do save the key and do a search in the btree
> in my HFS+ module. (It doesn't seem to work however. And yes, I'm
> helping out Klaus with his code as well as working on a kernel
> module with completely separate code.)

You're sharing a problem with JFS then (and reiserfs to a certain
extent).

In theory you could put as much state as you want into a private field
of the file structure of the directory. This just ignores two ugly things:
NFS and telldir. Both basically require you to generate stateless 32bit
cookies that safely walk your directory.

The only good solution I know is a stable namespace that never shrinks unless
the last entry is removed (basically what ext2 directories do). Then you can
just have an offset into that namespace. Namespace could be hash + collision
counter.

[XFS uses some trick of assuming that buffer sizes are big enough for one
of their hash buckets, but it'll surely break in a lot of cases]

Without stable name space probably your only option is to add dummy entries
into the btree holes instead of rebalancing the tree, and removing all holes
when the last entry goes away.

-Andi


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

  reply	other threads:[~2000-08-30  8:35 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-08-29 16:40 Status of HFS+ support (was hfs support for blocksize != 512) Halfmann, Klaus
2000-08-29 17:18 ` Btree directories (Re: Status of HFS+ support) Matthew Wilcox
2000-08-29 18:45   ` Steve Lord
2000-08-29 21:25     ` Matthew Wilcox
2000-08-30  2:22   ` flar
2000-08-30  8:35     ` Andi Kleen [this message]
2000-08-30 14:25   ` Chris Mason
2000-08-29 18:16 ` Status of HFS+ support (was hfs support for blocksize != 512) Roman Zippel
  -- strict thread matches above, loose matches on Subject: below --
2000-08-30 12:06 Btree directories (Re: Status of HFS+ support) Steve Lord
2000-08-30 15:07 ` Andi Kleen
2000-08-30 16:07   ` flar
2000-08-30 20:49     ` David A. Gatwood
2000-08-30 20:45       ` Steve Lord
2000-08-30 21:05       ` Alexander Viro
2000-08-30 21:51         ` David A. Gatwood
2000-08-30 21:49           ` Alexander Viro
2000-08-30 22:13             ` David A. Gatwood
2000-08-30 22:17               ` Alexander Viro
2000-08-30 23:11                 ` David A. Gatwood
2000-08-31  0:10                   ` Alexander Viro
2000-08-31  5:49       ` flar
2000-08-31 10:33         ` Alexander Viro
2000-08-31 17:48           ` flar
2000-08-31 19:54             ` Alexander Viro
2000-08-31 22:09               ` flar
2000-09-01  2:40                 ` Alexander Viro
2000-09-01  3:52                   ` flar
2000-09-02  4:04                     ` Tony Mantler
2000-09-01 17:05 Halfmann, Klaus
2000-09-01 17:40 ` flar

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=20000830103541.A10787@gruyere.muc.suse.de \
    --to=ak@suse.de \
    --cc=flar@allandria.com \
    --cc=khalfmann@libra.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linuxppc-dev@lists.linuxppc.org \
    --cc=matthew@wil.cx \
    --cc=roman@augan.com \
    /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).