Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev eliminare dk_geom
details: https://anonhg.NetBSD.org/src/rev/bc0130e670cf
branches: trunk
changeset: 787028:bc0130e670cf
user: christos <christos%NetBSD.org@localhost>
date: Wed May 29 23:25:39 2013 +0000
description:
eliminare dk_geom
diffstat:
sys/dev/cgd.c | 53 +++++++++++++++++++++++++++--------------------------
1 files changed, 27 insertions(+), 26 deletions(-)
diffs (154 lines):
diff -r a023fd42a067 -r bc0130e670cf sys/dev/cgd.c
--- a/sys/dev/cgd.c Wed May 29 23:11:56 2013 +0000
+++ b/sys/dev/cgd.c Wed May 29 23:25:39 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cgd.c,v 1.79 2013/05/29 00:47:48 christos Exp $ */
+/* $NetBSD: cgd.c,v 1.80 2013/05/29 23:25:39 christos Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cgd.c,v 1.79 2013/05/29 00:47:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cgd.c,v 1.80 2013/05/29 23:25:39 christos Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -610,6 +610,7 @@
const char *cp;
struct pathbuf *pb;
char *inbuf;
+ struct dk_softc *dksc = &cs->sc_dksc;
cp = ci->ci_disk;
@@ -687,23 +688,23 @@
}
free(inbuf, M_TEMP);
- bufq_alloc(&cs->sc_dksc.sc_bufq, "fcfs", 0);
+ bufq_alloc(&dksc->sc_bufq, "fcfs", 0);
cs->sc_data = malloc(MAXPHYS, M_DEVBUF, M_WAITOK);
cs->sc_data_used = 0;
- cs->sc_dksc.sc_flags |= DKF_INITED;
+ dksc->sc_flags |= DKF_INITED;
- dk_set_geometry(di, &cs->sc_dksc);
+ disk_set_info(dksc->sc_dev, &dksc->sc_dkdev, NULL);
/* Attach the disk. */
- disk_attach(&cs->sc_dksc.sc_dkdev);
+ disk_attach(&dksc->sc_dkdev);
/* Try and read the disklabel. */
- dk_getdisklabel(di, &cs->sc_dksc, 0 /* XXX ? (cause of PR 41704) */);
+ dk_getdisklabel(di, dksc, 0 /* XXX ? (cause of PR 41704) */);
/* Discover wedges on this disk. */
- dkwedge_discover(&cs->sc_dksc.sc_dkdev);
+ dkwedge_discover(&dksc->sc_dkdev);
return 0;
@@ -718,29 +719,27 @@
cgd_ioctl_clr(struct cgd_softc *cs, struct lwp *l)
{
int s;
- struct dk_softc *dksc;
-
- dksc = &cs->sc_dksc;
+ struct dk_softc *dksc = &cs->sc_dksc;
if ((dksc->sc_flags & DKF_INITED) == 0)
return ENXIO;
/* Delete all of our wedges. */
- dkwedge_delall(&cs->sc_dksc.sc_dkdev);
+ dkwedge_delall(&dksc->sc_dkdev);
/* Kill off any queued buffers. */
s = splbio();
- bufq_drain(cs->sc_dksc.sc_bufq);
+ bufq_drain(dksc->sc_bufq);
splx(s);
- bufq_free(cs->sc_dksc.sc_bufq);
+ bufq_free(dksc->sc_bufq);
(void)vn_close(cs->sc_tvn, FREAD|FWRITE, l->l_cred);
cs->sc_cfuncs->cf_destroy(cs->sc_cdata.cf_priv);
free(cs->sc_tpath, M_DEVBUF);
free(cs->sc_data, M_DEVBUF);
cs->sc_data_used = 0;
- cs->sc_dksc.sc_flags &= ~DKF_INITED;
- disk_detach(&cs->sc_dksc.sc_dkdev);
+ dksc->sc_flags &= ~DKF_INITED;
+ disk_detach(&dksc->sc_dkdev);
return 0;
}
@@ -751,6 +750,7 @@
struct cgd_softc *cs;
struct cgd_user *cgu;
int unit;
+ struct dk_softc *dksc = &cs->sc_dksc;
unit = CGDUNIT(dev);
cgu = (struct cgd_user *)data;
@@ -765,7 +765,7 @@
return EINVAL; /* XXX: should this be ENXIO? */
cs = device_lookup_private(&cgd_cd, unit);
- if (cs == NULL || (cs->sc_dksc.sc_flags & DKF_INITED) == 0) {
+ if (cs == NULL || (dksc->sc_flags & DKF_INITED) == 0) {
cgu->cgu_dev = 0;
cgu->cgu_alg[0] = '\0';
cgu->cgu_blocksize = 0;
@@ -787,14 +787,14 @@
cgdinit(struct cgd_softc *cs, const char *cpath, struct vnode *vp,
struct lwp *l)
{
- struct dk_geom *pdg;
+ struct disk_geom *dg;
struct vattr va;
int ret;
char *tmppath;
uint64_t psize;
unsigned secsize;
+ struct dk_softc *dksc = &cs->sc_dksc;
- cs->sc_dksc.sc_size = 0;
cs->sc_tvn = vp;
cs->sc_tpath = NULL;
@@ -821,19 +821,20 @@
goto bail;
}
- cs->sc_dksc.sc_size = psize;
-
/*
* XXX here we should probe the underlying device. If we
* are accessing a partition of type RAW_PART, then
* we should populate our initial geometry with the
* geometry that we discover from the device.
*/
- pdg = &cs->sc_dksc.sc_geom;
- pdg->pdg_secsize = DEV_BSIZE;
- pdg->pdg_ntracks = 1;
- pdg->pdg_nsectors = 1024 * (1024 / pdg->pdg_secsize);
- pdg->pdg_ncylinders = cs->sc_dksc.sc_size / pdg->pdg_nsectors;
+ dg = &dksc->sc_dkdev.dk_geom;
+ memset(dg, 0, sizeof(*dg));
+ dg->dg_secperunit = psize;
+ // XXX: Inherit?
+ dg->dg_secsize = DEV_BSIZE;
+ dg->dg_ntracks = 1;
+ dg->dg_nsectors = 1024 * (1024 / dg->dg_secsize);
+ dg->dg_ncylinders = dg->dg_secperunit / dg->dg_nsectors;
bail:
free(tmppath, M_TEMP);
Home |
Main Index |
Thread Index |
Old Index