Continue untangling the disklabel. Have most disk device drivers fill out
authorMatthew Dillon <dillon@dragonflybsd.org>
Tue, 15 May 2007 00:01:04 +0000 (00:01 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Tue, 15 May 2007 00:01:04 +0000 (00:01 +0000)
and install a generic disk_info structure instead of filling out random
fields in the disklabel.

The generic disk_info structure uses a 64 bit integer to represent
the media size in bytes or total sector count.

29 files changed:
sys/bus/cam/scsi/scsi_cd.c
sys/bus/cam/scsi/scsi_da.c
sys/contrib/dev/fla/fla.c
sys/dev/disk/ata/ata-disk.c
sys/dev/disk/ata/ata-raid.c
sys/dev/disk/ata/atapi-fd.c
sys/dev/disk/fd/fd.c
sys/dev/disk/md/md.c
sys/dev/disk/nata/ata-disk.c
sys/dev/disk/nata/ata-raid.c
sys/dev/disk/nata/atapi-fd.c
sys/dev/raid/aac/aac_disk.c
sys/dev/raid/aac/aacvar.h
sys/dev/raid/amr/amr_disk.c
sys/dev/raid/ida/ida_disk.c
sys/dev/raid/ips/ips_disk.c
sys/dev/raid/mlx/mlx_disk.c
sys/dev/raid/mlx/mlxvar.h
sys/dev/raid/pst/pst-raid.c
sys/dev/raid/twe/twe_freebsd.c
sys/dev/raid/twe/twevar.h
sys/dev/virtual/disk/vdisk.c
sys/kern/subr_disk.c
sys/kern/subr_diskmbr.c
sys/kern/subr_diskslice.c
sys/sys/disk.h
sys/sys/disklabel.h
sys/sys/disklabel32.h
sys/sys/diskslice.h

index eeca80e..3e31d40 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_cd.c,v 1.31.2.16 2003/10/21 22:26:11 thomas Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_cd.c,v 1.28 2007/05/14 20:02:44 dillon Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_cd.c,v 1.29 2007/05/15 00:01:00 dillon Exp $
  */
 /*
  * Portions of this driver taken from the original FreeBSD cd driver.
@@ -767,8 +767,8 @@ cdregister(struct cam_periph *periph, void *arg)
                          DEVSTAT_BS_UNAVAILABLE,
                          DEVSTAT_TYPE_CDROM | DEVSTAT_TYPE_IF_SCSI,
                          DEVSTAT_PRIORITY_CD);
-       disk_create(periph->unit_number, &softc->disk,
-                   DSO_ONESLICE | DSO_COMPATLABEL, &cd_ops);
+       disk_create(periph->unit_number, &softc->disk, &cd_ops);
+       softc->disk.d_info.d_dsflags = DSO_ONESLICE | DSO_COMPATLABEL;
 
        /*
         * Add an async callback so that we get
@@ -1057,6 +1057,7 @@ cdclose(struct dev_close_args *ap)
        cdev_t dev = ap->a_head.a_dev;
        struct  cam_periph *periph;
        struct  cd_softc *softc;
+       struct  disk_info *info;
        int     unit, error;
 
        unit = dkunit(dev);
@@ -1076,8 +1077,9 @@ cdclose(struct dev_close_args *ap)
         * Unconditionally set the dsopen() flags back to their default
         * state.
         */
-       softc->disk.d_dsflags &= ~DSO_NOLABELS;
-       softc->disk.d_dsflags |= DSO_COMPATLABEL;
+       info = &softc->disk.d_info;
+       info->d_dsflags &= ~DSO_NOLABELS;
+       info->d_dsflags |= DSO_COMPATLABEL;
 
        /*
         * Since we're closing this CD, mark the blocksize as unavailable.
@@ -2760,7 +2762,7 @@ cdcheckmedia(struct cam_periph *periph)
        u_int32_t size, toclen;
        int error, num_entries, cdindex;
        int first_track_audio;
-       struct disklabel *label;
+       struct disk_info info;
 
        softc = (struct cd_softc *)periph->softc;
 
@@ -2770,13 +2772,13 @@ cdcheckmedia(struct cam_periph *periph)
        cdprevent(periph, PR_PREVENT);
 
        /*
-        * Build prototype label for whole disk.
-        * Should take information about different data tracks from the
-        * TOC and put it in the partition table.
+        * Set up disk info fields and tell the disk subsystem to reset
+        * its internal copy of the label.
         */
-       label = &softc->disk.d_label;
-       bzero(label, sizeof(*label));
-       label->d_type = DTYPE_SCSI;
+       bzero(&info, sizeof(info));
+       info.d_type = DTYPE_SCSI;
+       info.d_dsflags &= ~DSO_COMPATLABEL;
+       info.d_dsflags |= DSO_NOLABELS | DSO_COMPATPARTA;
 
        /*
         * Grab the inquiry data to get the vendor and product names.
@@ -2786,31 +2788,12 @@ cdcheckmedia(struct cam_periph *periph)
        cgd.ccb_h.func_code = XPT_GDEV_TYPE;
        xpt_action((union ccb *)&cgd);
 
+#if 0
        strncpy(label->d_typename, cgd.inq_data.vendor,
                min(SID_VENDOR_SIZE, sizeof(label->d_typename)));
        strncpy(label->d_packname, cgd.inq_data.product,
                min(SID_PRODUCT_SIZE, sizeof(label->d_packname)));
-               
-       label->d_flags = 0;
-       /*
-        * Make partition 'a' cover the whole disk.  This is a temporary
-        * compatibility hack.  The 'a' partition should not exist, so
-        * the slice code won't create it.  The slice code will make
-        * partition (RAW_PART + 'a') cover the whole disk and fill in
-        * some more defaults.
-        */
-       label->d_partitions[0].p_size = label->d_secperunit;
-       label->d_partitions[0].p_fstype = FS_OTHER;
-
-       /*
-        * Default to not reading the disklabel off the disk, until we can
-        * verify that we have media, that we have a table of contents, and
-        * that the first track is a data track (which could theoretically
-        * contain a disklabel).
-        */
-       softc->disk.d_dsflags &= ~DSO_COMPATLABEL;
-       softc->disk.d_dsflags |= DSO_NOLABELS;
-
+#endif
        /*
         * Clear the valid media and TOC flags until we've verified that we
         * have both.
@@ -2826,9 +2809,8 @@ cdcheckmedia(struct cam_periph *periph)
                 * Set a bogus sector size, so the slice code won't try to
                 * divide by 0 and panic the kernel.
                 */
-               label->d_secsize = 2048;
-
-               label->d_secperunit = 0;
+               info.d_media_blksize = 2048;
+               disk_setdiskinfo(&softc->disk, &info);
 
                /*
                 * XXX KDM is this a good idea?  Seems to cause more
@@ -2857,9 +2839,9 @@ cdcheckmedia(struct cam_periph *periph)
 
                return (error);
        } else {
-
-               label->d_secsize = softc->params.blksize;
-               label->d_secperunit = softc->params.disksize;
+               info.d_media_blksize = softc->params.blksize;
+               info.d_media_blocks = softc->params.disksize;
+               disk_setdiskinfo(&softc->disk, &info);
 
                /*
                 * Force a re-sync of slice information, like the blocksize,
@@ -2883,9 +2865,10 @@ cdcheckmedia(struct cam_periph *periph)
                                 * won't try to divide by 0 and panic the
                                 * kernel.
                                 */
-                               label->d_secsize = 2048;
-
-                               label->d_secperunit = 0;
+                               info.d_media_blksize = 2048;
+                               info.d_media_blocks = 0;
+                               info.d_media_size = 0;
+                               disk_setdiskinfo(&softc->disk, &info);
 
                                /*
                                 * Tell devstat(9) we don't have a blocksize.
@@ -3022,8 +3005,9 @@ cdcheckmedia(struct cam_periph *periph)
         * disklabel off the media, just in case the user put one there.
         */
        if (first_track_audio == 0) {
-               softc->disk.d_dsflags |= DSO_COMPATLABEL;
-               softc->disk.d_dsflags &= ~DSO_NOLABELS;
+               info.d_dsflags |= DSO_COMPATLABEL;
+               info.d_dsflags &= ~DSO_NOLABELS;
+               disk_setdiskinfo(&softc->disk, &info);
        }
        softc->flags |= CD_FLAG_VALID_TOC;
 
index b8f886c..72289dc 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.42.2.46 2003/10/21 22:18:19 thomas Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_da.c,v 1.34 2006/12/22 23:12:16 swildner Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_da.c,v 1.35 2007/05/15 00:01:00 dillon Exp $
  */
 
 #ifdef _KERNEL
@@ -518,7 +518,7 @@ daopen(struct dev_open_args *ap)
        cdev_t dev = ap->a_head.a_dev;
        struct cam_periph *periph;
        struct da_softc *softc;
-       struct disklabel *label;        
+       struct disk_info info;
        int unit;
        int part;
        int error;
@@ -585,10 +585,9 @@ daopen(struct dev_open_args *ap)
        if (error == 0) {
                struct ccb_getdev cgd;
 
-               /* Build label for whole disk. */
-               label = &softc->disk.d_label;
-               bzero(label, sizeof(*label));
-               label->d_type = DTYPE_SCSI;
+               /* Build disk information structure */
+               bzero(&info, sizeof(info));
+               info.d_type = DTYPE_SCSI;
 
                /*
                 * Grab the inquiry data to get the vendor and product names.
@@ -598,18 +597,29 @@ daopen(struct dev_open_args *ap)
                cgd.ccb_h.func_code = XPT_GDEV_TYPE;
                xpt_action((union ccb *)&cgd);
 
+#if 0
                strncpy(label->d_typename, cgd.inq_data.vendor,
                        min(SID_VENDOR_SIZE, sizeof(label->d_typename)));
                strncpy(label->d_packname, cgd.inq_data.product,
                        min(SID_PRODUCT_SIZE, sizeof(label->d_packname)));
+#endif
                
-               label->d_secsize = softc->params.secsize;
-               label->d_nsectors = softc->params.secs_per_track;
-               label->d_ntracks = softc->params.heads;
-               label->d_ncylinders = softc->params.cylinders;
-               label->d_secpercyl = softc->params.heads
-                                 * softc->params.secs_per_track;
-               label->d_secperunit = softc->params.sectors;
+               /*
+                * Mandatory fields
+                */
+               info.d_media_blksize = softc->params.secsize;
+               info.d_media_blocks = softc->params.sectors;
+               info.d_media_size = 0;
+
+               /*
+                * Optional fields
+                */
+               info.d_secpertrack = softc->params.secs_per_track;
+               info.d_nheads = softc->params.heads;
+               info.d_ncylinders = softc->params.cylinders;
+               info.d_secpercyl = softc->params.heads *
+                                  softc->params.secs_per_track;
+               disk_setdiskinfo(&softc->disk, &info);
 
                if ((softc->flags & DA_FLAG_PACK_REMOVABLE) != 0 &&
                    (softc->quirks & DA_Q_NO_PREVENT) == 0)
@@ -1317,7 +1327,7 @@ daregister(struct cam_periph *periph, void *arg)
        /*
         * Register this media as a disk
         */
-       disk_create(periph->unit_number, &softc->disk, 0, &da_ops);
+       disk_create(periph->unit_number, &softc->disk, &da_ops);
 
        /*
         * Add async callbacks for bus reset and
index 0ca6124..284ecf6 100644 (file)
@@ -7,7 +7,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/sys/contrib/dev/fla/fla.c,v 1.16 1999/12/08 04:45:16 ken Exp $ 
- * $DragonFly: src/sys/contrib/dev/fla/Attic/fla.c,v 1.17 2006/12/23 00:27:02 swildner Exp $ 
+ * $DragonFly: src/sys/contrib/dev/fla/Attic/fla.c,v 1.18 2007/05/15 00:01:03 dillon Exp $ 
  *
  */
 
@@ -124,7 +124,11 @@ flaopen(struct dev_open_args *ap)
        cdev_t dev = ap->a_head.a_dev;
        struct fla_s *sc;
        int error;
-       struct disklabel *dl;
+       struct disk_info info;
+       u_int secperunit = 0;
+       u_int secpertrack = 0;
+       u_int ncylinders = 0;
+       u_int nheads = 0;
 
        if (fla_debug)
                kprintf("flaopen(%s %x %x)\n",
@@ -139,13 +143,19 @@ flaopen(struct dev_open_args *ap)
                return (EIO);
        }
 
-       dl = &sc->disk.d_label;
-       bzero(dl, sizeof(*dl));
-       error = doc2k_size(sc->unit, &dl->d_secperunit,
-           &dl->d_ncylinders, &dl->d_ntracks, &dl->d_nsectors);
-       dl->d_secsize = DEV_BSIZE;
-       dl->d_secpercyl = dl->d_ntracks * dl->d_nsectors; /* XXX */
-
+       bzero(&info, sizeof(info));
+       error = doc2k_size(sc->unit, &secperunit, &ncylinders,
+                          &nheads, &secpertrack);
+       info.d_media_blksize = DEV_BSIZE;
+       if (error == 0) {
+               info.d_media_blocks = secperunit;
+               info.d_media_size = 0;
+               info.d_nheads = nheads;
+               info.d_ncylinders = ncylinders;
+               info.d_secpertrack = secpertrack;
+               info.d_secpercyl = nheads * secpertrack; /* XXX */
+       }
+       disk_setdiskinfo(&sc->disk, &info);
        return (0);
 }
 
@@ -338,7 +348,7 @@ flaattach (device_t dev)
                DEVSTAT_TYPE_DIRECT | DEVSTAT_TYPE_IF_OTHER,
                DEVSTAT_PRIORITY_DISK);
 
