Revert r235918 for now and add comment explaining the reason for the

size check.
This commit is contained in:
Edward Tomasz Napierala 2012-05-25 10:08:48 +00:00
parent 491a40587d
commit d87e55886e

View File

@ -81,10 +81,16 @@ g_label_ufs_taste_common(struct g_consumer *cp, char *label, size_t size, int wh
fs = (struct fs *)g_read_data(cp, superblock, SBLOCKSIZE, NULL);
if (fs == NULL)
continue;
/* Check for magic */
if (fs->fs_magic == FS_UFS1_MAGIC && fs->fs_fsize > 0) {
/* Check for magic. We also need to check if file system size is equal
* to providers size, because sysinstall(8) used to bogusly put first
* partition at offset 0 instead of 16, and glabel/ufs would find file
* system on slice instead of partition.
*/
if (fs->fs_magic == FS_UFS1_MAGIC && fs->fs_fsize > 0 &&
pp->mediasize / fs->fs_fsize == fs->fs_old_size) {
/* Valid UFS1. */
} else if (fs->fs_magic == FS_UFS2_MAGIC && fs->fs_fsize > 0) {
} else if (fs->fs_magic == FS_UFS2_MAGIC && fs->fs_fsize > 0 &&
pp->mediasize / fs->fs_fsize == fs->fs_size) {
/* Valid UFS2. */
} else {
g_free(fs);