From: Phil Lougher <phil.lougher@gmail.com>
To: John Richard Moser <nigelenki@comcast.net>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Designing Another File System
Date: Wed, 1 Dec 2004 02:46:18 +0000 [thread overview]
Message-ID: <cce9e37e04113018465091010f@mail.gmail.com> (raw)
In-Reply-To: <41AD218E.7090305@comcast.net>
On Tue, 30 Nov 2004 20:42:38 -0500, John Richard Moser
> Phil Lougher wrote:
> | Um, all filesystems do that, I think you're missing words to the
> | effect "without any performance loss or block fragmentation" !
>
> All filesystems allow you to create the FS with 1 inode total?
>
> Filesystem Inodes IUsed IFree IUse% Mounted on
> /dev/hda1 7823616 272670 7550946 4% /
>
> No, it looks like this one allocates many inodes and uses them as it
> goes. Reiser has 0 inodes . . .
Yes you're right. What I said was total rubbish. I read your
statement as meaning to dynamically allocate/deallocate inodes from a
set configured at filesystem creation...
> |
> | The 64 bit resolution is only necessary within the filesystem dentry
> | lookup function to go from a directory name entry to the physical
> | inode location on disk. The inode number can then be reduced to 32
> | bits for 'presentation' to the VFS. AFAIK as all file access is
> | through the dentry cache this is sufficient. The only problems are
> | that VFS iget() needs to be replaced with a filesystem specific iget.
> | A number of filesystems do this. Squashfs internally uses 37 bit
> | inode numbers and presents them as 32 bit inode numbers in this way.
> |
>
> Ugly, but ok. What happens when i actually have >4G inodes though?
Well this is an issue that affects all filesystems on 32-bit systems
(as Alan said inode numbers are 64 bits on 64 bit systems). To be
honest I've never let this worry me...
A 32-bit system can never cache 4G inodes in memory without falling
over, and so a simple solution would be to allocate the 32-bit inode
number dynamically (e.g. starting at one and going up, keeping track
of inode numbers still used for use when/if wraparound occured), this
would guarantee inode number uniqueness for the subset of file inodes
in memory at any one time, with the drawback that inode numbers
allocated to files will change over filesystem mounts. Alternatively
from reading fs/inode.c it appears that inode numbers only need to be
unique if the fast hashed inode cache lookup functions are used, there
are other inode cache lookup functions that can be used if inode
numbers are not unique.
> | I've had people trying to store 500,000 + files in a Squashfs
> | directory. Needless to say with the original directory implementation
> | this didn't work terribly well...
> |
>
> Ouch. Someone told me the directory had to be O(1) lookup . . . .
Ideally yes, but ultimately with your filesystem you make the rules
:-) The Squashfs directory design was fast for the original expected
directory size (ideally <= 64K, maximum 512K) seen on embedded
systems. The next release of Squashfs has considerably improved
indexed directories which are O(1) for large directories. To be
released sometime soon, if anyone's interested...
Phillip Lougher
next prev parent reply other threads:[~2004-12-01 2:46 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-30 4:32 Designing Another File System John Richard Moser
2004-11-30 7:16 ` Bernd Eckenfels
2004-11-30 13:07 ` Helge Hafting
2004-12-01 1:16 ` John Richard Moser
2004-11-30 16:31 ` Alan Cox
2004-11-30 18:28 ` Valdis.Kletnieks
2004-11-30 17:46 ` Alan Cox
2004-11-30 19:00 ` Jan Engelhardt
2004-11-30 19:14 ` Valdis.Kletnieks
2004-11-30 20:22 ` Valdis.Kletnieks
2004-12-02 23:32 ` David Woodhouse
2004-12-01 1:35 ` John Richard Moser
2004-11-30 19:22 ` Phil Lougher
2004-12-01 1:42 ` John Richard Moser
2004-12-01 2:46 ` Phil Lougher [this message]
2004-12-01 4:32 ` Bernd Eckenfels
2004-12-01 7:51 ` Phil Lougher
2004-12-01 5:11 ` John Richard Moser
2004-12-02 20:18 ` Jan Knutar
2004-12-07 2:01 ` Phil Lougher
2004-12-07 2:31 ` John Richard Moser
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=cce9e37e04113018465091010f@mail.gmail.com \
--to=phil.lougher@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nigelenki@comcast.net \
/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