-       sc->dev = disk_create(unit, &sc->disk, 0, &fla_ops);
+       sc->dev = disk_create(unit, &sc->disk, &fla_ops);
        sc->dev->si_drv1 = sc;
        sc->unit = unit;
 
index cf80b1a..a5c96f1 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.60.2.24 2003/01/30 07:19:59 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-disk.c,v 1.33 2006/12/22 23:26:15 swildner Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-disk.c,v 1.34 2007/05/15 00:01:03 dillon Exp $
  */
 
 #include "opt_ata.h"
@@ -108,6 +108,7 @@ void
 ad_attach(struct ata_device *atadev, int alreadylocked)
 {
     struct ad_softc *adp;
+    struct disk_info info;
     cdev_t dev;
 
     adp = kmalloc(sizeof(struct ad_softc), M_AD, M_WAITOK | M_ZERO);
@@ -197,19 +198,21 @@ ad_attach(struct ata_device *atadev, int alreadylocked)
                      DEVSTAT_TYPE_DIRECT | DEVSTAT_TYPE_IF_IDE,
                      DEVSTAT_PRIORITY_DISK);
 
-    dev = disk_create(adp->lun, &adp->disk, 0, &ad_ops);
+    dev = disk_create(adp->lun, &adp->disk, &ad_ops);
     dev->si_drv1 = adp;
     dev->si_iosize_max = 256 * DEV_BSIZE;
     adp->dev = dev;
 
-    /* construct the disklabel */
-    bzero(&adp->disk.d_label, sizeof(struct disklabel));
-    adp->disk.d_label.d_secsize = DEV_BSIZE;
-    adp->disk.d_label.d_nsectors = adp->sectors;
-    adp->disk.d_label.d_ntracks = adp->heads;
-    adp->disk.d_label.d_ncylinders = adp->total_secs/(adp->heads*adp->sectors);
-    adp->disk.d_label.d_secpercyl = adp->sectors * adp->heads;
-    adp->disk.d_label.d_secperunit = adp->total_secs;
+    /* construct the disk_info */
+    bzero(&info, sizeof(info));
+    info.d_media_blksize = DEV_BSIZE;
+    info.d_media_blocks = adp->total_secs;
+    info.d_nheads = adp->heads;
+    info.d_secpertrack = adp->sectors;
+    info.d_ncylinders = adp->total_secs / 
+                        (info.d_nheads * info.d_secpertrack);
+    info.d_secpercyl = info.d_secpertrack * info.d_nheads;
+    disk_setdiskinfo(&adp->disk, &info);
 
     atadev->driver = adp;
     atadev->flags = 0;
