From d34ac8d012ca65a25351f4be0c12b31d9d0d3447 Mon Sep 17 00:00:00 2001 From: Alex Hornung Date: Sun, 20 Sep 2009 20:52:44 +0100 Subject: [PATCH] md - when setdiskinfo, also set no of blocks * Before calling disk_setdiskinfo, make sure that the number of blocks is also set or no probing will be triggered at that point. * Also disable setdiskinfo on open, as it shouldn't be needed. * Fix nomenclature md0c -> md0s0. * This also fixes root mount from md disk image. Reported By: Alexander Polakov Dragonfly-bug: http://bugs.dragonflybsd.org/issue1522 --- sys/dev/disk/md/md.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/sys/dev/disk/md/md.c b/sys/dev/disk/md/md.c index d18d26431a..210137de3a 100644 --- a/sys/dev/disk/md/md.c +++ b/sys/dev/disk/md/md.c @@ -91,7 +91,9 @@ mdopen(struct dev_open_args *ap) { cdev_t dev = ap->a_head.a_dev; struct md_s *sc; +#if 0 struct disk_info info; +#endif if (md_debug) kprintf("mdopen(%s %x %x)\n", @@ -100,7 +102,7 @@ mdopen(struct dev_open_args *ap) sc = dev->si_drv1; if (sc->unit + 1 == mdunits) mdcreate_malloc(); - +#if 0 bzero(&info, sizeof(info)); info.d_media_blksize = DEV_BSIZE; /* mandatory */ info.d_media_blocks = sc->nsect; @@ -110,7 +112,7 @@ mdopen(struct dev_open_args *ap) 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); - +#endif return (0); } @@ -351,7 +353,7 @@ mdstrategy_preload(struct dev_strategy_args *ap) } static struct md_s * -mdcreate(void) +mdcreate(unsigned length) { struct md_s *sc; struct disk_info info; @@ -369,7 +371,7 @@ mdcreate(void) bzero(&info, sizeof(info)); info.d_media_blksize = DEV_BSIZE; /* mandatory */ - info.d_media_blocks = sc->nsect; + info.d_media_blocks = length / DEV_BSIZE; info.d_secpertrack = 1024; /* optional */ info.d_nheads = 1; @@ -385,7 +387,7 @@ mdcreate_preload(u_char *image, unsigned length) { struct md_s *sc; - sc = mdcreate(); + sc = mdcreate(length); sc->type = MD_PRELOAD; sc->nsect = length / DEV_BSIZE; sc->pl_ptr = image; @@ -400,7 +402,7 @@ mdcreate_malloc(void) { struct md_s *sc; - sc = mdcreate(); + sc = mdcreate(0); sc->type = MD_MALLOC; sc->nsect = MD_NSECT; /* for now */ @@ -449,7 +451,7 @@ static void md_takeroot(void *junk) { if (mdrootready) - rootdevnames[0] = "ufs:/dev/md0c"; + rootdevnames[0] = "ufs:/dev/md0s0"; } SYSINIT(md_root, SI_SUB_MOUNT_ROOT, SI_ORDER_FIRST, md_takeroot, NULL); -- 2.41.0