[CFT] rename patch + FAT patches

Alexander Viro (viro@math.psu.edu)
Mon, 29 Mar 1999 05:35:40 -0500 (EST)


Folks, there's a new version of rename patch (against 2.2.5-pre2,
applies to 2.2.5 equally well) out there. Actually there are two patches.

1) rename patch now completely moves d_move() to VFS, both for directories
and non-directories. It's fairly close to the tested variant, so it should
be pretty stable (knocking the wood, preparing brown paperback...). Final
variant will differ from it in several places, but for most of filesystems
it will be the same (places that will change: NFS, NCPFS and UMSDOS).
Please, test it. It's on ftp.math.psu.edu/pub/viro/rename-patch-10.gz

2) FAT patch. It's a prerequisite for any UMSDOS cleanups. It's completely
untested yet and definitely contains a lot of bugs. On the brighter side,
it fixes a lot of races in MSDOS and VFAT and simplifies them big way. I'm
putting it on ftp.math.psu.edu too, but it's *very* alpha. There are too
variants - incremental over the rename patch and combined one
(fat-patch-4.gz and rename+fat-patch-4.gz, resp.).
Status of FAT patch -
Good things: sane inumbers are there; *lots* of races
exterminated; msdos and vfat drivers seriously simplified.
Bad things: NFS export of msdos/vfat will give tons of stale
fhandles with unfsd (if it will work at all). knfsd will work, but it will
also produce stale fhandles in some amounts. UMSDOS will *not* work with
the FAT patch in its current form.

Things of possible interest for other filesystems (in FAT patch,
that is):

a) there is a safe way to keep references to inodes *not* counted in
i_count. Details:
* provide ->clear_inode() method.
* once ->clear_inode(foo) is called you should forget all 'shadow'
references to foo - it's going to be taken away.
* if foo is 'shadow' reference igrab(foo) will either increase
foo->i_count and return foo (i.e. give you 'legitimate' copy of foo) or
will return NULL. The later will happen if foo is scheduled for freeing
(i.e. ->clear_inode(foo) will happen RSN).

b) iunique(sb, max_reserved) will return a unique inumber greater than
max_reserved (unique for give superblock, indeed).

c) code in fs/fat/inode.c may be useful for other filesystems which happen
to keep inodes in directories. See fs/msdos/namei.c for examples of usage.

So there. The bottom line:

For testing, late beta:
ftp.math.psu.edu/pub/viro/rename-patch-10.gz
*VERY* *VERY* alpha FAT/MSDOS/VFAT stuff:
ftp.math.psu.edu/pub/viro/fat-patch-4.gz - incremental over rename patch
ftp.math.psu.edu/pub/viro/rename+fat-patch-4.gz - combined one.

Cheers,
Al

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/