@@ -643,7 +646,7 @@ ad_interrupt(struct ad_request *request)
     if (adp->device->channel->status & ATA_S_CORR)
        diskerr(request->bio, dev,
                "soft error (ECC corrected)", LOG_PRINTF,
-               request->donecount, &adp->disk.d_label);
+               request->donecount);
 
     /* did any real errors happen ? */
     if ((adp->device->channel->status & ATA_S_ERROR) ||
@@ -653,7 +656,7 @@ ad_interrupt(struct ad_request *request)
        diskerr(request->bio, dev,
                (adp->device->channel->error & ATA_E_ICRC) ?
                "UDMA ICRC error" : "hard error", LOG_PRINTF,
-               request->donecount, &adp->disk.d_label);
+               request->donecount);
 
        /* if this is a UDMA CRC error, reinject request */
        if (request->flags & ADR_F_DMA_USED &&
index 4e2a636..68d90cc 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-raid.c,v 1.3.2.19 2003/01/30 07:19:59 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-raid.c,v 1.25 2006/12/22 23:26:15 swildner Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-raid.c,v 1.26 2007/05/15 00:01:03 dillon Exp $
  */
 
 #include "opt_ata.h"
@@ -176,7 +176,7 @@ ar_attach_raid(struct ar_softc *rdp, int update)
     int disk;
 
     ar_config_changed(rdp, update);
-    dev = disk_create(rdp->lun, &rdp->disk, 0, &ar_ops);
+    dev = disk_create(rdp->lun, &rdp->disk, &ar_ops);
     dev->si_drv1 = rdp;
     dev->si_iosize_max = 256 * DEV_BSIZE;
     rdp->dev = dev;
@@ -457,16 +457,17 @@ static int
 aropen(struct dev_open_args *ap)
 {
     struct ar_softc *rdp = ap->a_head.a_dev->si_drv1;
-    struct disklabel *dl;
-       
-    dl = &rdp->disk.d_label;
-    bzero(dl, sizeof *dl);
-    dl->d_secsize = DEV_BSIZE;
-    dl->d_nsectors = rdp->sectors;
-    dl->d_ntracks = rdp->heads;
-    dl->d_ncylinders = rdp->cylinders;
-    dl->d_secpercyl = rdp->sectors * rdp->heads;
-    dl->d_secperunit = rdp->total_sectors;
+    struct disk_info info;
+
+    bzero(&info, sizeof(info));
+    info.d_media_blksize = DEV_BSIZE;          /* mandatory */
+    info.d_media_blocks = rdp->total_sectors;
+
+    info.d_secpertrack = rdp->sectors;         /* optional */
+    info.d_nheads = rdp->heads;
+    info.d_ncylinders = rdp->cylinders;
+    info.d_secpercyl = rdp->sectors * rdp->heads;
+    disk_setdiskinfo(&rdp->disk, &info);
     return 0;
 }
 
index 78b44ff..a43c7ee 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-fd.c,v 1.44.2.9 2002/07/31 11:19:26 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/atapi-fd.c,v 1.20 2006/12/22 23:26:15 swildner Exp $
+ * $DragonFly: src/sys/dev/disk/ata/atapi-fd.c,v 1.21 2007/05/15 00:01:03 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -102,7 +102,7 @@ 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_ops);
+    dev = disk_create(fdp->lun, &fdp->disk, &afd_ops);
     dev->si_drv1 = fdp;
     fdp->dev = dev;
 
@@ -232,7 +232,7 @@ afdopen(struct dev_open_args *ap)
 {
     cdev_t dev = ap->a_head.a_dev;
     struct afd_softc *fdp = dev->si_drv1;
-    struct disklabel *label = &fdp->disk.d_label;
+    struct disk_info info;
 
     atapi_test_ready(fdp->device);
 
@@ -244,13 +244,17 @@ afdopen(struct dev_open_args *ap)
 
     fdp->device->flags &= ~ATA_D_MEDIA_CHANGED;
 
-    bzero(label, sizeof *label);
-    label->d_secsize = fdp->cap.sector_size;
-    label->d_nsectors = fdp->cap.sectors;  
-    label->d_ntracks = fdp->cap.heads;
-    label->d_ncylinders = fdp->cap.cylinders;
-    label->d_secpercyl = fdp->cap.sectors * fdp->cap.heads;
-    label->d_secperunit = label->d_secpercyl * fdp->cap.cylinders;
+    bzero(&info, sizeof(info));
+    info.d_media_blksize = fdp->cap.sector_size;       /* mandatory */
+    info.d_media_blocks = fdp->cap.sectors * fdp->cap.heads * 
+                         fdp->cap.cylinders;
+
+    info.d_secpertrack = fdp->cap.sectors;             /* optional */
+    info.d_nheads = fdp->cap.heads;
+    info.d_ncylinders = fdp->cap.cylinders;
+    info.d_secpercyl = fdp->cap.sectors * fdp->cap.heads;
+
+    disk_setdiskinfo(&fdp->disk, &info);
     return 0;
 }
 
index b1f1059..5da3fa8 100644 (file)
@@ -51,7 +51,7 @@
  *
  *     from:   @(#)fd.c        7.4 (Berkeley) 5/25/91
  * $FreeBSD: src/sys/isa/fd.c,v 1.176.2.8 2002/05/15 21:56:14 joerg Exp $
- * $DragonFly: src/sys/dev/disk/fd/fd.c,v 1.36 2006/12/22 23:26:16 swildner Exp $
+ * $DragonFly: src/sys/dev/disk/fd/fd.c,v 1.37 2007/05/15 00:01:03 dillon Exp $
  *
  */
 
@@ -2116,7 +2116,7 @@ retrier(struct fdc_data *fdc)
                                    (FDUNIT(minor(dev))<<3)|RAW_PART);
                                diskerr(bio, subdev,
                                        "hard error", LOG_PRINTF,
-                                       fdc->fd->skip, NULL);
+                                       fdc->fd->skip);
                        }
                        if (printerror) {
                                if (fdc->flags & FDC_STAT_VALID)
index 504afd5..5ae46b4 100644 (file)
@@ -7,7 +7,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/sys/dev/md/md.c,v 1.8.2.2 2002/08/19 17:43:34 jdp Exp $
- * $DragonFly: src/sys/dev/disk/md/md.c,v 1.15 2006/12/22 23:26:16 swildner Exp $
+ * $DragonFly: src/sys/dev/disk/md/md.c,v 1.16 2007/05/15 00:01:03 dillon Exp $
  *
  */
 
@@ -91,7 +91,7 @@ mdopen(struct dev_open_args *ap)
 {
        cdev_t dev = ap->a_head.a_dev;
        struct md_s *sc;
-       struct disklabel *dl;
+       struct disk_info info;
 
        if (md_debug)
                kprintf("mdopen(%s %x %x)\n",
@@ -101,14 +101,16 @@ mdopen(struct dev_open_args *ap)
        if (sc->unit + 1 == mdunits)
                mdcreate_malloc();
 
-       dl = &sc->disk.d_label;
-       bzero(dl, sizeof(*dl));
-       dl->d_secsize = DEV_BSIZE;
-       dl->d_nsectors = 1024;
-       dl->d_ntracks = 1;
-       dl->d_secpercyl = dl->d_nsectors * dl->d_ntracks;
-       dl->d_secperunit = sc->nsect;
-       dl->d_ncylinders = dl->d_secperunit / dl->d_secpercyl;
+       bzero(&info, sizeof(info));
+       info.d_media_blksize = DEV_BSIZE;       /* mandatory */
+       info.d_media_blocks = sc->nsect;
+
+       info.d_secpertrack = 1024;              /* optional */
+       info.d_nheads = 1;
+       info.d_secpercyl = info.d_secpertrack * info.d_nheads;
+       info.d_ncylinders = (u_int)(info.d_media_blocks / info.d_secpercyl);
+       disk_setdiskinfo(&sc->disk, &info);
+
        return (0);
 }
 
@@ -367,7 +369,7 @@ mdcreate(void)
                DEVSTAT_NO_ORDERED_TAGS, 
                DEVSTAT_TYPE_DIRECT | DEVSTAT_TYPE_IF_OTHER,
                DEVSTAT_PRIORITY_OTHER);
-       sc->dev = disk_create(sc->unit, &sc->disk, 0, &md_ops);
+       sc->dev = disk_create(sc->unit, &sc->disk, &md_ops);
        sc->dev->si_drv1 = sc;
        return (sc);
 }
index f50f2c4..3875ac9 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.197 2006/03/31 08:09:04 sos Exp $
- * $DragonFly: src/sys/dev/disk/nata/ata-disk.c,v 1.2 2007/02/05 18:10:14 tgen Exp $
+ * $DragonFly: src/sys/dev/disk/nata/ata-disk.c,v 1.3 2007/05/15 00:01:03 dillon Exp $
  */
 
 #include "opt_ata.h"
@@ -94,6 +94,7 @@ ad_attach(device_t dev)
 {
     struct ata_channel *ch = device_get_softc(device_get_parent(dev));
     struct ata_device *atadev = device_get_softc(dev);
+    struct disk_info info;
     struct ad_softc *adp;
     cdev_t cdev;
     u_int32_t lbasize;
@@ -152,25 +153,31 @@ ad_attach(device_t dev)
                      DEVSTAT_NO_ORDERED_TAGS,
                      DEVSTAT_TYPE_DIRECT | DEVSTAT_TYPE_IF_IDE,
                      DEVSTAT_PRIORITY_DISK);
-    cdev = disk_create(device_get_unit(dev), &adp->disk, 0, &ad_ops);
+    cdev = disk_create(device_get_unit(dev), &adp->disk, &ad_ops);
     cdev->si_drv1 = dev;
     if (ch->dma)
         cdev->si_iosize_max = ch->dma->max_iosize;
     else
         cdev->si_iosize_max = DFLTPHYS;
     adp->cdev = cdev;
