From: Matthew Wilcox <matthew@wil.cx>
To: "Halfmann, Klaus" <khalfmann@libra.de>
Cc: "'Matthew Wilcox'" <matthew@wil.cx>,
Roman Zippel <roman@augan.com>,
linuxppc-dev@lists.linuxppc.org, linux-fsdevel@vger.kernel.org
Subject: Btree directories (Re: Status of HFS+ support)
Date: Tue, 29 Aug 2000 18:18:51 +0100 [thread overview]
Message-ID: <20000829181851.D6395@parcelfarce.linux.theplanet.co.uk> (raw)
In-Reply-To: <F14441D40E5AD3118886005004607AD10BDD7F@MAIL1>; from khalfmann@libra.de on Tue, Aug 29, 2000 at 06:40:08PM +0200
On Tue, Aug 29, 2000 at 06:40:08PM +0200, Halfmann, Klaus wrote:
> On the other hand: The hfs acces is normally not needed for heavy
> concurrent acces. (Mhh, there might be AFP Servers publishing HFS
> partions) For now it should be enough to have a global update
> lock on the root of the node. Im not firm with kernel code yet, dont
> ask me about the details :-)
It's not that easy. Unfortunately, getdents is a nasty interface (I
actually haven't seen a good one -- anyone know of one which doesn't
suffer from this problem?)
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?
Hmmm.. now the LFS patches have gone in and f_pos is now a 64-bit quantity,
this sounds more plausible. I'd be curious to hear from the ReiserFS
people how they solved this problem.
There's an additional complication of rewinddir/seekdir/telldir, but
let's get onto that later.
> I'd really like to know how the concurrency of the kernel filesystem
> should work, can anybody feed me with documentations about that ?
I've cc'd linux-fsdevel, where people can fill you in.
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
next prev parent reply other threads:[~2000-08-29 17:18 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 ` Matthew Wilcox [this message]
2000-08-29 18:45 ` Btree directories (Re: Status of HFS+ support) Steve Lord
2000-08-29 21:25 ` Matthew Wilcox
2000-08-30 2:22 ` flar
2000-08-30 8:35 ` Andi Kleen
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=20000829181851.D6395@parcelfarce.linux.theplanet.co.uk \
--to=matthew@wil.cx \
--cc=khalfmann@libra.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linuxppc-dev@lists.linuxppc.org \
--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).