Date: Sun, 25 Sep 2005 00:21:13 -0700 (PDT) From: Don Lewis <truckman@FreeBSD.org> To: Tor.Egge@cvsup.no.freebsd.org Cc: scottl@FreeBSD.org, current@FreeBSD.org, mckusick@FreeBSD.org Subject: Re: soft updates / background fsck directory link count bug Message-ID: <200509250721.j8P7LD32092496@gw.catspoiler.org> In-Reply-To: <20050925.000932.74671878.Tor.Egge@cvsup.no.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--0-846930886-1127632882=:7432 Content-Type: TEXT/plain; charset=us-ascii On 25 Sep, Tor Egge wrote: >> Relying on ufs_inactive() is probably the wrong thing to do because the >> ufs_inactive() call can be deferred indefinitely if another process >> holds a reference to the vnode. This is sufficient to cause background >> fsck to do the wrong thing even in the normal case. > >> I think the cleanest fix would be for handle_workitem_remove() to >> explicity call ffs_update(). > > Agreed. The enclosed patch does that. It works well for me in the testing that I have done. It also has the advantage of doing the dirrem rundown much more quickly than the unmodified code in your directory tree removal example. BTW, without this modification, your directory tree removal example will trigger a timeout in the syncer thread shutdown code if the system is immediately rebooted after the rm -r. --0-846930886-1127632882=:7432 Content-Type: TEXT/plain; name=softdep.diff6 Content-Disposition: attachment; filename=softdep.diff6 Index: sys/ufs/ffs/ffs_softdep.c =================================================================== RCS file: /home/ncvs/src/sys/ufs/ffs/ffs_softdep.c,v retrieving revision 1.184 diff -u -r1.184 ffs_softdep.c --- sys/ufs/ffs/ffs_softdep.c 5 Sep 2005 22:14:33 -0000 1.184 +++ sys/ufs/ffs/ffs_softdep.c 24 Sep 2005 22:09:50 -0000 @@ -3477,6 +3477,8 @@ } WORKLIST_INSERT(&inodedep->id_inowait, &dirrem->dm_list); FREE_LOCK(&lk); + ip->i_flag |= IN_CHANGE; + ffs_update(vp, 0); vput(vp); } --0-846930886-1127632882=:7432--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200509250721.j8P7LD32092496>