diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index 3ef984a1e1e6..7c8b16da9309 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -2819,18 +2819,19 @@ biodone(struct bio *bp) /* * Wait for a BIO to finish. - * XXX: For now resort to a timeout, the optimal locking (if any) for this - * case is not at this point obvious. + * + * XXX: resort to a timeout for now. The optimal locking (if any) for this + * case is not yet clear. */ int biowait(struct bio *bp, const char *wchan) { while ((bp->bio_flags & BIO_DONE) == 0) - msleep(bp, NULL, 0, wchan, hz); + msleep(bp, NULL, PRIBIO, wchan, hz / 10); if (!(bp->bio_flags & BIO_ERROR)) return (0); - if (bp->bio_error) + if (bp->bio_error != 0) return (bp->bio_error); return (EIO); }