Don't sync the inode date changes of character special devices
during the FS sync. The system would appear to hang momentarily if there was a large backlog of I/O. This is because the vnode remains locked during the output - preventing normal character I/O. The problem was exacerbated by the FFS contiguous block allocation fixes and a semi-broken disksort(). The inode/date will still be synced during a normal FS dismount and whenever the inode is changed for other reasons.
This commit is contained in:
parent
798563cdfb
commit
4e83f749ec
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94
|
||||
* $Id: ffs_vfsops.c,v 1.12 1994/11/14 13:21:42 bde Exp $
|
||||
* $Id: ffs_vfsops.c,v 1.13 1995/03/16 18:16:41 bde Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -663,8 +663,8 @@ ffs_sync(mp, waitfor, cred, p)
|
||||
if (VOP_ISLOCKED(vp))
|
||||
continue;
|
||||
ip = VTOI(vp);
|
||||
if ((ip->i_flag &
|
||||
(IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 &&
|
||||
if (((vp->v_type == VCHR) || ((ip->i_flag &
|
||||
(IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0)) &&
|
||||
vp->v_dirtyblkhd.lh_first == NULL)
|
||||
continue;
|
||||
if (vget(vp, 1))
|
||||
|
Loading…
Reference in New Issue
Block a user