-    bzero(&adp->disk.d_label, sizeof(struct disklabel));
-    adp->disk.d_label.d_secsize = DEV_BSIZE;
-    adp->disk.d_label.d_nsectors = adp->sectors;
-    adp->disk.d_label.d_ntracks = adp->heads;
-    adp->disk.d_label.d_ncylinders = adp->total_secs/(adp->heads*adp->sectors);
-    adp->disk.d_label.d_secpercyl = adp->sectors * adp->heads;
-    adp->disk.d_label.d_secperunit = adp->total_secs;
+
+    bzero(&info, sizeof(info));
+    info.d_media_blksize = DEV_BSIZE;          /* mandatory */
+    info.d_media_blocks = adp->total_secs;
+
+    info.d_secpertrack = adp->sectors;         /* optional */
+    info.d_nheads = adp->heads;
+    info.d_ncylinders = adp->total_secs/(adp->heads*adp->sectors);
+    info.d_secpercyl = adp->sectors * adp->heads;
+
     device_add_child(dev, "subdisk", device_get_unit(dev));
     bus_generic_attach(dev);
 
     /* announce we are here */
     ad_describe(dev);
+
+    disk_setdiskinfo(&adp->disk, &info);
+
     return 0;
 }
 
index fafda55..78af8c4 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-raid.c,v 1.120 2006/04/15 10:27:41 maxim Exp $
- * $DragonFly: src/sys/dev/disk/nata/ata-raid.c,v 1.5 2007/02/08 21:48:24 tgen Exp $
+ * $DragonFly: src/sys/dev/disk/nata/ata-raid.c,v 1.6 2007/05/15 00:01:03 dillon Exp $
  */
 
 #include "opt_ata.h"
@@ -133,6 +133,7 @@ static int testing = 0;
 static void
 ata_raid_attach(struct ar_softc *rdp, int writeback)
 {
+    struct disk_info info;
     cdev_t cdev;
     char buffer[32];
     int disk;
@@ -151,17 +152,19 @@ ata_raid_attach(struct ar_softc *rdp, int writeback)
     else
        buffer[0] = '\0';
     /* XXX TGEN add devstats? */
-    cdev = disk_create(rdp->lun, &rdp->disk, 0, &ar_ops);
+    cdev = disk_create(rdp->lun, &rdp->disk, &ar_ops);
     cdev->si_drv1 = rdp;
     cdev->si_iosize_max = 128 * DEV_BSIZE;
     rdp->cdev = cdev;
-    bzero(&rdp->disk.d_label, sizeof(struct disklabel));
-    rdp->disk.d_label.d_secsize = DEV_BSIZE;
-    rdp->disk.d_label.d_nsectors = rdp->sectors;
-    rdp->disk.d_label.d_ntracks = rdp->heads;
-    rdp->disk.d_label.d_ncylinders = rdp->total_sectors/(rdp->heads*rdp->sectors);
-    rdp->disk.d_label.d_secpercyl = rdp->sectors * rdp->heads;
-    rdp->disk.d_label.d_secperunit = rdp->total_sectors;
+
+    bzero(&info, sizeof(info));
+    info.d_media_blksize = DEV_BSIZE;          /* mandatory */
+    info.d_media_blocks = rdp->total_sectors;
+
+    info.d_secpertrack = rdp->sectors;         /* optional */
+    info.d_nheads = rdp->heads;
+    info.d_ncylinders = rdp->total_sectors/(rdp->heads*rdp->sectors);
+    info.d_secpercyl = rdp->sectors * rdp->heads;
 
     kprintf("ar%d: %juMB <%s %s%s> status: %s\n", rdp->lun,
           rdp->total_sectors / ((1024L * 1024L) / DEV_BSIZE),
@@ -211,6 +214,8 @@ ata_raid_attach(struct ar_softc *rdp, int writeback)
        else
            kprintf("DOWN no device found for this subdisk\n");
     }
+
+    disk_setdiskinfo(&rdp->disk, &info);
 }
 
 /*
index 90fff04..fd845c3 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-fd.c,v 1.109 2006/03/30 05:29:57 marcel Exp $
- * $DragonFly: src/sys/dev/disk/nata/atapi-fd.c,v 1.2 2006/12/20 18:14:38 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/nata/atapi-fd.c,v 1.3 2007/05/15 00:01:03 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -111,7 +111,7 @@ afd_attach(device_t dev)
     devstat_add_entry(&fdp->stats, "afd", device_get_unit(dev), DEV_BSIZE,
                      DEVSTAT_NO_ORDERED_TAGS, DEVSTAT_TYPE_DIRECT |
                      DEVSTAT_TYPE_IF_IDE, DEVSTAT_PRIORITY_WFD);
-    cdev = disk_create(device_get_unit(dev), &fdp->disk, 0, &afd_ops);
+    cdev = disk_create(device_get_unit(dev), &fdp->disk, &afd_ops);
     cdev->si_drv1 = dev;
     if (ch->dma)
        cdev->si_iosize_max = ch->dma->max_iosize;
@@ -180,7 +180,7 @@ afd_open(struct dev_open_args *ap)
     device_t dev = ap->a_head.a_dev->si_drv1;
     struct ata_device *atadev = device_get_softc(dev);
     struct afd_softc *fdp = device_get_ivars(dev);
-    struct disklabel *label = &fdp->disk.d_label;
+    struct disk_info info;
 
     if (!fdp) 
        return ENXIO;
@@ -197,14 +197,17 @@ afd_open(struct dev_open_args *ap)
     if (!fdp->mediasize)
        return ENXIO;
 
-    bzero(label, sizeof(*label));
-    label->d_secsize = fdp->sectorsize;
-    label->d_nsectors = fdp->sectors;
-    label->d_ntracks = fdp->heads;
-    label->d_ncylinders =
-       ((fdp->mediasize/fdp->sectorsize)/fdp->sectors)/fdp->heads;
-    label->d_secpercyl = fdp->sectors * fdp->heads;
-    label->d_secperunit = fdp->mediasize/fdp->sectorsize;
+    bzero(&info, sizeof(info));
+    info.d_media_blksize = fdp->sectorsize;    /* mandatory */
+    info.d_media_size = fdp->mediasize;                /* (this is in bytes) */
+
+    info.d_secpertrack = fdp->sectors;         /* optional */
+    info.d_nheads = fdp->heads;
+    info.d_ncylinders =
+          ((fdp->mediasize/fdp->sectorsize)/fdp->sectors)/fdp->heads;
+    info.d_secpercyl = fdp->sectors * fdp->heads;
+
+    disk_setdiskinfo(&fdp->disk, &info);
     return 0;
 }
 
index b50fca8..ff542c4 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/aac/aac_disk.c,v 1.3.2.8 2003/01/11 18:39:39 scottl Exp $
- *     $DragonFly: src/sys/dev/raid/aac/aac_disk.c,v 1.16 2006/12/22 23:26:23 swildner Exp $
+ *     $DragonFly: src/sys/dev/raid/aac/aac_disk.c,v 1.17 2007/05/15 00:01:04 dillon Exp $
  */
 
 #include "opt_aac.h"
@@ -118,7 +118,7 @@ aac_disk_open(struct dev_open_args *ap)
 {
        cdev_t dev = ap->a_head.a_dev;
        struct aac_disk *sc;
-       struct disklabel *label;
+       struct disk_info info;
 
        debug_called(0);
 
@@ -137,16 +137,17 @@ aac_disk_open(struct dev_open_args *ap)
        }
 
        /* build synthetic label */
-       label = &sc->ad_disk.d_label;
-       bzero(label, sizeof(*label));
-       label->d_type = DTYPE_ESDI;
-       label->d_secsize        = AAC_BLOCK_SIZE;
-       label->d_nsectors   = sc->ad_sectors;
-       label->d_ntracks        = sc->ad_heads;
-       label->d_ncylinders = sc->ad_cylinders;
-       label->d_secpercyl  = sc->ad_sectors * sc->ad_heads;
-       label->d_secperunit = sc->ad_size;
+       bzero(&info, sizeof(info));
+       info.d_media_blksize= AAC_BLOCK_SIZE;           /* mandatory */
+       info.d_media_blocks = sc->ad_size;
 
+       info.d_type = DTYPE_ESDI;                       /* optional */
+       info.d_secpertrack   = sc->ad_sectors;
+       info.d_nheads   = sc->ad_heads;
+       info.d_ncylinders = sc->ad_cylinders;
+       info.d_secpercyl  = sc->ad_sectors * sc->ad_heads;
+
+       disk_setdiskinfo(&sc->ad_disk, &info);
        sc->ad_flags |= AAC_DISK_OPEN;
        return (0);
 }
