On Mon, Jul 05, 2021 at 09:41:03AM +0100, Christoph Hellwig wrote: > On Fri, Jul 02, 2021 at 08:02:33PM -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > > > While running xfs/168, I noticed a second source of post-shrink > > corruption errors causing shutdowns. > > > > Let's say that directory B has a low inode number and is a child of > > directory A, which has a high number. If B is empty but open, and > > unlinked from A, B's dotdot link continues to point to A. If A is then > > unlinked and the filesystem shrunk so that A is no longer a valid inode, > > a subsequent AIL push of B will trip the inode verifiers because the > > dotdot entry points outside of the filesystem. > > > > To avoid this problem, reset B's dotdot entry to the root directory when > > unlinking directories, since the root directory cannot be removed. > > Uggh. This causes extra overhead for every remove. Not that much overhead. A child directory can only be unlinked if it's empty; empty directories by definition contain only a dotdot entry, which meanns they're in shortform format; and we already have to log the inode to reflect the i_nlinks change. > Can't we make > the verifieds deal with this situation instead of creating extra > overhead? I'll address that in the other thread suggesting I "just fix the verifiers". > If we can't please at least limit it to file systems that do > have parent pointers enabled. Parent pointers haven't been merged yet; this is the '..' entry that has been stored in every directory since the beginning. --D