diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 2004-02-18 21:36:53 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2004-02-18 21:36:53 +0000 |
| commit | 0b7ed341e106c1583e873116529015d2ae042fd0 (patch) | |
| tree | 16cf67c25fa19d01be97b31241d2c56e85a88674 /sys/dev/amr | |
| parent | f63503fcbb7a5b0e118435058a2d2c56f1083252 (diff) | |
Notes
Diffstat (limited to 'sys/dev/amr')
| -rw-r--r-- | sys/dev/amr/amr_disk.c | 29 | ||||
| -rw-r--r-- | sys/dev/amr/amrvar.h | 2 |
2 files changed, 17 insertions, 14 deletions
diff --git a/sys/dev/amr/amr_disk.c b/sys/dev/amr/amr_disk.c index 42d09a239a83..a93e1edd0f9e 100644 --- a/sys/dev/amr/amr_disk.c +++ b/sys/dev/amr/amr_disk.c @@ -134,10 +134,10 @@ amrd_open(struct disk *dp) label->d_secpercyl = sc->amrd_drive->al_sectors * sc->amrd_drive->al_heads; label->d_secperunit = sc->amrd_drive->al_size; #else - sc->amrd_disk.d_sectorsize = AMR_BLKSIZE; - sc->amrd_disk.d_mediasize = (off_t)sc->amrd_drive->al_size * AMR_BLKSIZE; - sc->amrd_disk.d_fwsectors = sc->amrd_drive->al_sectors; - sc->amrd_disk.d_fwheads = sc->amrd_drive->al_heads; + sc->amrd_disk->d_sectorsize = AMR_BLKSIZE; + sc->amrd_disk->d_mediasize = (off_t)sc->amrd_drive->al_size * AMR_BLKSIZE; + sc->amrd_disk->d_fwsectors = sc->amrd_drive->al_sectors; + sc->amrd_disk->d_fwheads = sc->amrd_drive->al_heads; #endif return (0); @@ -247,13 +247,16 @@ amrd_attach(device_t dev) sc->amrd_drive->al_size, sc->amrd_drive->al_properties & AMR_DRV_RAID_MASK, amr_describe_code(amr_table_drvstate, AMR_DRV_CURSTATE(sc->amrd_drive->al_state))); - sc->amrd_disk.d_drv1 = sc; - sc->amrd_disk.d_maxsize = (AMR_NSEG - 1) * PAGE_SIZE; - sc->amrd_disk.d_open = amrd_open; - sc->amrd_disk.d_strategy = amrd_strategy; - sc->amrd_disk.d_name = "amrd"; - sc->amrd_disk.d_dump = (dumper_t *)amrd_dump; - disk_create(sc->amrd_unit, &sc->amrd_disk, 0, NULL, NULL); + sc->amrd_disk = disk_alloc(); + sc->amrd_disk->d_drv1 = sc; + sc->amrd_disk->d_maxsize = (AMR_NSEG - 1) * PAGE_SIZE; + sc->amrd_disk->d_open = amrd_open; + sc->amrd_disk->d_strategy = amrd_strategy; + sc->amrd_disk->d_name = "amrd"; + sc->amrd_disk->d_dump = (dumper_t *)amrd_dump; + sc->amrd_disk->d_unit = sc->amrd_unit; + sc->amrd_disk->d_flags = DISKFLAG_NEEDSGIANT; + disk_create(sc->amrd_disk, DISK_VERSION); #ifdef FREEBSD_4 disks_registered++; #endif @@ -268,14 +271,14 @@ amrd_detach(device_t dev) debug_called(1); - if (sc->amrd_disk.d_flags & DISKFLAG_OPEN) + if (sc->amrd_disk->d_flags & DISKFLAG_OPEN) return(EBUSY); #ifdef FREEBSD_4 if (--disks_registered == 0) cdevsw_remove(&amrddisk_cdevsw); #else - disk_destroy(&sc->amrd_disk); + disk_destroy(sc->amrd_disk); #endif return(0); } diff --git a/sys/dev/amr/amrvar.h b/sys/dev/amr/amrvar.h index 1191954a6ede..2378c97dd8ad 100644 --- a/sys/dev/amr/amrvar.h +++ b/sys/dev/amr/amrvar.h @@ -253,7 +253,7 @@ struct amrd_softc device_t amrd_dev; struct amr_softc *amrd_controller; struct amr_logdrive *amrd_drive; - struct disk amrd_disk; + struct disk *amrd_disk; int amrd_unit; }; |
