Changeset View
Changeset View
Standalone View
Standalone View
head/sys/geom/geom_disk.c
Show First 20 Lines • Show All 554 Lines • ▼ Show 20 Lines | if (bp2 == NULL) { | ||||
return; | return; | ||||
} | } | ||||
bp2->bio_done = g_disk_done; | bp2->bio_done = g_disk_done; | ||||
bp2->bio_caller1 = sc; | bp2->bio_caller1 = sc; | ||||
bp2->bio_disk = dp; | bp2->bio_disk = dp; | ||||
devstat_start_transaction_bio(dp->d_devstat, bp2); | devstat_start_transaction_bio(dp->d_devstat, bp2); | ||||
dp->d_strategy(bp2); | dp->d_strategy(bp2); | ||||
break; | break; | ||||
case BIO_SPEEDUP: | |||||
bp2 = g_clone_bio(bp); | |||||
if (bp2 == NULL) { | |||||
g_io_deliver(bp, ENOMEM); | |||||
return; | |||||
} | |||||
bp2->bio_done = g_disk_done; | |||||
bp2->bio_caller1 = sc; | |||||
bp2->bio_disk = dp; | |||||
dp->d_strategy(bp2); | |||||
break; | |||||
default: | default: | ||||
error = EOPNOTSUPP; | error = EOPNOTSUPP; | ||||
break; | break; | ||||
} | } | ||||
if (error != EJUSTRETURN) | if (error != EJUSTRETURN) | ||||
g_io_deliver(bp, error); | g_io_deliver(bp, error); | ||||
return; | return; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 511 Lines • Show Last 20 Lines |