@@ -302,7 +303,7 @@ aac_biodone(struct bio *bio, const char *code)
        devstat_end_transaction_buf(&sc->ad_stats, bp);
        if (bp->b_flags & B_ERROR) {
                diskerr(bio, sc->ad_dev_t,
-                       code, 0, 0, &sc->ad_label);
+                       code, 0, 0);
        }
        biodone(bio);
 }
@@ -364,7 +365,7 @@ 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,
+       sc->ad_dev_t = disk_create(device_get_unit(dev), &sc->ad_disk,
                                   &aac_disk_ops);
        sc->ad_dev_t->si_drv1 = sc;
 
index 00c8bec..e9ea778 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/aac/aacvar.h,v 1.4.2.7 2003/04/08 13:22:08 scottl Exp $
- *     $DragonFly: src/sys/dev/raid/aac/aacvar.h,v 1.15 2006/12/22 23:26:23 swildner Exp $
+ *     $DragonFly: src/sys/dev/raid/aac/aacvar.h,v 1.16 2007/05/15 00:01:04 dillon Exp $
  */
 
 #include <sys/thread2.h>
@@ -123,7 +123,6 @@ struct aac_disk
        struct aac_container            *ad_container;
        struct disk                     ad_disk;
        struct devstat                  ad_stats;
-       struct disklabel                ad_label;
        int                             ad_flags;
 #define AAC_DISK_OPEN  (1<<0)
        int                             ad_cylinders;
index 09dbf23..e62e9d1 100644 (file)
@@ -54,7 +54,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/amr/amr_disk.c,v 1.5.2.5 2002/12/20 15:12:04 emoore Exp $
- * $DragonFly: src/sys/dev/raid/amr/amr_disk.c,v 1.13 2006/10/25 20:56:00 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/amr/amr_disk.c,v 1.14 2007/05/15 00:01:04 dillon Exp $
  */
 
 /*
@@ -128,9 +128,7 @@ amrd_open(struct dev_open_args *ap)
 {
     cdev_t dev = ap->a_head.a_dev;
     struct amrd_softc  *sc = (struct amrd_softc *)dev->si_drv1;
-#if defined(__DragonFly__) || __FreeBSD_version < 500000               /* old buf style */
-    struct disklabel    *label;
-#endif
+    struct disk_info info;
 
     debug_called(1);
 
@@ -141,22 +139,17 @@ amrd_open(struct dev_open_args *ap)
     if (sc->amrd_controller->amr_state & AMR_STATE_SHUTDOWN)
        return(ENXIO);
 
-#if defined(__DragonFly__) || __FreeBSD_version < 500000               /* old buf style */
-    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;
-#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;
-#endif
+    bzero(&info, sizeof(info));
+    info.d_media_blksize = AMR_BLKSIZE;                        /* optional */
+    info.d_media_blocks        = sc->amrd_drive->al_size;
+
+    info.d_type       = DTYPE_SCSI;                    /* mandatory */
+    info.d_secpertrack = sc->amrd_drive->al_sectors;
+    info.d_nheads      = sc->amrd_drive->al_heads;
+    info.d_ncylinders = sc->amrd_drive->al_cylinders;
+    info.d_secpercyl  = sc->amrd_drive->al_sectors * sc->amrd_drive->al_heads;
+
+    disk_setdiskinfo(&sc->amrd_disk, &info);
 
     sc->amrd_flags |= AMRD_OPEN;
     return (0);
@@ -323,7 +316,7 @@ amrd_attach(device_t dev)
                      DEVSTAT_TYPE_STORARRAY | DEVSTAT_TYPE_IF_OTHER, 
                      DEVSTAT_PRIORITY_ARRAY);
 
-    sc->amrd_dev_t = disk_create(sc->amrd_unit, &sc->amrd_disk, 0, &amrd_ops);
+    sc->amrd_dev_t = disk_create(sc->amrd_unit, &sc->amrd_disk, &amrd_ops);
     sc->amrd_dev_t->si_drv1 = sc;
 
     /* set maximum I/O size to match the maximum s/g size */
index bac72cb..3a2fc20 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ida/ida_disk.c,v 1.12.2.6 2001/11/27 20:21:02 ps Exp $
- * $DragonFly: src/sys/dev/raid/ida/ida_disk.c,v 1.14 2006/10/25 20:56:01 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/ida/ida_disk.c,v 1.15 2007/05/15 00:01:04 dillon Exp $
  */
 
 /*
@@ -106,21 +106,23 @@ idad_open(struct dev_open_args *ap)
 {
        cdev_t dev = ap->a_head.a_dev;
        struct idad_softc *drv;
-       struct disklabel *label;
+       struct disk_info info;
 
        drv = idad_getsoftc(dev);
        if (drv == NULL)
                return (ENXIO);
 
-       label = &drv->disk.d_label;
-       bzero(label, sizeof(*label));
-       label->d_type = DTYPE_SCSI;
-       label->d_secsize = drv->secsize;
-       label->d_nsectors = drv->sectors;
-       label->d_ntracks = drv->heads;
-       label->d_ncylinders = drv->cylinders;
-       label->d_secpercyl = drv->sectors * drv->heads;
-       label->d_secperunit = drv->secperunit;
+       bzero(&info, sizeof(info));
+       info.d_media_blksize = drv->secsize;            /* mandatory */
+       info.d_media_blocks = drv->secperunit;
+
+       info.d_secpertrack = drv->sectors;              /* optional */
+       info.d_type = DTYPE_SCSI;
+       info.d_nheads = drv->heads;
+       info.d_ncylinders = drv->cylinders;
+       info.d_secpercyl = drv->sectors * drv->heads;
+
+       disk_setdiskinfo(&drv->disk, &info);
 
        return (0);
 }
@@ -299,7 +301,7 @@ idad_attach(device_t dev)
            DEVSTAT_TYPE_STORARRAY| DEVSTAT_TYPE_IF_OTHER,
            DEVSTAT_PRIORITY_ARRAY);
 
-       dsk = disk_create(drv->unit, &drv->disk, 0, &id_ops);
+       dsk = disk_create(drv->unit, &drv->disk, &id_ops);
 
        dsk->si_drv1 = drv;
        dsk->si_iosize_max = DFLTPHYS;          /* XXX guess? */
index 9b36da4..ae281c9 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ips/ips_disk.c,v 1.4 2003/09/22 04:59:07 njl Exp $
- * $DragonFly: src/sys/dev/raid/ips/ips_disk.c,v 1.11 2006/12/22 23:26:23 swildner Exp $
+ * $DragonFly: src/sys/dev/raid/ips/ips_disk.c,v 1.12 2007/05/15 00:01:04 dillon Exp $
  */
 
 #include <sys/devicestat.h>
@@ -158,7 +158,7 @@ ipsd_attach(device_t dev)
 {
        device_t adapter;
        ipsdisk_softc_t *dsc;
-       struct  disklabel *label;
+       struct disk_info info;
        u_int totalsectors;
        u_int nheads, nsectors;
 
@@ -183,18 +183,22 @@ ipsd_attach(device_t dev)
                          DEVSTAT_NO_ORDERED_TAGS,
                          DEVSTAT_TYPE_DIRECT | DEVSTAT_TYPE_IF_SCSI,
                          DEVSTAT_PRIORITY_DISK);
-       dsc->ipsd_dev_t = disk_create(dsc->unit, &dsc->ipsd_disk, 0, &ipsd_ops);
+       dsc->ipsd_dev_t = disk_create(dsc->unit, &dsc->ipsd_disk, &ipsd_ops);
        dsc->ipsd_dev_t->si_drv1 = dsc;
        dsc->ipsd_dev_t->si_iosize_max = IPS_MAX_IO_SIZE;
-       label = &dsc->ipsd_disk.d_label;
-       bzero(label, sizeof(*label));
-       label->d_ntracks    = nheads;
-       label->d_nsectors   = nsectors;
-       label->d_type       = DTYPE_ESDI;
-       label->d_secsize    = IPS_BLKSIZE;
-       label->d_ncylinders = totalsectors / nheads / nsectors;
-       label->d_secpercyl  = nsectors / nheads;
-       label->d_secperunit = totalsectors;
+
+       bzero(&info, sizeof(info));
+       info.d_media_blksize    = IPS_BLKSIZE;          /* mandatory */
+       info.d_media_blocks     = totalsectors;
+
+       info.d_type             = DTYPE_ESDI;           /* optional */
+       info.d_nheads           = nheads;
+       info.d_secpertrack      = nsectors;
+       info.d_ncylinders       = totalsectors / nheads / nsectors;
+       info.d_secpercyl        = nsectors / nheads;
+
+       disk_setdiskinfo(&dsc->ipsd_disk, &info);
+
        device_printf(dev, "Logical Drive  (%dMB)\n",
            dsc->sc->drives[dsc->disk_number].sector_count >> 11);
        return 0;
