summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorhannken <hannken@NetBSD.org>2016-01-04 16:24:52 +0000
committerhannken <hannken@NetBSD.org>2016-01-04 16:24:52 +0000
commitdfa85292451032772f5f55dc85b8a8a08f3e8b4d (patch)
treeb54bb2a98462d9f6387a78b84dd031c3589c2d92 /sys/dev
parentbff95d5c7f26fc109ae2f0f9d7740356d3d5ef73 (diff)
Notify disk subsystem of the current geometry.
Ok: Michael van Elst
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/md.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/sys/dev/md.c b/sys/dev/md.c
index 5d0f4a682eb..b57e0ab51fb 100644
--- a/sys/dev/md.c
+++ b/sys/dev/md.c
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.75 2015/08/20 14:40:17 christos Exp $ */
+/* $NetBSD: md.c,v 1.76 2016/01/04 16:24:52 hannken Exp $ */
/*
* Copyright (c) 1995 Gordon W. Ross, Leo Weppelman.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: md.c,v 1.75 2015/08/20 14:40:17 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: md.c,v 1.76 2016/01/04 16:24:52 hannken Exp $");
#ifdef _KERNEL_OPT
#include "opt_md.h"
@@ -528,6 +528,7 @@ mdioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
static void
md_set_disklabel(struct md_softc *sc)
{
+ struct disk_geom *dg = &sc->sc_dkdev.dk_geom;
struct disklabel *lp = sc->sc_dkdev.dk_label;
struct partition *pp;
@@ -567,6 +568,16 @@ md_set_disklabel(struct md_softc *sc)
lp->d_magic = DISKMAGIC;
lp->d_magic2 = DISKMAGIC;
lp->d_checksum = dkcksum(lp);
+
+ memset(dg, 0, sizeof(*dg));
+
+ dg->dg_secsize = lp->d_secsize;
+ dg->dg_secperunit = lp->d_secperunit;
+ dg->dg_nsectors = lp->d_nsectors;
+ dg->dg_ntracks = lp->d_ntracks = 64;;
+ dg->dg_ncylinders = lp->d_ncylinders;
+
+ disk_set_info(sc->sc_dev, &sc->sc_dkdev, NULL);
}
/*