> 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. > Another subtle point is that ufs_inactive() calls > vn_write_suspend_wait() before calling UFS_UPDATE(), but I don't think > we want to call vn_write_suspend_wait() here. It isn't needed when running down softupdates dependencies. - Tor Egge 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 _at__at_ -3477,6 +3477,8 _at__at_ } WORKLIST_INSERT(&inodedep->id_inowait, &dirrem->dm_list); FREE_LOCK(&lk); + ip->i_flag |= IN_CHANGE; + ffs_update(vp, 0); vput(vp); }Received on Sat Sep 24 2005 - 22:09:36 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:44 UTC