index 9ba20eb..ae801d8 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/mlx/mlx_disk.c,v 1.8.2.4 2001/06/25 04:37:51 msmith Exp $
- * $DragonFly: src/sys/dev/raid/mlx/mlx_disk.c,v 1.11 2006/10/25 20:56:01 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/mlx/mlx_disk.c,v 1.12 2007/05/15 00:01:04 dillon Exp $
  */
 
 /*
@@ -90,7 +90,7 @@ mlxd_open(struct dev_open_args *ap)
 {
     cdev_t dev = ap->a_head.a_dev;
     struct mlxd_softc  *sc = (struct mlxd_softc *)dev->si_drv1;
-    struct disklabel   *label;
+    struct disk_info info;
 
     debug_called(1);
        
@@ -101,15 +101,17 @@ mlxd_open(struct dev_open_args *ap)
     if (sc->mlxd_controller->mlx_state & MLX_STATE_SHUTDOWN)
        return(ENXIO);
 
-    label = &sc->mlxd_disk.d_label;
-    bzero(label, sizeof(*label));
-    label->d_type = DTYPE_SCSI;
-    label->d_secsize    = MLX_BLKSIZE;
-    label->d_nsectors   = sc->mlxd_drive->ms_sectors;
-    label->d_ntracks    = sc->mlxd_drive->ms_heads;
-    label->d_ncylinders = sc->mlxd_drive->ms_cylinders;
-    label->d_secpercyl  = sc->mlxd_drive->ms_sectors * sc->mlxd_drive->ms_heads;
-    label->d_secperunit = sc->mlxd_drive->ms_size;
+    bzero(&info, sizeof(info));
+    info.d_media_blksize= MLX_BLKSIZE;         /* mandatory */
+    info.d_media_blocks        = sc->mlxd_drive->ms_size;
+
+    info.d_type                = DTYPE_SCSI;           /* optional */
+    info.d_secpertrack = sc->mlxd_drive->ms_sectors;
+    info.d_nheads      = sc->mlxd_drive->ms_heads;
+    info.d_ncylinders  = sc->mlxd_drive->ms_cylinders;
+    info.d_secpercyl   = sc->mlxd_drive->ms_sectors * sc->mlxd_drive->ms_heads;
+
+    disk_setdiskinfo(&sc->mlxd_disk, &info);
 
     sc->mlxd_flags |= MLXD_OPEN;
     return (0);
@@ -256,7 +258,7 @@ mlxd_attach(device_t dev)
                      DEVSTAT_TYPE_STORARRAY | DEVSTAT_TYPE_IF_OTHER, 
                      DEVSTAT_PRIORITY_ARRAY);
 
-    dsk = disk_create(sc->mlxd_unit, &sc->mlxd_disk, 0, &mlxd_ops);
+    dsk = disk_create(sc->mlxd_unit, &sc->mlxd_disk, &mlxd_ops);
     dsk->si_drv1 = sc;
     sc->mlxd_dev_t = dsk;
 
index f5735cd..84f81e4 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/mlx/mlxvar.h,v 1.5.2.3 2001/06/25 04:37:51 msmith Exp $
- *     $DragonFly: src/sys/dev/raid/mlx/mlxvar.h,v 1.10 2006/12/22 23:26:24 swildner Exp $
+ *     $DragonFly: src/sys/dev/raid/mlx/mlxvar.h,v 1.11 2007/05/15 00:01:04 dillon Exp $
  */
 
 /*
@@ -230,7 +230,6 @@ struct mlxd_softc
     struct mlx_sysdrive        *mlxd_drive;
     struct disk                mlxd_disk;
     struct devstat     mlxd_stats;
-    struct disklabel   mlxd_label;
     int                        mlxd_unit;
     int                        mlxd_flags;
 #define MLXD_OPEN      (1<<0)          /* drive is open (can't shut down) */
index 5ef0fb6..69b18c2 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/pst/pst-raid.c,v 1.2.2.1 2002/08/18 12:32:36 sos Exp $
- * $DragonFly: src/sys/dev/raid/pst/pst-raid.c,v 1.22 2006/12/22 23:26:24 swildner Exp $
+ * $DragonFly: src/sys/dev/raid/pst/pst-raid.c,v 1.23 2007/05/15 00:01:04 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -127,6 +127,7 @@ pst_attach(device_t dev)
     struct pst_softc *psc = device_get_softc(dev);
     struct i2o_get_param_reply *reply;
     struct i2o_device_identity *ident;
+    struct disk_info info;
     int lun = device_get_unit(dev);
     int8_t name [32];
 
@@ -159,19 +160,21 @@ pst_attach(device_t dev)
 
     bioq_init(&psc->bio_queue);
 
-    psc->device = disk_create(lun, &psc->disk, 0, &pst_ops);
+    psc->device = disk_create(lun, &psc->disk, &pst_ops);
     psc->device->si_drv1 = psc;
     psc->device->si_iosize_max = 64 * 1024; /*I2O_SGL_MAX_SEGS * PAGE_SIZE;*/
 
-    bzero(&psc->disk.d_label, sizeof(struct disklabel));
-    psc->disk.d_label.d_secsize = psc->info->block_size;
-    psc->disk.d_label.d_nsectors = 63;
-    psc->disk.d_label.d_ntracks = 255;
-    psc->disk.d_label.d_ncylinders =
-       (psc->info->capacity / psc->info->block_size) / (255 * 63);
-    psc->disk.d_label.d_secpercyl = 255 * 63;
-    psc->disk.d_label.d_secperunit =
-       psc->info->capacity / psc->info->block_size;
+    bzero(&info, sizeof(info));
+    info.d_media_blksize = psc->info->block_size;      /* mandatory */
+    info.d_media_size = psc->info->capacity;           /* (in bytes) */
+
+    info.d_secpertrack = 63;                           /* optional */
+    info.d_nheads = 255;
+    info.d_secpercyl = info.d_nheads * info.d_secpertrack;
+    info.d_ncylinders =
+       (psc->info->capacity / psc->info->block_size) / info.d_secpercyl;
+
+    disk_setdiskinfo(&psc->disk, &info);
 
     devstat_add_entry(&psc->stats, "pst", lun, psc->info->block_size,
                      DEVSTAT_NO_ORDERED_TAGS,
@@ -179,8 +182,8 @@ pst_attach(device_t dev)
                      DEVSTAT_PRIORITY_DISK);
 
     kprintf("pst%d: %lluMB <%.40s> [%d/%d/%d] on %.16s\n", lun,
-          (unsigned long long)psc->disk.d_label.d_secperunit / (1024 * 2),
-          name, psc->disk.d_label.d_ncylinders, 255, 63,
+          info.d_media_size / (1024 * 1024), name,
+          info.d_ncylinders , info.d_nheads, info.d_secpertrack,
           device_get_nameunit(psc->iop->dev));
 #if 0
     EVENTHANDLER_REGISTER(shutdown_post_sync, pst_shutdown,
index 2d9a8ce..19de76e 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/twe/twe_freebsd.c,v 1.2.2.9 2004/06/11 18:57:31 vkashyap Exp $
- * $DragonFly: src/sys/dev/raid/twe/twe_freebsd.c,v 1.25 2006/12/22 23:26:24 swildner Exp $
+ * $DragonFly: src/sys/dev/raid/twe/twe_freebsd.c,v 1.26 2007/05/15 00:01:04 dillon Exp $
  */
 
 /*
@@ -628,7 +628,7 @@ twed_open(struct dev_open_args *ap)
 {
     cdev_t dev = ap->a_head.a_dev;
     struct twed_softc  *sc = (struct twed_softc *)dev->si_drv1;
-    struct disklabel   *label;
+    struct disk_info info;
 
     debug_called(4);
        
@@ -639,16 +639,18 @@ twed_open(struct dev_open_args *ap)
     if (sc->twed_controller->twe_state & TWE_STATE_SHUTDOWN)
        return(ENXIO);
 
-    /* build synthetic label */
-    label = &sc->twed_disk.d_label;
-    bzero(label, sizeof(*label));
-    label->d_type = DTYPE_ESDI;
-    label->d_secsize    = TWE_BLOCK_SIZE;
-    label->d_nsectors   = sc->twed_drive->td_sectors;
-    label->d_ntracks    = sc->twed_drive->td_heads;
-    label->d_ncylinders = sc->twed_drive->td_cylinders;
-    label->d_secpercyl  = sc->twed_drive->td_sectors * sc->twed_drive->td_heads;
-    label->d_secperunit = sc->twed_drive->td_size;
+    /* build disk info */
+    bzero(&info, sizeof(info));
+    info.d_media_blksize    = TWE_BLOCK_SIZE;  /* mandatory */
+    info.d_media_blocks            = sc->twed_drive->td_size;
+
+    info.d_type                = DTYPE_ESDI;           /* optional */
+    info.d_secpertrack = sc->twed_drive->td_sectors;
+    info.d_nheads      = sc->twed_drive->td_heads;
+    info.d_ncylinders  = sc->twed_drive->td_cylinders;
+    info.d_secpercyl   = sc->twed_drive->td_sectors * sc->twed_drive->td_heads;
+
+    disk_setdiskinfo(&sc->twed_disk, &info);
 
     sc->twed_flags |= TWED_OPEN;
     return (0);
@@ -818,8 +820,7 @@ twed_attach(device_t dev)
                        DEVSTAT_PRIORITY_ARRAY);
 
     /* attach a generic disk device to ourselves */
