summaryrefslogtreecommitdiffstats
path: root/sys/dev/aac
diff options
context:
space:
mode:
authorscottl <scottl@FreeBSD.org>2003-02-26 02:50:27 +0000
committerscottl <scottl@FreeBSD.org>2003-02-26 02:50:27 +0000
commit0768d6627f9ab4ca46c37d238c66923114d6aec7 (patch)
tree07adceb2f4462e75aa3ebaf6dc6b8e668d02809d /sys/dev/aac
parent186c547c811f347f945817e5b39472f95b963d42 (diff)
downloadFreeBSD-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.c8
-rw-r--r--sys/dev/aac/aac_disk.c67
-rw-r--r--sys/dev/aac/aacvar.h1
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;
OpenPOWER on IntegriCloud