brelse() panic

Matthew Dillon dillon at apollo.backplane.com
Sun Jul 9 13:56:30 PDT 2006


:I noticed two unrelated bugs, which are both fixed in the following patch=
::
:
:1. rbp is geteblk()'ed, but in case of a VOP_BMAP() error returned withou=
:t B_INVAL set.

    I would say that this is definitely a bug.  As per the code comments
    for getblk().

:2. I moved the read-ahead after starting the real read for bp, so that I =
:can skip this if an error occured in the reading of bp.  Before rbp might=
: have been a CLUSTER and didn't get special treatment for freeing (hence =
:the panic).
:
:cheers
:  simon

    I don't think checking 'error' here is going to matter.  In fact,
    I think the error assignment in the original code is probably wrong:

	vn_strategy(vp, &bp->b_bio1);
	error = bp->b_error;		<<<<<< HERE

    Most drivers set b_error when the I/O completes rather then from
    vn_strategy(), so error is most likely going to be 0 here.

    However, I don't want to change too much at once so lets just leave
    it as it is in your patch.

    I will run some tests with this patch, but it looks pretty good.

						-Matt






More information about the Bugs mailing list