update() still writes out all inodes, because of parenthesis error

Liudvikas Bukys bukys at rochester.UUCP
Thu Mar 14 22:43:58 AEST 1985


Description:
	Certain souped-up versions of 4.2 include an extra test in
	update() which will cause only modified inodes to be written
	out by sync.  The test is parenthesized wrong, though, so is
	effectively missing; behaviour will be the same as before (all
	inodes get written).

Repeat-By:
	Lint the kernel.  Notice the message
	"../sys/ufs_subr.c(72): warning: constant in conditional context".
	Look at Kernighan&Ritchie: '==' has higher precedence than '&'.

		if ((ip->i_flag & ILOCKED) != 0 || ip->i_count == 0 ||
		    (ip->i_flag & (IACC|IUPD|ICHG) == 0))
			continue;

Fix:
	Put parentheses around the '&' expression.
	--> I'll leave that to someone else to test. <--

Brought-to-you-by:
	Liudvikas Bukys
	rochester!bukys (uucp) via allegra, decvax, seismo
	bukys at rochester (arpa)



More information about the Comp.bugs.4bsd.ucb-fixes mailing list