-    dsk = disk_create(sc->twed_drive->td_sys_unit, &sc->twed_disk,
-                       0, &twed_ops);
+    dsk = disk_create(sc->twed_drive->td_sys_unit, &sc->twed_disk, &twed_ops);
     dsk->si_drv1 = sc;
 /*    dsk->si_drv2 = sc->twed_drive;*/
     sc->twed_dev_t = dsk;
index 6b14f25..4029ff2 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/twe/twevar.h,v 1.1.2.8 2004/06/11 18:57:32 vkashyap Exp $
- *     $DragonFly: src/sys/dev/raid/twe/twevar.h,v 1.8 2006/12/22 23:26:24 swildner Exp $
+ *     $DragonFly: src/sys/dev/raid/twe/twevar.h,v 1.9 2007/05/15 00:01:04 dillon Exp $
  */
 
 #define TWE_DRIVER_VERSION_STRING      "1.40.01.002"
@@ -83,7 +83,6 @@ struct twed_softc
     struct twe_drive   *twed_drive;            /* drive data in parent softc */
     struct disk                twed_disk;              /* generic disk handle */
     struct devstat     twed_stats;             /* accounting */
-    struct disklabel   twed_label;             /* synthetic label */
     int                        twed_flags;
 #define TWED_OPEN      (1<<0)                  /* drive is open (can't shut down) */
 };
index fc4ec06..dd56d17 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/dev/virtual/disk/vdisk.c,v 1.3 2007/03/16 13:41:40 swildner Exp $
+ * $DragonFly: src/sys/dev/virtual/disk/vdisk.c,v 1.4 2007/05/15 00:01:04 dillon Exp $
  */
 
 /*
@@ -105,20 +105,9 @@ vkdinit(void *dummy __unused)
                                  DEVSTAT_NO_ORDERED_TAGS,
                                  DEVSTAT_TYPE_DIRECT | DEVSTAT_TYPE_IF_OTHER,
                                  DEVSTAT_PRIORITY_DISK);
-               sc->dev = disk_create(sc->unit, &sc->disk, 0, &vkd_ops);
+               sc->dev = disk_create(sc->unit, &sc->disk, &vkd_ops);
                sc->dev->si_drv1 = sc;
                sc->dev->si_iosize_max = 256 * 1024;
-
-#if 0
-               dl = &sc->disk.d_label;
-               bzero(dl, sizeof(*dl));
-               dl->d_secsize = DEV_BSIZE;
-               dl->d_nsectors = st.st_size / dl->d_secsize;
-               dl->d_ntracks = 1;
-               dl->d_secpercyl = dl->d_nsectors;
-               dl->d_ncylinders = 1;
-#endif
-
        }
 }
 
@@ -128,7 +117,7 @@ static int
 vkdopen(struct dev_open_args *ap)
 {
        struct vkd_softc *sc;
-       struct disklabel *dl;
+       struct disk_info info;
        struct stat st;
        cdev_t dev;
 
@@ -137,14 +126,16 @@ vkdopen(struct dev_open_args *ap)
        if (fstat(sc->fd, &st) < 0 || st.st_size == 0)
                return(ENXIO);
 
-       dl = &sc->disk.d_label;
-       bzero(dl, sizeof(*dl));
-       dl->d_secsize = DEV_BSIZE;
-       dl->d_nsectors = st.st_size / dl->d_secsize;
-       dl->d_ntracks = 1;
-       dl->d_secpercyl = dl->d_nsectors;
-       dl->d_ncylinders = 1;
-       dl->d_secperunit = dl->d_nsectors;
+       bzero(&info, sizeof(info));
+       info.d_media_blksize = DEV_BSIZE;
+       info.d_media_blocks = st.st_size / info.d_media_blksize;
+
+       info.d_nheads = 1;
+       info.d_ncylinders = 1;
+       info.d_secpertrack = info.d_media_blocks;
+       info.d_secpercyl = info.d_secpertrack * info.d_nheads;
+
+       disk_setdiskinfo(&sc->disk, &info);
        return(0);
 }
 
index a38e699..cbc7541 100644 (file)
@@ -77,7 +77,7 @@
  *     @(#)ufs_disksubr.c      8.5 (Berkeley) 1/21/94
  * $FreeBSD: src/sys/kern/subr_disk.c,v 1.20.2.6 2001/10/05 07:14:57 peter Exp $
  * $FreeBSD: src/sys/ufs/ufs/ufs_disksubr.c,v 1.44.2.3 2001/03/05 05:42:19 obrien Exp $
- * $DragonFly: src/sys/kern/subr_disk.c,v 1.28 2006/12/26 11:01:07 swildner Exp $
+ * $DragonFly: src/sys/kern/subr_disk.c,v 1.29 2007/05/15 00:01:04 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -136,7 +136,7 @@ static struct dev_ops disk_ops = {
  * it also uses it internally when passing (modified) commands through.
  */
 cdev_t
-disk_create(int unit, struct disk *dp, int flags, struct dev_ops *raw_ops)
+disk_create(int unit, struct disk *dp, struct dev_ops *raw_ops)
 {
        cdev_t rawdev;
        struct dev_ops *dev_ops;
@@ -169,11 +169,48 @@ disk_create(int unit, struct disk *dp, int flags, struct dev_ops *raw_ops)
                            UID_ROOT, GID_OPERATOR, 0640,
                            "%s%d", dev_ops->head.name, unit);
 
-       dp->d_dsflags = flags;
        LIST_INSERT_HEAD(&disklist, dp, d_list);
        return (dp->d_rawdev);
 }
 
+/*
+ * Disk drivers must call this routine when media parameters are available
+ * or have changed.
+ */
+void
+disk_setdiskinfo(struct disk *disk, struct disk_info *info)
+{
+       struct disklabel *label = &disk->d_label;
+
+       bzero(label, sizeof(*label));
+       bcopy(info, &disk->d_info, sizeof(disk->d_info));
+       info = &disk->d_info;
+
+       KKASSERT(info->d_media_size == 0 || info->d_media_blksize == 0);
+       if (info->d_media_size == 0 && info->d_media_blocks) {
+               info->d_media_size = (u_int64_t)info->d_media_blocks * 
+                                    info->d_media_blksize;
+       } else if (info->d_media_size && info->d_media_blocks == 0 && 
+                  info->d_media_blksize) {
+               info->d_media_blocks = info->d_media_size / 
+                                      info->d_media_blksize;
+       }
+
+       label->d_secsize = info->d_media_blksize;
+       label->d_secperunit = (u_int)info->d_media_blocks;
+       KKASSERT(info->d_media_blocks < 0x100000000LLU);
+
+       if (info->d_dsflags & DSO_COMPATPARTA) {
+               label->d_partitions[0].p_size = label->d_secperunit;
+               label->d_partitions[0].p_fstype = FS_OTHER;
+       }
+
+       label->d_nsectors = info->d_secpertrack;
+       label->d_ntracks = info->d_nheads;
+       label->d_ncylinders = info->d_ncylinders;
+       label->d_secpercyl = info->d_secpercyl;
+}
+
 /*
  * This routine is called when an adapter detaches.  The higher level
  * managed disk device is destroyed while the lower level raw device is
@@ -318,7 +355,7 @@ diskopen(struct dev_open_args *ap)
        if (error)
                goto out;
        
-       error = dsopen(dev, ap->a_devtype, dp->d_dsflags,
+       error = dsopen(dev, ap->a_devtype, dp->d_info.d_dsflags,
                       &dp->d_slice, &dp->d_label);
 
        if (!dsisopen(dp->d_slice)) 
@@ -756,8 +793,7 @@ hp0g: hard error reading fsbn 12345 of 12344-12347 (hp0 bn %d cn %d tn %d sn %d)
  * or log(-1, ...), respectively.  There is no trailing space.
  */
 void
