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:
parent
7a0f8e4631
commit
99c889fc7d
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user