[reiserfs-list] Re: [OpenAFS-devel] more on the 2.2.18pre17 SMPcpu
hog/etc.
Nathan Neulinger
nneul@umr.edu
Sat, 02 Dec 2000 11:18:39 -0600
> Ok, the problem is that AFS is calling iget, so it probably needs special
> code to deal with reiserfs.
>
> For reiserfs to find an inode on disk, it needs the inode number of the
> file, and the packing locality. This is usually (but not always) the inode
> number of the parent directory. Calling iget is fine when the inode is
> already in memory, otherwise the reiserfs code goes into a very slow, very
> ugly search (the search_by_objectid call) to fill in the other 32 bits of
> information needed to find the file.
But here's the part that doesn't make sense - it doesn't do that on ANY
of the other machines on which I run afs + reiserfs. On most of the
other machines, with caches that are usually anywhere from 15,000 -
35,000 files on reiserfs partitions, it starts up in a few seconds.
The only difference that I can think of is that my home machine has the
afscache as part of the root filesystem, and not on a dedicated
partition (i.e. it's own filesystem at top level, with nothing other
than afscache in it).
> So, can AFS store more information about the file in a filehandle of some
> kind? If so, we can give you code to fill in the packing locality for iget.
I don't know. Whatever is done, it will have to remain 100% compatible
with ext2.
The relevant code is at:
http://www.openafs.org/cgi-bin/cvsweb.cgi/openafs/src
afsd/afsd.c: look for (call_syscall(AFSOP_CACHEINODE,...)
afs/afs_call.c: look for AFSOP_CACHEINODE
afs/afs_dcache.c: look for the call to osi_UFSOpen in afs_InitCacheFile
afs/LINUX/osi_file.c: look for osi_UFSOpen - this is where the iget call
is
done
-- Nathan
------------------------------------------------------------
Nathan Neulinger EMail: nneul@umr.edu
University of Missouri - Rolla Phone: (573) 341-4841
CIS - Systems Programming Fax: (573) 341-4216