MFC r264313:
Do not increment bio_data in case of BIO_DELETE. This fixes KASSERT() panic in g_io_request().
This commit is contained in:
parent
710b5b6515
commit
69f94d7a6b
@ -472,9 +472,10 @@ g_stripe_start_economic(struct bio *bp, u_int no, off_t offset, off_t length)
|
||||
|
||||
/* offset -= offset % stripesize; */
|
||||
offset -= offset & (stripesize - 1);
|
||||
addr += length;
|
||||
if (bp->bio_cmd != BIO_DELETE)
|
||||
addr += length;
|
||||
length = bp->bio_length - length;
|
||||
for (no++; length > 0; no++, length -= stripesize, addr += stripesize) {
|
||||
for (no++; length > 0; no++, length -= stripesize) {
|
||||
if (no > sc->sc_ndisks - 1) {
|
||||
no = 0;
|
||||
offset += stripesize;
|
||||
@ -506,6 +507,9 @@ g_stripe_start_economic(struct bio *bp, u_int no, off_t offset, off_t length)
|
||||
cbp->bio_data = addr;
|
||||
|
||||
cbp->bio_caller2 = sc->sc_disks[no];
|
||||
|
||||
if (bp->bio_cmd != BIO_DELETE)
|
||||
addr += stripesize;
|
||||
}
|
||||
/*
|
||||
* Fire off all allocated requests!
|
||||
@ -632,10 +636,13 @@ g_stripe_start(struct bio *bp)
|
||||
* a provider, so there is nothing to optmize.
|
||||
* and
|
||||
* 4. Request is not unmapped.
|
||||
* and
|
||||
* 5. It is not a BIO_DELETE.
|
||||
*/
|
||||
if (g_stripe_fast && bp->bio_length <= MAXPHYS &&
|
||||
bp->bio_length >= stripesize * sc->sc_ndisks &&
|
||||
(bp->bio_flags & BIO_UNMAPPED) == 0) {
|
||||
(bp->bio_flags & BIO_UNMAPPED) == 0 &&
|
||||
bp->bio_cmd != BIO_DELETE) {
|
||||
fast = 1;
|
||||
}
|
||||
error = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user