tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: A brelse() in FFS...



max%M00nBSD.net@localhost (Maxime Villard) writes:

>Hi,
>this may be a stupid question; in ufs/ffs/ffs_vfsops.c, l.1153:

>	if (fs->fs_sbsize < SBLOCKSIZE)
>		brelse(bp, BC_INVAL);
>	else
>		brelse(bp, 0);

>However 'fs->fs_sbsize' is *always* smaller than SBLOCKSIZE. So only
>the first branch is reached.

It can also be equal to SBLOCKSIZE (or larger than SBLOCKSIZE if corrupted).


>I don't understand what the BC_INVAL flag means, and its definition
>in sys/buf.h is not very enlightening:

>	#define	BC_INVAL	0x00002000	/* Does not contain valid info. */

BC_INVAL means, there is no data in the buffer that could be reused.
The buffer will be put at the head of the freelist.

I don't think that the check makes any sense, but an equivalent already
existed since the beginning:

        if (fs->fs_sbsize < SBSIZE)
                bp->b_flags |= B_INVAL;
        brelse(bp);

-- 
-- 
                                Michael van Elst
Internet: mlelstv%serpens.de@localhost
                                "A potential Snark may lurk in every tree."


Home | Main Index | Thread Index | Old Index