On Thu, 17 Mar 2011, Konstantin Belousov wrote:

Log:
 Remove the #if defined(FFS) || defined(IFS) braces around the calls to
 ffs_snapgone(). ufs.ko module is not build with FFS define, causing
 snapshot inode number slots in superblock never be freed, as well as a
 reference on the snapshot vnode.

 IFS was removed several years ago, and UFS/FFS separation was not
 maintained for real.

 Reported, analyzed and tested by:      Yamagi Burmeister <lists yamagi org>
 MFC after:     3 days

This seems to leave FFS correctly unused.  Most options for file systems
are put in opt_dontuse.h to inhibit bugs like this (but I never figured
out a way to generate a compile time error if an option in there is
used).  The FFS option is special.  It should not be special.  It was
moved from opt_dontuse.h to opt_ffs_broken_fixme.h in 2001 to avoid a
collateral bug: the FFS/UFS split doesn't work, but was used by ext2fs,
and it is a layering violation for UFS to call ffs_snapgone() in FFS,
and this broke the configuration with EXT2FS (and UFS) but not FFS;
this was hacked around by the ifdefs.  ext2fs was decoupled from UFS
in 2002, so the ifdefs became unnecessary, but they remained to break
the module.  opt_ffs_broken_fixme.h also became unnecessary in 2002,
but remains to generate history lessons :-).

The ifdef on IFS was even more bogus, since IFS doesn't exist and has
no vestiges in conf/*.

Bruce
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to