summaryrefslogtreecommitdiffstats
path: root/sys/dev/softraid.c
diff options
context:
space:
mode:
authorjsing <jsing@openbsd.org>2012-10-08 14:22:41 +0000
committerjsing <jsing@openbsd.org>2012-10-08 14:22:41 +0000
commit7c003ea364c6494cf1a7618354a9be1f3dce43db (patch)
tree1ea61cffb6d724d00d77a05134f102adcaf6d88f /sys/dev/softraid.c
parentIf we have booted from a disk that is a member of a bootable softraid (diff)
downloadwireguard-openbsd-7c003ea364c6494cf1a7618354a9be1f3dce43db.tar.xz
wireguard-openbsd-7c003ea364c6494cf1a7618354a9be1f3dce43db.zip
Provide a mechanism for the kernel to pass data through to the discipline
during volume assembly.
Diffstat (limited to 'sys/dev/softraid.c')
-rw-r--r--sys/dev/softraid.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/dev/softraid.c b/sys/dev/softraid.c
index 95968cc74cf..dfa24f799f5 100644
--- a/sys/dev/softraid.c
+++ b/sys/dev/softraid.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: softraid.c,v 1.276 2012/10/08 13:25:46 jsing Exp $ */
+/* $OpenBSD: softraid.c,v 1.277 2012/10/08 14:22:41 jsing Exp $ */
/*
* Copyright (c) 2007, 2008, 2009 Marco Peereboom <marco@peereboom.us>
* Copyright (c) 2008 Chris Kuethe <ckuethe@openbsd.org>
@@ -104,7 +104,7 @@ int sr_ioctl_disk(struct sr_softc *, struct bioc_disk *);
int sr_ioctl_setstate(struct sr_softc *,
struct bioc_setstate *);
int sr_ioctl_createraid(struct sr_softc *,
- struct bioc_createraid *, int);
+ struct bioc_createraid *, int, void *);
int sr_ioctl_deleteraid(struct sr_softc *,
struct bioc_deleteraid *);
int sr_ioctl_discipline(struct sr_softc *,
@@ -1437,7 +1437,7 @@ sr_boot_assembly(struct sr_softc *sc)
rw_enter_write(&sc->sc_lock);
bio_status_init(&sc->sc_status, &sc->sc_dev);
- sr_ioctl_createraid(sc, &bcr, 0);
+ sr_ioctl_createraid(sc, &bcr, 0, NULL);
rw_exit_write(&sc->sc_lock);
rv++;
@@ -2309,7 +2309,8 @@ sr_bio_ioctl(struct device *dev, u_long cmd, caddr_t addr)
case BIOCCREATERAID:
DNPRINTF(SR_D_IOCTL, "createraid\n");
- rv = sr_ioctl_createraid(sc, (struct bioc_createraid *)addr, 1);
+ rv = sr_ioctl_createraid(sc, (struct bioc_createraid *)addr,
+ 1, NULL);
break;
case BIOCDELETERAID:
@@ -3058,7 +3059,8 @@ sr_roam_chunks(struct sr_discipline *sd)
}
int
-sr_ioctl_createraid(struct sr_softc *sc, struct bioc_createraid *bc, int user)
+sr_ioctl_createraid(struct sr_softc *sc, struct bioc_createraid *bc,
+ int user, void *data)
{
struct sr_meta_opt_item *omi;
struct sr_chunk_head *cl;
@@ -3211,7 +3213,7 @@ sr_ioctl_createraid(struct sr_softc *sc, struct bioc_createraid *bc, int user)
sr_meta_opt_handler(sd, omi->omi_som);
if (sd->sd_assemble) {
- if ((i = sd->sd_assemble(sd, bc, no_chunk))) {
+ if ((i = sd->sd_assemble(sd, bc, no_chunk, data))) {
rv = i;
goto unwind;
}