From 3e7b60db4b1c405c8aa0515059c2994441cb9c30 Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Fri, 28 Feb 2003 09:53:36 +0000 Subject: [PATCH] NO_GEOM cleanup: Convert to "struct disk *" centric API. OK'ed by: sos --- sys/conf/majors | 1 - sys/dev/ata/atapi-fd.c | 68 +++++++++++++++++++----------------------- sys/dev/ata/atapi-fd.h | 1 - 3 files changed, 30 insertions(+), 40 deletions(-) diff --git a/sys/conf/majors b/sys/conf/majors index 405198eb8e4..4ab82a8d352 100644 --- a/sys/conf/majors +++ b/sys/conf/majors @@ -120,7 +120,6 @@ 114 *ugen USB Generic device 115 dag University of Waikato DAG network capture boards 117 *acd ATAPI CDROM -118 afd ATAPI floppy 119 *ast ATAPI tape 120 aud Audit Device 121 onew Dallas Semiconductor One-Wire bus diff --git a/sys/dev/ata/atapi-fd.c b/sys/dev/ata/atapi-fd.c index 46118a96e41..e4f6cb82b67 100644 --- a/sys/dev/ata/atapi-fd.c +++ b/sys/dev/ata/atapi-fd.c @@ -44,29 +44,13 @@ #include #include -/* device structures */ -static d_open_t afdopen; -static d_close_t afdclose; -static d_ioctl_t afdioctl; -static d_strategy_t afdstrategy; -static struct cdevsw afd_cdevsw = { - /* open */ afdopen, - /* close */ afdclose, - /* read */ physread, - /* write */ physwrite, - /* ioctl */ afdioctl, - /* poll */ nopoll, - /* mmap */ nommap, - /* strategy */ afdstrategy, - /* name */ "afd", - /* maj */ 118, - /* dump */ nodump, - /* psize */ nopsize, - /* flags */ D_DISK | D_TRACKCLOSE, -}; -static struct cdevsw afddisk_cdevsw; - /* prototypes */ +static disk_open_t afdopen; +static disk_close_t afdclose; +#ifdef notyet +static disk_ioctl_t afdioctl; +#endif +static disk_strategy_t afdstrategy; static int afd_sense(struct afd_softc *); static void afd_describe(struct afd_softc *); static int afd_done(struct atapi_request *); @@ -82,7 +66,6 @@ int afdattach(struct ata_device *atadev) { struct afd_softc *fdp; - dev_t dev; fdp = malloc(sizeof(struct afd_softc), M_AFD, M_NOWAIT | M_ZERO); if (!fdp) { @@ -104,10 +87,16 @@ afdattach(struct ata_device *atadev) DEVSTAT_NO_ORDERED_TAGS, DEVSTAT_TYPE_DIRECT | DEVSTAT_TYPE_IF_IDE, DEVSTAT_PRIORITY_WFD); - dev = disk_create(fdp->lun, &fdp->disk, 0, &afd_cdevsw, &afddisk_cdevsw); - dev->si_drv1 = fdp; - fdp->dev = dev; - fdp->dev->si_iosize_max = 256 * DEV_BSIZE; + fdp->disk.d_open = afdopen; + fdp->disk.d_close = afdclose; +#ifdef notyet + fdp->disk.d_ioctl = afdioctl; +#endif + fdp->disk.d_strategy = afdstrategy; + fdp->disk.d_name = "afd"; + fdp->disk.d_drv1 = fdp; + fdp->disk.d_maxsize = 256 * DEV_BSIZE; + disk_create(fdp->lun, &fdp->disk, 0, NULL, NULL); afd_describe(fdp); atadev->flags |= ATA_D_MEDIA_CHANGED; @@ -220,9 +209,9 @@ afd_describe(struct afd_softc *fdp) } static int -afdopen(dev_t dev, int flags, int fmt, struct thread *td) +afdopen(struct disk *dp) { - struct afd_softc *fdp = dev->si_drv1; + struct afd_softc *fdp = dp->d_drv1; /* hold off access to we are fully attached */ while (ata_delayed_attach) @@ -230,8 +219,7 @@ afdopen(dev_t dev, int flags, int fmt, struct thread *td) atapi_test_ready(fdp->device); - if (count_dev(dev) == 1) - afd_prevent_allow(fdp, 1); + afd_prevent_allow(fdp, 1); if (afd_sense(fdp)) ata_prtdev(fdp->device, "sense media type failed\n"); @@ -248,19 +236,22 @@ afdopen(dev_t dev, int flags, int fmt, struct thread *td) } static int -afdclose(dev_t dev, int flags, int fmt, struct thread *td) +afdclose(struct disk *dp) { - struct afd_softc *fdp = dev->si_drv1; + struct afd_softc *fdp = dp->d_drv1; + + afd_prevent_allow(fdp, 0); + if (0) + afd_eject(fdp, 0); /* to keep gcc quiet */ - if (count_dev(dev) == 1) - afd_prevent_allow(fdp, 0); return 0; } +#ifdef notyet static int -afdioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct thread *td) +afdioctl(struct disk *dp, u_long cmd, void *addr, int flag, struct thread *td) { - struct afd_softc *fdp = dev->si_drv1; + struct afd_softc *fdp = dp->d_drv1; switch (cmd) { case CDIOCEJECT: @@ -277,11 +268,12 @@ afdioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct thread *td) return ENOIOCTL; } } +#endif static void afdstrategy(struct bio *bp) { - struct afd_softc *fdp = bp->bio_dev->si_drv1; + struct afd_softc *fdp = bp->bio_disk->d_drv1; int s; if (fdp->device->flags & ATA_D_DETACHING) { diff --git a/sys/dev/ata/atapi-fd.h b/sys/dev/ata/atapi-fd.h index e92f79c2322..dc38fe37aac 100644 --- a/sys/dev/ata/atapi-fd.h +++ b/sys/dev/ata/atapi-fd.h @@ -75,6 +75,5 @@ struct afd_softc { struct afd_cappage cap; /* capabilities page info */ struct disk disk; /* virtual drives */ struct devstat stats; - dev_t dev; /* device place holder */ };