[OpenAFS-devel] using system inodes on linux

chas williams - CONTRACTOR chas@cmf.nrl.navy.mil
Thu, 30 Jun 2005 13:31:22 -0400


here is a patch that changes the linux client to use system allocated
inodes.  it tends to follow the OSF code paths for allocation and release
of the system inodes:  a reference is held on the inode while in the VLRU.

it works for both 2.4 and 2.6 but is broken for 2.2 (you could fix 2.2
if you wanted to allocate the extra bit for vcache from another pool and
attach it to each inode).  this wastes a bit of memory on 2.4 clients,
but this is hopefully offset by the convenience factor of not having to
handle every inode changes.

it has some other changes like attr handling--this would be needed if you
were going to use iget()/inode_insert_hash().  you can also eliminate the
linux specific fake inode handling if you use afs_getattr().  AFSTOI()
is redundant with AFSTOV() and eliminated.

i have done a bit of testing but would like others to try it.
particularly anyone who has been seeing strange races/oops related to
iput() or prune_dcache()/prune_icache().

against 1.3.84:

ftp://ftp.cmf.nrl.navy.mil/pub/chas/openafs/dynamic-inode-patch-1.3.84

against the cvs head (as of 2005/06/29):

ftp://ftp.cmf.nrl.navy.mil/pub/chas/openafs/dynamic-inode-patch-head

[note to moderators:  i sent this earlier but the message was too big.
please discard the earlier missive].