summaryrefslogtreecommitdiffstats
path: root/sys/geom/geom_ccd.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2003-02-01 11:17:22 +0000
committerphk <phk@FreeBSD.org>2003-02-01 11:17:22 +0000
commitf9d517f0edb4be18e55c9d2d021faf605914e20c (patch)
tree1516c5348630e7d214ab42be173fe9ca31c773d7 /sys/geom/geom_ccd.c
parente8ee6f14dc33c97ba43cd50ff47cb88f312c004e (diff)
downloadFreeBSD-src-f9d517f0edb4be18e55c9d2d021faf605914e20c.zip
FreeBSD-src-f9d517f0edb4be18e55c9d2d021faf605914e20c.tar.gz
Eliminate the sc_openmask, ccdopen() and ccdclose() functions, we
can use the flag maintained by geom_disk.c Having only a strategy method to intialize, don't waste space using a cdevsw structure to do so.
Diffstat (limited to 'sys/geom/geom_ccd.c')
-rw-r--r--sys/geom/geom_ccd.c52
1 files changed, 6 insertions, 46 deletions
diff --git a/sys/geom/geom_ccd.c b/sys/geom/geom_ccd.c
index 7569420..f0cbb06 100644
--- a/sys/geom/geom_ccd.c
+++ b/sys/geom/geom_ccd.c
@@ -107,8 +107,6 @@ struct ccdbuf {
static dev_t ccdctldev;
-static d_open_t ccdopen;
-static d_close_t ccdclose;
static d_strategy_t ccdstrategy;
static d_ioctl_t ccdctlioctl;
@@ -132,24 +130,6 @@ static struct cdevsw ccdctl_cdevsw = {
/* flags */ 0
};
-static struct cdevsw ccd_cdevsw = {
- /* open */ ccdopen,
- /* close */ ccdclose,
- /* read */ physread,
- /* write */ physwrite,
- /* ioctl */ noioctl,
- /* poll */ nopoll,
- /* mmap */ nommap,
- /* strategy */ ccdstrategy,
- /* name */ "ccd",
- /* maj */ CDEV_MAJOR,
- /* dump */ nodump,
- /* psize */ nopsize,
- /* flags */ D_DISK,
-};
-
-static struct cdevsw ccddisk_cdevsw;
-
static LIST_HEAD(, ccd_s) ccd_softc_list =
LIST_HEAD_INITIALIZER(&ccd_softc_list);
@@ -550,27 +530,6 @@ ccdinterleave(struct ccd_s *cs, int unit)
}
}
-static int
-ccdopen(dev_t dev, int flags, int fmt, struct thread *td)
-{
- struct ccd_s *cs;
-
- cs = dev->si_drv1;
- cs->sc_openmask = 1;
- return (0);
-}
-
-/* ARGSUSED */
-static int
-ccdclose(dev_t dev, int flags, int fmt, struct thread *td)
-{
- struct ccd_s *cs;
-
- cs = dev->si_drv1;
- cs->sc_openmask = 0;
- return (0);
-}
-
static void
ccdstrategy(struct bio *bp)
{
@@ -1164,16 +1123,17 @@ ccdioctltoo(int unit, u_long cmd, caddr_t data, int flag, struct thread *td)
*/
ccio->ccio_unit = unit;
ccio->ccio_size = cs->sc_size;
- cs->sc_disk = malloc(sizeof(struct disk), M_CCD, 0);
- cs->sc_dev = disk_create(unit, cs->sc_disk, 0,
- &ccd_cdevsw, &ccddisk_cdevsw);
- cs->sc_dev->si_drv1 = cs;
ccg = &cs->sc_geom;
+ cs->sc_disk = malloc(sizeof(struct disk), M_CCD, M_ZERO);
+ cs->sc_disk->d_strategy = ccdstrategy;
+ cs->sc_disk->d_name = "ccd";
cs->sc_disk->d_sectorsize = ccg->ccg_secsize;
cs->sc_disk->d_mediasize =
cs->sc_size * (off_t)ccg->ccg_secsize;
cs->sc_disk->d_fwsectors = ccg->ccg_nsectors;
cs->sc_disk->d_fwheads = ccg->ccg_ntracks;
+ cs->sc_dev = disk_create(unit, cs->sc_disk, 0, NULL, NULL);
+ cs->sc_dev->si_drv1 = cs;
ccdunlock(cs);
@@ -1193,7 +1153,7 @@ ccdioctltoo(int unit, u_long cmd, caddr_t data, int flag, struct thread *td)
return (error);
/* Don't unconfigure if any other partitions are open */
- if (cs->sc_openmask) {
+ if (cs->sc_disk->d_flags & DISKFLAG_OPEN) {
ccdunlock(cs);
return (EBUSY);
}
OpenPOWER on IntegriCloud