Kernel - Disk - do not bother trying to read the MBR if media_size is 0
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 1 Sep 2009 18:18:57 +0000 (11:18 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 1 Sep 2009 18:18:57 +0000 (11:18 -0700)
* Do not bother trying to read the MBR if media_size is 0, typically
  indicating removable media with no media present.

sys/kern/subr_diskmbr.c

index 0ac4506..94a5e99 100644 (file)
@@ -118,9 +118,18 @@ mbrinit(cdev_t dev, struct disk_info *info, struct diskslices **sspp)
 
        mbr_offset = DOSBBSECTOR;
 reread_mbr:
+       /*
+        * Don't bother if the block size is weird or the
+        * media size is 0 (probably means no media present).
+        */
        if (info->d_media_blksize & DEV_BMASK)
                return (EIO);
-       /* Read master boot record. */
+       if (info->d_media_size == 0)
+               return (EIO);
+
+       /*
+        * Read master boot record.
+        */
        wdev = dev;
        bp = geteblk((int)info->d_media_blksize);
        bp->b_bio1.bio_offset = (off_t)mbr_offset * info->d_media_blksize;