K 10 svn:author V 4 jeff K 8 svn:date V 27 2010-01-26T06:36:10.008134Z K 7 svn:log V 1516 - Move the softdep journal inode into the namespace at /.sujournal. This requires quite a lot of code as tunefs needs to be able to create directory entries in ROOTINO. However this is much cleaner from a compat standpoint. The inode is marked IMMUTABLE and only readable by root. Eventually the kernel will prevent clearing of the IMMUTABLE bit. - Fix a nasty link count bug involving changedirectory_offset(). When a link may exist at more than one location depending on when the directory block was written we create duplicate addref records. When an add and a remove are detected at the same offset the remove is discarded based on the assumption that it cancels the link in the add. A legitimate remove may collide with one of these alternate offset adds that are created by fsck and be discarded even though it removed a real link. To resolve this the lineage of the addref must be established to determine whether the remove refers to an alternate address or not. Any offset which is not up-to-date with respect to the offset in the move record is considered alternate and will not discard a remove. - Use clear_remove() when we begin to exhaust dependencies to prevent excessive looping in request_cleanup(). This should probably also be done in softdep_fsync(). Only workloads which delete incredible numbers of files within the same directory would be affected. stress2 can generate over 100,000 outstanding removes on my test machine. END