diff --git a/sys/dev/raid/mfi/mfi_disk.c b/sys/dev/raid/mfi/mfi_disk.c --- a/sys/dev/raid/mfi/mfi_disk.c +++ b/sys/dev/raid/mfi/mfi_disk.c @@ -265,12 +265,12 @@ mfi_disk_strategy(struct dev_strategy_args *ap) if (controller->hw_crit_error) { bp->b_error = EBUSY; - return (0); + goto fail; } if (controller->issuepend_done == 0) { bp->b_error = EBUSY; - return (0); + goto fail; } /* @@ -299,6 +299,12 @@ mfi_disk_strategy(struct dev_strategy_args *ap) mfi_startio(controller); lockmgr(&controller->mfi_io_lock, LK_RELEASE); return (0); + +fail: + bp->b_flags |= B_ERROR; + bp->b_resid = bp->b_bcount; + biodone(bio); + return (0); } void