aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/md
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2005-10-06 19:47:04 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2005-10-06 19:47:04 +0000
commit947fc8de03172b7f67c9fe3c7303db1134a74729 (patch)
treec9cb4f3dd5400d786b3b5152fa0e3845249a33f1 /sys/dev/md
parentb8b9c6fe06e6aa5766cb93bf6124147eafdb617d (diff)
Notes
Diffstat (limited to 'sys/dev/md')
-rw-r--r--sys/dev/md/md.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c
index 6c4019137390f..ac617758c945b 100644
--- a/sys/dev/md/md.c
+++ b/sys/dev/md/md.c
@@ -696,7 +696,7 @@ mdfind(int unit)
}
static struct md_s *
-mdnew(int unit, int *errp)
+mdnew(int unit, int *errp, enum md_types type)
{
struct md_s *sc, *sc2;
int error, max = -1;
@@ -713,6 +713,7 @@ mdnew(int unit, int *errp)
if (unit == -1)
unit = max + 1;
sc = (struct md_s *)malloc(sizeof *sc, M_MD, M_WAITOK | M_ZERO);
+ sc->type = type;
bioq_init(&sc->bio_queue);
mtx_init(&sc->queue_mtx, "md bio queue", NULL, MTX_DEF);
sc->unit = unit;
@@ -1013,14 +1014,13 @@ xmdctlioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flags, struct thread
return (EINVAL);
}
if (mdio->md_options & MD_AUTOUNIT)
- sc = mdnew(-1, &error);
+ sc = mdnew(-1, &error, mdio->md_type);
else
- sc = mdnew(mdio->md_unit, &error);
+ sc = mdnew(mdio->md_unit, &error, mdio->md_type);
if (sc == NULL)
return (error);
if (mdio->md_options & MD_AUTOUNIT)
mdio->md_unit = sc->unit;
- sc->type = mdio->md_type;
sc->mediasize = mdio->md_mediasize;
if (mdio->md_sectorsize == 0)
sc->sectorsize = DEV_BSIZE;
@@ -1110,10 +1110,9 @@ md_preloaded(u_char *image, size_t length)
struct md_s *sc;
int error;
- sc = mdnew(-1, &error);
+ sc = mdnew(-1, &error, MD_PRELOAD);
if (sc == NULL)
return;
- sc->type = MD_PRELOAD;
sc->mediasize = length;
sc->sectorsize = DEV_BSIZE;
sc->pl_ptr = image;