In article <20160102160001.c978df...@cvs.netbsd.org>, Michael van Elst <source-changes-d@NetBSD.org> wrote: >@@ -2665,11 +2664,7 @@ raidread_component_area(dev_t dev, struc > bp->b_flags |= B_READ; > bp->b_resid = dsize; > >- bdev = bdevsw_lookup(bp->b_dev); >- if (bdev == NULL) >- return (ENXIO); >- (*bdev->d_strategy)(bp); >- >+ bdev_strategy(bp); > error = biowait(bp);
Don't you want instead? + bdev_strategy(bp); + if (bp->b_error) + return bp->b_error; Since bdev_strategy() calls biodone() and I am pretty sure you are not supposed to call biowait() on a biodone()'d buffer? And bdev_strategy should be made to return an error... christos