summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe
diff options
context:
space:
mode:
authorchristos <christos@NetBSD.org>2013-05-29 00:47:48 +0000
committerchristos <christos@NetBSD.org>2013-05-29 00:47:48 +0000
commit836e07dff3959fbb9fdc3dff54e1841c6c31b150 (patch)
tree522bc0b47fd021095b525fddbc3a9e3217235097 /sys/dev/raidframe
parent8dd01b636de4f8864c078763a86c871c5b999be5 (diff)
phase 1 of disk geometry cleanup:
- centralize the geometry -> plist code so that we don't have n useless copies of it.
Diffstat (limited to 'sys/dev/raidframe')
-rw-r--r--sys/dev/raidframe/rf_netbsdkintf.c47
1 files changed, 16 insertions, 31 deletions
diff --git a/sys/dev/raidframe/rf_netbsdkintf.c b/sys/dev/raidframe/rf_netbsdkintf.c
index b6ab5c503d1..fc15d1abd97 100644
--- a/sys/dev/raidframe/rf_netbsdkintf.c
+++ b/sys/dev/raidframe/rf_netbsdkintf.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_netbsdkintf.c,v 1.303 2013/05/23 14:15:52 christos Exp $ */
+/* $NetBSD: rf_netbsdkintf.c,v 1.304 2013/05/29 00:47:49 christos Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 2008-2011 The NetBSD Foundation, Inc.
@@ -101,7 +101,7 @@
***********************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.303 2013/05/23 14:15:52 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.304 2013/05/29 00:47:49 christos Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
@@ -280,7 +280,7 @@ static void raidunlock(struct raid_softc *);
static int raid_detach_unlocked(struct raid_softc *);
static void rf_markalldirty(RF_Raid_t *);
-static void rf_set_properties(struct raid_softc *, RF_Raid_t *);
+static void rf_set_geometry(struct raid_softc *, RF_Raid_t *);
void rf_ReconThread(struct rf_recon_req *);
void rf_RewriteParityThread(RF_Raid_t *raidPtr);
@@ -1961,7 +1961,7 @@ raidinit(struct raid_softc *rs)
dkwedge_discover(&rs->sc_dkdev);
- rf_set_properties(rs, raidPtr);
+ rf_set_geometry(rs, raidPtr);
}
#if (RF_INCLUDE_PARITY_DECLUSTERING_DS > 0)
@@ -3859,33 +3859,18 @@ raid_detach(device_t self, int flags)
}
static void
-rf_set_properties(struct raid_softc *rs, RF_Raid_t *raidPtr)
-{
- prop_dictionary_t disk_info, odisk_info, geom;
- disk_info = prop_dictionary_create();
- geom = prop_dictionary_create();
- prop_dictionary_set_uint64(geom, "sectors-per-unit",
- raidPtr->totalSectors);
- prop_dictionary_set_uint32(geom, "sector-size",
- raidPtr->bytesPerSector);
-
- prop_dictionary_set_uint16(geom, "sectors-per-track",
- raidPtr->Layout.dataSectorsPerStripe);
- prop_dictionary_set_uint16(geom, "tracks-per-cylinder",
- 4 * raidPtr->numCol);
-
- prop_dictionary_set_uint64(geom, "cylinders-per-unit",
- raidPtr->totalSectors / (raidPtr->Layout.dataSectorsPerStripe *
- (4 * raidPtr->numCol)));
-
- prop_dictionary_set(disk_info, "geometry", geom);
- prop_object_release(geom);
- prop_dictionary_set(device_properties(rs->sc_dev),
- "disk-info", disk_info);
- odisk_info = rs->sc_dkdev.dk_info;
- rs->sc_dkdev.dk_info = disk_info;
- if (odisk_info)
- prop_object_release(odisk_info);
+rf_set_geometry(struct raid_softc *rs, RF_Raid_t *raidPtr)
+{
+ struct disk_geom *dg = &rs->sc_dkdev.dk_geom;
+
+ memset(dg, 0, sizeof(*dg));
+
+ dg->dg_secperunit = raidPtr->totalSectors;
+ dg->dg_secsize = raidPtr->bytesPerSector;
+ dg->dg_nsectors = raidPtr->Layout.dataSectorsPerStripe;
+ dg->dg_ntracks = 4 * raidPtr->numCol;
+
+ disk_set_info(rs->sc_dev, &rs->sc_dkdev, NULL);
}
/*