From: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
To: linux-kernel@vger.kernel.org
Subject: Re: making an in-memory hashing table ["name" -> ino_t] with thousands of entries
Date: Fri, 1 Oct 2004 14:33:02 +0100 [thread overview]
Message-ID: <20041001133302.GB8507@lkcl.net> (raw)
In-Reply-To: <20041001123019.GC4072@admingilde.org>
On Fri, Oct 01, 2004 at 02:30:19PM +0200, Martin Waitz wrote:
> hi :)
hello martin: thanks for responding.
> On Fri, Oct 01, 2004 at 01:02:22PM +0100, Luke Kenneth Casson Leighton wrote:
> > bearing in mind that for every file accessed via a fuse
> > filesystem, a cache entry is created, and therefore the number
> > of entries could potentially run into hundreds of thousands
> > of entries.
>
> but these can be cleaned if needed.
>
> why do you have to move all inodes into the kernel when the kernel
> already cache those that are really needed?
> (perhaps I'm misunderstandig fuses role here)
fuse is a userspace filesystem.
it can be absolutely anything.
however, the author of fuse, in order to simplify the userspace
interface, manages the userspace-inode <-> userspace-fullpathnames
in a library.
for the sake of argument, let's call this the fuse-inode-cache.
entries in the fuse-inode-cache must be persistent for as long as a
filename exists on the userspace file system.
also, if an entry happens not to exist at the time a lookup
is done, then an entry into the cache is created, associating that full
path name with a newly created unique inode number (in the userspace
fuse-inode-cache).
then, that information (the unique inode number) is communicated _back_
to the fuse module, along with the stat information (yes, a userspace
lstat is done as well), and the kernel's inode structure is updated
from that information.
anyway: for various reasons, inside the kernel, it must
be possible to do a lookup from the full path name to the
inode number.
smbfs suffers from exactly the same problem: inodes don't exist on the
SMB protocol.
hm, i wonder if i should just rip stacks of code from the smbfs kernel
module?
i note with interest the existence of a function smb_refresh_inode()
which gets passed a dentry.
then i can do a getattr and go from there.
oh, man, this is hair-raising stuff.
l.
--
--
Truth, honesty and respect are rare commodities that all spring from
the same well: Love. If you love yourself and everyone and everything
around you, funnily and coincidentally enough, life gets a lot better.
--
<a href="http://lkcl.net"> lkcl.net </a> <br />
<a href="mailto:lkcl@lkcl.net"> lkcl@lkcl.net </a> <br />
prev parent reply other threads:[~2004-10-01 13:21 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-01 12:02 making an in-memory hashing table ["name" -> ino_t] with thousands of entries Luke Kenneth Casson Leighton
2004-10-01 12:30 ` Martin Waitz
2004-10-01 13:33 ` Luke Kenneth Casson Leighton [this message]
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=20041001133302.GB8507@lkcl.net \
--to=lkcl@lkcl.net \
--cc=linux-kernel@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