diff options
Diffstat (limited to 'sys/geom/geom_disk.c')
-rw-r--r-- | sys/geom/geom_disk.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/geom/geom_disk.c b/sys/geom/geom_disk.c index 5e2f939..bd3bf2e 100644 --- a/sys/geom/geom_disk.c +++ b/sys/geom/geom_disk.c @@ -89,6 +89,8 @@ g_disk_access(struct g_provider *pp, int r, int w, int e) if (error != 0) printf("Opened disk %s -> %d\n", pp->name, error); mtx_unlock(&Giant); + pp->mediasize = dp->d_mediasize; + pp->sectorsize = dp->d_sectorsize; } else if ((pp->acr + pp->acw + pp->ace) > 0 && (r + w + e) == 0) { mtx_lock(&Giant); error = devsw(dev)->d_close(dev, 3, 0, NULL); @@ -98,8 +100,6 @@ g_disk_access(struct g_provider *pp, int r, int w, int e) } else { error = 0; } - pp->mediasize = dp->d_mediasize; - pp->sectorsize = dp->d_sectorsize; return (error); } @@ -166,14 +166,10 @@ g_disk_start(struct bio *bp) mtx_unlock(&Giant); break; case BIO_GETATTR: - if (g_handleattr_int(bp, "GEOM::sectorsize", dp->d_sectorsize)) - break; - else if (g_handleattr_int(bp, "GEOM::fwsectors", dp->d_fwsectors)) + if (g_handleattr_int(bp, "GEOM::fwsectors", dp->d_fwsectors)) break; else if (g_handleattr_int(bp, "GEOM::fwheads", dp->d_fwheads)) break; - else if (g_handleattr_off_t(bp, "GEOM::mediasize", dp->d_mediasize)) - break; else if (g_handleattr_off_t(bp, "GEOM::frontstuff", 0)) break; else if (!strcmp(bp->bio_attribute, "GEOM::kerneldump")) @@ -236,6 +232,8 @@ g_disk_create(void *arg) gp->dumpconf = g_disk_dumpconf; dev->si_disk->d_softc = gp; pp = g_new_providerf(gp, "%s", gp->name); + pp->mediasize = dev->si_disk->d_mediasize; + pp->sectorsize = dev->si_disk->d_sectorsize; g_error_provider(pp, 0); } |