diff options
author | scottl <scottl@FreeBSD.org> | 2003-02-26 02:50:27 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2003-02-26 02:50:27 +0000 |
commit | 0768d6627f9ab4ca46c37d238c66923114d6aec7 (patch) | |
tree | 07adceb2f4462e75aa3ebaf6dc6b8e668d02809d /sys/dev/aac | |
parent | 186c547c811f347f945817e5b39472f95b963d42 (diff) | |
download | FreeBSD-src-0768d6627f9ab4ca46c37d238c66923114d6aec7.zip FreeBSD-src-0768d6627f9ab4ca46c37d238c66923114d6aec7.tar.gz |
Move to 'struct disk*' API
Submitted by: phk
Diffstat (limited to 'sys/dev/aac')
-rw-r--r-- | sys/dev/aac/aac.c | 8 | ||||
-rw-r--r-- | sys/dev/aac/aac_disk.c | 67 | ||||
-rw-r--r-- | sys/dev/aac/aacvar.h | 1 |
3 files changed, 26 insertions, 50 deletions
diff --git a/sys/dev/aac/aac.c b/sys/dev/aac/aac.c index aad1dcb..49cef38 100644 --- a/sys/dev/aac/aac.c +++ b/sys/dev/aac/aac.c @@ -899,7 +899,7 @@ aac_submit_bio(struct bio *bp) debug_called(2); - ad = (struct aac_disk *)bp->bio_dev->si_drv1; + ad = (struct aac_disk *)bp->bio_disk->d_drv1; sc = ad->ad_controller; /* queue the BIO and try to get some work done */ @@ -952,7 +952,7 @@ aac_bio_command(struct aac_softc *sc, struct aac_command **cmp) fib->Header.Size = sizeof(struct aac_fib_header); /* build the read/write request */ - ad = (struct aac_disk *)bp->bio_dev->si_drv1; + ad = (struct aac_disk *)bp->bio_disk->d_drv1; if (BIO_IS_READ(bp)) { br = (struct aac_blockread *)&fib->data[0]; br->Command = VM_CtBlockRead; @@ -2716,8 +2716,8 @@ aac_query_disk(struct aac_softc *sc, caddr_t uptr) query_disk.Target = disk->unit; query_disk.Lun = 0; query_disk.UnMapped = 0; - bcopy(disk->ad_dev_t->si_name, - &query_disk.diskDeviceName[0], 10); + sprintf(&query_disk.diskDeviceName[0], "%s%d", + disk->ad_disk.d_name, disk->ad_disk.d_unit); } AAC_LOCK_RELEASE(&sc->aac_container_lock); diff --git a/sys/dev/aac/aac_disk.c b/sys/dev/aac/aac_disk.c index cc777dd..1160439 100644 --- a/sys/dev/aac/aac_disk.c +++ b/sys/dev/aac/aac_disk.c @@ -63,34 +63,12 @@ static int aac_disk_detach(device_t dev); /* * Interface to the device switch. */ -static d_open_t aac_disk_open; -static d_close_t aac_disk_close; -static d_strategy_t aac_disk_strategy; +static disk_open_t aac_disk_open; +static disk_close_t aac_disk_close; +static disk_strategy_t aac_disk_strategy; static dumper_t aac_disk_dump; -#define AAC_DISK_CDEV_MAJOR 151 - -static struct cdevsw aac_disk_cdevsw = { - /* open */ aac_disk_open, - /* close */ aac_disk_close, - /* read */ physread, - /* write */ physwrite, - /* ioctl */ noioctl, - /* poll */ nopoll, - /* mmap */ nommap, - /* strategy */ aac_disk_strategy, - /* name */ "aacd", - /* maj */ AAC_DISK_CDEV_MAJOR, - /* dump */ aac_disk_dump, - /* psize */ nopsize, - /* flags */ D_DISK, -#if __FreeBSD_version < 500005 - /* bmaj */ -1 -#endif -}; - static devclass_t aac_disk_devclass; -static struct cdevsw aac_disk_disk_cdevsw; #ifdef FREEBSD_4 static int disks_registered = 0; #endif @@ -127,13 +105,13 @@ SYSCTL_UINT(_hw_aac, OID_AUTO, iosize_max, CTLFLAG_RD, &aac_iosize_max, 0, * basic device geometry paramters. */ static int -aac_disk_open(dev_t dev, int flags, int fmt, d_thread_t *td) +aac_disk_open(struct disk *dp) { struct aac_disk *sc; debug_called(4); - sc = (struct aac_disk *)dev->si_drv1; + sc = (struct aac_disk *)dp->d_drv1; if (sc == NULL) { printf("aac_disk_open: No Softc\n"); @@ -147,11 +125,6 @@ aac_disk_open(dev_t dev, int flags, int fmt, d_thread_t *td) return(ENXIO); } - sc->ad_disk.d_sectorsize = AAC_BLOCK_SIZE; - sc->ad_disk.d_mediasize = (off_t)sc->ad_size * AAC_BLOCK_SIZE; - sc->ad_disk.d_fwsectors = sc->ad_sectors; - sc->ad_disk.d_fwheads = sc->ad_heads; - sc->ad_flags |= AAC_DISK_OPEN; return (0); } @@ -160,13 +133,13 @@ aac_disk_open(dev_t dev, int flags, int fmt, d_thread_t *td) * Handle last close of the disk device. */ static int -aac_disk_close(dev_t dev, int flags, int fmt, d_thread_t *td) +aac_disk_close(struct disk *dp) { struct aac_disk *sc; debug_called(4); - sc = (struct aac_disk *)dev->si_drv1; + sc = (struct aac_disk *)dp->d_drv1; if (sc == NULL) return (ENXIO); @@ -185,7 +158,7 @@ aac_disk_strategy(struct bio *bp) debug_called(4); - sc = (struct aac_disk *)bp->bio_dev->si_drv1; + sc = (struct aac_disk *)bp->bio_disk->d_drv1; /* bogus disk? */ if (sc == NULL) { @@ -254,7 +227,7 @@ aac_disk_dump(void *arg, void *virtual, vm_offset_t physical, off_t offset, size struct disk *dp; dp = arg; - ad = dp->d_dev->si_drv1; + ad = dp->d_drv1; if (ad == NULL) return (EINVAL); @@ -308,7 +281,7 @@ aac_biodone(struct bio *bp) debug_called(4); - sc = (struct aac_disk *)bp->bio_dev->si_drv1; + sc = (struct aac_disk *)bp->bio_disk->d_drv1; devstat_end_transaction_bio(&sc->ad_stats, bp); if (bp->bio_flags & BIO_ERROR) { @@ -384,15 +357,19 @@ aac_disk_attach(device_t dev) DEVSTAT_PRIORITY_ARRAY); /* attach a generic disk device to ourselves */ - sc->ad_dev_t = disk_create(device_get_unit(dev), &sc->ad_disk, 0, - &aac_disk_cdevsw, &aac_disk_disk_cdevsw); - sc->ad_dev_t->si_drv1 = sc; -#ifdef FREEBSD_4 - disks_registered++; -#endif - - sc->ad_dev_t->si_iosize_max = aac_iosize_max; sc->unit = device_get_unit(dev); + sc->ad_disk.d_drv1 = sc; + sc->ad_disk.d_name = "aacd"; + sc->ad_disk.d_maxsize = aac_iosize_max; + sc->ad_disk.d_open = aac_disk_open; + sc->ad_disk.d_close = aac_disk_close; + sc->ad_disk.d_strategy = aac_disk_strategy; + sc->ad_disk.d_dump = aac_disk_dump; + sc->ad_disk.d_sectorsize = AAC_BLOCK_SIZE; + sc->ad_disk.d_mediasize = (off_t)sc->ad_size * AAC_BLOCK_SIZE; + sc->ad_disk.d_fwsectors = sc->ad_sectors; + sc->ad_disk.d_fwheads = sc->ad_heads; + disk_create(sc->unit, &sc->ad_disk, 0, NULL, NULL); return (0); } diff --git a/sys/dev/aac/aacvar.h b/sys/dev/aac/aacvar.h index 7e21cc3..31a845c 100644 --- a/sys/dev/aac/aacvar.h +++ b/sys/dev/aac/aacvar.h @@ -128,7 +128,6 @@ struct aac_sim struct aac_disk { device_t ad_dev; - dev_t ad_dev_t; struct aac_softc *ad_controller; struct aac_container *ad_container; struct disk ad_disk; |