DragonFly bugs List (threaded) for 2006-07
Re: brelse() panic
: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
: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 =
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:
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.