[net.bugs.4bsd] 4.2 hangs with locked root inode after full file system

joe@fluke.UUCP (Joe Kelsey) (02/19/85)

Index:	sys/ufs_alloc.c 4.2BSD +FIX

Description:
	In a similar posting, Jim McGinness <decvax!jmcg>, notes that
	if the file system becomes full or nearly full, a bug in the
	buffer locking protocol in alloccg and ialloccg will cause
	an eventual hung system due to a locked buffer eventually
	manifesting itself as a locked root inode.  Unfortunately, he
	neglected to point out one more place to fix.

Repeat-By:
	Fill up the file system, then wait a while.

Fix:
	In ufs_alloc.c, function alloccg(), add the lines:

	if (bno < 0)
+++	{
+++		brelse(bp);
		return (NULL);
+++	}

	Jim pointed two other places in alloccg that also need to be
	fixed, and one place in ialloccg.

/Joe