Don't assume that bio_cmd is bit mask.
Differential Revision: https://reviews.freebsd.org/D5593
This commit is contained in:
parent
a2531862b8
commit
8076d204da
@ -225,8 +225,16 @@ g_disk_done(struct bio *bp)
|
||||
if (bp2->bio_error == 0)
|
||||
bp2->bio_error = bp->bio_error;
|
||||
bp2->bio_completed += bp->bio_completed;
|
||||
if ((bp->bio_cmd & (BIO_READ|BIO_WRITE|BIO_DELETE|BIO_FLUSH)) != 0)
|
||||
switch (bp->bio_cmd) {
|
||||
case BIO_READ:
|
||||
case BIO_WRITE:
|
||||
case BIO_DELETE:
|
||||
case BIO_FLUSH:
|
||||
devstat_end_transaction_bio_bt(sc->dp->d_devstat, bp, &now);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
bp2->bio_inbed++;
|
||||
if (bp2->bio_children == bp2->bio_inbed) {
|
||||
mtx_unlock(&sc->done_mtx);
|
||||
|
@ -479,6 +479,7 @@ g_io_request(struct bio *bp, struct g_consumer *cp)
|
||||
struct g_provider *pp;
|
||||
struct mtx *mtxp;
|
||||
int direct, error, first;
|
||||
uint8_t cmd;
|
||||
|
||||
KASSERT(cp != NULL, ("NULL cp in g_io_request"));
|
||||
KASSERT(bp != NULL, ("NULL bp in g_io_request"));
|
||||
@ -500,16 +501,17 @@ g_io_request(struct bio *bp, struct g_consumer *cp)
|
||||
bp->_bio_cflags = bp->bio_cflags;
|
||||
#endif
|
||||
|
||||
if (bp->bio_cmd & (BIO_READ|BIO_WRITE|BIO_GETATTR)) {
|
||||
cmd = bp->bio_cmd;
|
||||
if (cmd == BIO_READ || cmd == BIO_WRITE || cmd == BIO_GETATTR) {
|
||||
KASSERT(bp->bio_data != NULL,
|
||||
("NULL bp->data in g_io_request(cmd=%hhu)", bp->bio_cmd));
|
||||
}
|
||||
if (bp->bio_cmd & (BIO_DELETE|BIO_FLUSH)) {
|
||||
if (cmd == BIO_DELETE || cmd == BIO_FLUSH) {
|
||||
KASSERT(bp->bio_data == NULL,
|
||||
("non-NULL bp->data in g_io_request(cmd=%hhu)",
|
||||
bp->bio_cmd));
|
||||
}
|
||||
if (bp->bio_cmd & (BIO_READ|BIO_WRITE|BIO_DELETE)) {
|
||||
if (cmd == BIO_READ || cmd == BIO_WRITE || cmd == BIO_DELETE) {
|
||||
KASSERT(bp->bio_offset % cp->provider->sectorsize == 0,
|
||||
("wrong offset %jd for sectorsize %u",
|
||||
bp->bio_offset, cp->provider->sectorsize));
|
||||
|
Loading…
Reference in New Issue
Block a user