diff options
-rw-r--r-- | sys/geom/geom_disk.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/sys/geom/geom_disk.c b/sys/geom/geom_disk.c index d671517..ba3d961 100644 --- a/sys/geom/geom_disk.c +++ b/sys/geom/geom_disk.c @@ -123,6 +123,13 @@ g_disk_access(struct g_provider *pp, int r, int w, int e) pp->mediasize = dp->d_mediasize; pp->sectorsize = dp->d_sectorsize; dp->d_flags |= DISKFLAG_OPEN; + if (dp->d_maxsize == 0 && dp->d_dev->si_iosize_max != 0) + dp->d_maxsize = dp->d_dev->si_iosize_max; + if (dp->d_maxsize == 0) { + printf("WARNING: Disk drive %s%d has no d_maxsize\n", + dp->d_name, dp->d_unit); + dp->d_maxsize = DFLTPHYS; + } } else if ((pp->acr + pp->acw + pp->ace) > 0 && (r + w + e) == 0) { if (dp->d_close != NULL || dp->d_cclose != NULL) { g_disk_lock_giant(dp); @@ -195,16 +202,6 @@ g_disk_start(struct bio *bp) /* fall-through */ case BIO_READ: case BIO_WRITE: - if (dp->d_dev->si_iosize_max != 0) - dp->d_maxsize = dp->d_dev->si_iosize_max; -#ifdef maybe - else - /* - * XXX: Who knows how many drivers have undeclared - * limitations ? - */ - dp->d_maxsize = DFLTPHYS; -#endif off = 0; bp3 = NULL; bp2 = g_clone_bio(bp); |