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:
David Greenman 1995-03-18 18:03:29 +00:00
parent 798563cdfb
commit 4e83f749ec

View File

@ -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))