-diskerr(struct bio *bio, cdev_t dev, const char *what, int pri, 
-       int donecnt, struct disklabel *lp)
+diskerr(struct bio *bio, cdev_t dev, const char *what, int pri, int donecnt)
 {
        struct buf *bp = bio->bio_buf;
        int unit = dkunit(dev);
index 22c2378..0c4700d 100644 (file)
@@ -36,7 +36,7 @@
  *     from: @(#)ufs_disksubr.c        7.16 (Berkeley) 5/4/91
  *     from: ufs_disksubr.c,v 1.8 1994/06/07 01:21:39 phk Exp $
  * $FreeBSD: src/sys/kern/subr_diskmbr.c,v 1.45 2000/01/28 10:22:07 bde Exp $
- * $DragonFly: src/sys/kern/subr_diskmbr.c,v 1.18 2006/12/23 00:35:04 swildner Exp $
+ * $DragonFly: src/sys/kern/subr_diskmbr.c,v 1.19 2007/05/15 00:01:04 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -207,7 +207,7 @@ reread_mbr:
        if (biowait(bp) != 0) {
                diskerr(&bp->b_bio1, wdev, 
                        "reading primary partition table: error",
-                       LOG_PRINTF, 0, NULL);
+                       LOG_PRINTF, 0);
                kprintf("\n");
                error = EIO;
                goto done;
@@ -424,7 +424,7 @@ mbr_extended(cdev_t dev, struct disklabel *lp, struct diskslices *ssp,
        if (biowait(bp) != 0) {
                diskerr(&bp->b_bio1, dev,
                        "reading extended partition table: error",
-                       LOG_PRINTF, 0, NULL);
+                       LOG_PRINTF, 0);
                kprintf("\n");
                goto done;
        }
index eece982..1c22427 100644 (file)
@@ -44,7 +44,7 @@
  *     from: @(#)ufs_disksubr.c        7.16 (Berkeley) 5/4/91
  *     from: ufs_disksubr.c,v 1.8 1994/06/07 01:21:39 phk Exp $
  * $FreeBSD: src/sys/kern/subr_diskslice.c,v 1.82.2.6 2001/07/24 09:49:41 dd Exp $
- * $DragonFly: src/sys/kern/subr_diskslice.c,v 1.27 2007/05/14 20:02:45 dillon Exp $
+ * $DragonFly: src/sys/kern/subr_diskslice.c,v 1.28 2007/05/15 00:01:04 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -53,6 +53,7 @@
 #include <sys/conf.h>
 #include <sys/disklabel.h>
 #include <sys/diskslice.h>
+#include <sys/disk.h>
 #include <sys/diskmbr.h>
 #include <sys/fcntl.h>
 #include <sys/malloc.h>
index 7c116f0..03bdf6f 100644 (file)
@@ -39,7 +39,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/sys/sys/disk.h,v 1.16.2.3 2001/06/20 16:11:01 scottl Exp $
- * $DragonFly: src/sys/sys/disk.h,v 1.10 2006/09/10 01:26:40 dillon Exp $
+ * $DragonFly: src/sys/sys/disk.h,v 1.11 2007/05/15 00:01:04 dillon Exp $
  */
 
 #ifndef _SYS_DISK_H_
 #include <sys/disklabel.h>
 #endif
 
+/*
+ * Media information structure - filled in by the media driver.
+ */
+struct disk_info {
+       /*
+        * These fields are required.  Most drivers will load a disk_info
+        * structure in the device open function with the media parameters
+        * and call disk_setdiskinfo().
+        *
+        * Note that only one of d_media_size or d_media_blocks should be
+        * filled in.
+        *
+        * d_media_size         media size in bytes
+        * d_media_blocks       media size in blocks (e.g. total sectors)
+        * d_media_blksize      media block size / sector size
+        * d_dsflags            disklabel management flags
+        */
+       u_int64_t               d_media_size;
+       u_int64_t               d_media_blocks;
+       int                     d_media_blksize;
+       u_int                   d_dsflags;
+
+       /*
+        * Optional fields, leave 0 if not known
+        */
+       u_int                   d_type;         /* DTYPE_xxx */
+       u_int                   d_nheads;
+       u_int                   d_ncylinders;
+       u_int                   d_secpertrack;
+       u_int                   d_secpercyl;
+};
+
+/*
+ * d_dsflags, also used for dsopen() - control disklabel processing
+ */
+#define DSO_NOLABELS           0x0001
+#define DSO_ONESLICE           0x0002
+#define DSO_COMPATLABEL                0x0004
+#define DSO_COMPATPARTA                0x0008
+
+/*
+ * Disk management structure - automated disklabel support.
+ */
 struct disk {
        struct dev_ops          *d_dev_ops;     /* our device switch */
        struct dev_ops          *d_raw_ops;     /* the raw device switch */
        u_int                   d_flags;
-       u_int                   d_dsflags;
        cdev_t                  d_rawdev;       /* backing raw device */
        cdev_t                  d_cdev;         /* special whole-disk part */
        struct diskslices       *d_slice;
+       struct disk_info        d_info;         /* info structure for media */
        struct disklabel        d_label;
        LIST_ENTRY(disk)        d_list;
 };
 
+/*
+ * d_flags
+ */
 #define DISKFLAG_LOCK          0x1
 #define DISKFLAG_WANTED                0x2
 
 #ifdef _KERNEL
-cdev_t disk_create (int unit, struct disk *disk, int flags, struct dev_ops *raw_ops);
+cdev_t disk_create (int unit, struct disk *disk, struct dev_ops *raw_ops);
 void disk_destroy (struct disk *disk);
+void disk_setdiskinfo (struct disk *disk, struct disk_info *info);
 int disk_dumpcheck (cdev_t dev, u_int *count, u_int *blkno, u_int *secsize);
 struct disk *disk_enumerate (struct disk *disk);
 void disk_invalidate (struct disk *disk);
index 7ce6195..6c76e5d 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)disklabel.h 8.2 (Berkeley) 7/10/94
  * $FreeBSD: src/sys/sys/disklabel.h,v 1.49.2.7 2001/05/27 05:58:26 jkh Exp $
- * $DragonFly: src/sys/sys/disklabel.h,v 1.17 2007/05/14 20:02:45 dillon Exp $
+ * $DragonFly: src/sys/sys/disklabel.h,v 1.18 2007/05/15 00:01:04 dillon Exp $
  */
 
 #ifndef _SYS_DISKLABEL_H_
@@ -396,7 +396,7 @@ struct      bio_queue_head;
 struct bio *bounds_check_with_label (cdev_t dev, struct bio *bio,
                                     struct disklabel *lp, int wlabel);
 void   diskerr (struct bio *bio, cdev_t dev, const char *what, int pri,
-                    int donecnt, struct disklabel *lp);
+                    int donecnt);
 void   disksort (struct buf *ap, struct buf *bp);
 char   *readdisklabel (cdev_t dev, struct disklabel *lp);
 void   bioqdisksort (struct bio_queue_head *ap, struct bio *bio);
index 551425f..0e418e5 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)disklabel.h 8.2 (Berkeley) 7/10/94
  * $FreeBSD: src/sys/sys/disklabel.h,v 1.49.2.7 2001/05/27 05:58:26 jkh Exp $
- * $DragonFly: src/sys/sys/disklabel32.h,v 1.17 2007/05/14 20:02:45 dillon Exp $
+ * $DragonFly: src/sys/sys/disklabel32.h,v 1.18 2007/05/15 00:01:04 dillon Exp $
  */
 
 #ifndef _SYS_DISKLABEL_H_
@@ -396,7 +396,7 @@ struct      bio_queue_head;
 struct bio *bounds_check_with_label (cdev_t dev, struct bio *bio,
                                     struct disklabel *lp, int wlabel);
 void   diskerr (struct bio *bio, cdev_t dev, const char *what, int pri,
-                    int donecnt, struct disklabel *lp);
+                    int donecnt);
 void   disksort (struct buf *ap, struct buf *bp);
 char   *readdisklabel (cdev_t dev, struct disklabel *lp);
 void   bioqdisksort (struct bio_queue_head *ap, struct bio *bio);
index 83ef039..2a5e869 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/sys/diskslice.h,v 1.36.2.1 2001/01/29 01:50:50 ken Exp $
- * $DragonFly: src/sys/sys/diskslice.h,v 1.8 2006/09/10 01:26:40 dillon Exp $
+ * $DragonFly: src/sys/sys/diskslice.h,v 1.9 2007/05/15 00:01:04 dillon Exp $
  */
 
 #ifndef        _SYS_DISKSLICE_H_
@@ -76,11 +76,6 @@ struct diskslices {
 
 #ifdef _KERNEL
 
-/* Flags for dsopen(). */
-#define        DSO_NOLABELS    1
-#define        DSO_ONESLICE    2
-#define        DSO_COMPATLABEL 4
-
 #define        dsgetlabel(dev, ssp)    (ssp->dss_slices[dkslice(dev)].ds_label)
 
 struct buf;