We need to check if file system size is equal to provider's size, because

sysinstall(8) still bogusly puts first partition at offset 0 instead of 16,
so glabel/ufs will find file system on slice instead of partition.

Before sysinstall is fixed, we must keep this code, which means that we
wont't be able to detect UFS file systems created with 'newfs -s ...'.

PS. bsdlabel(8) creates partitions properly.

MFC after:	3 days
This commit is contained in:
Pawel Jakub Dawidek 2006-03-04 19:41:54 +00:00
parent 7a0f8e4631
commit 99c889fc7d

View File

@ -78,8 +78,13 @@ g_label_ufs_taste(struct g_consumer *cp, char *label, size_t size)
if (fs == NULL)
continue;
/* Check for magic and make sure things are the right size */
if (fs->fs_magic != FS_UFS1_MAGIC &&
fs->fs_magic != FS_UFS2_MAGIC) {
if (fs->fs_magic == FS_UFS1_MAGIC &&
fs->fs_old_size * fs->fs_fsize == (int32_t)pp->mediasize) {
/* Valid UFS1. */
} 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);
continue;
}