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