diff options
author | phk <phk@FreeBSD.org> | 2002-09-20 19:36:05 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2002-09-20 19:36:05 +0000 |
commit | 57a346a21312d7f99ca28aee15ab6091be10cbd7 (patch) | |
tree | 47b5afae3623c1371d19a0478c850d8e6a08d07b /sys/dev/amr | |
parent | 2fb7a39c0fdc17568c3b60cf37e5f3c2d6dff5e4 (diff) | |
download | FreeBSD-src-57a346a21312d7f99ca28aee15ab6091be10cbd7.zip FreeBSD-src-57a346a21312d7f99ca28aee15ab6091be10cbd7.tar.gz |
(This commit touches about 15 disk device drivers in a very consistent
and predictable way, and I apologize if I have gotten it wrong anywhere,
getting prior review on a patch like this is not feasible, considering
the number of people involved and hardware availability etc.)
If struct disklabel is the messenger: kill the messenger.
Inside struct disk we had a struct disklabel which disk drivers used to
communicate certain metrics to the disklayer above (GEOM or the disk
mini-layer). This commit changes this communication to use four
explicit fields instead.
Amongst the benefits is that the fields do not get overwritten by
wrong or bogus on-disk disklabels.
Once that is clear, <sys/disk.h> which is included in the drivers
no longer need to pull <sys/disklabel.h> and <sys/diskslice.h> in,
the few places that needs them, have gotten explicit #includes for
them.
The disklabel inside struct disk is now only for internal use in
the disk mini-layer, so instead of embedding it, we malloc it as
we need it.
This concludes (modulus any mistakes) the series of disklabel related
commits.
I belive it all amounts to a NOP for all the rest of you :-)
Sponsored by: DARPA & NAI Labs.
Diffstat (limited to 'sys/dev/amr')
-rw-r--r-- | sys/dev/amr/amr_disk.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/sys/dev/amr/amr_disk.c b/sys/dev/amr/amr_disk.c index 38784d3..e486e87 100644 --- a/sys/dev/amr/amr_disk.c +++ b/sys/dev/amr/amr_disk.c @@ -103,7 +103,6 @@ static int amrd_open(dev_t dev, int flags, int fmt, struct thread *td) { struct amrd_softc *sc = (struct amrd_softc *)dev->si_drv1; - struct disklabel *label; debug_called(1); @@ -114,15 +113,10 @@ amrd_open(dev_t dev, int flags, int fmt, struct thread *td) if (sc->amrd_controller->amr_state & AMR_STATE_SHUTDOWN) return(ENXIO); - label = &sc->amrd_disk.d_label; - bzero(label, sizeof(*label)); - label->d_type = DTYPE_SCSI; - label->d_secsize = AMR_BLKSIZE; - label->d_nsectors = sc->amrd_drive->al_sectors; - label->d_ntracks = sc->amrd_drive->al_heads; - label->d_ncylinders = sc->amrd_drive->al_cylinders; - label->d_secpercyl = sc->amrd_drive->al_sectors * sc->amrd_drive->al_heads; - label->d_secperunit = sc->amrd_drive->al_size; + 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_flags |= AMRD_OPEN; return (0); |