svn commit: r235989 - head/sys/geom/label
Edward Tomasz Napierala
trasz at FreeBSD.org
Fri May 25 10:08:48 UTC 2012
Author: trasz
Date: Fri May 25 10:08:48 2012
New Revision: 235989
URL: http://svn.freebsd.org/changeset/base/235989
Log:
Revert r235918 for now and add comment explaining the reason for the
size check.
Modified:
head/sys/geom/label/g_label_ufs.c
Modified: head/sys/geom/label/g_label_ufs.c
==============================================================================
--- head/sys/geom/label/g_label_ufs.c Fri May 25 09:36:39 2012 (r235988)
+++ head/sys/geom/label/g_label_ufs.c Fri May 25 10:08:48 2012 (r235989)
@@ -81,10 +81,16 @@ g_label_ufs_taste_common(struct g_consum
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);
More information about the svn-src-head
mailing list