git: af433832f752 - main - geom_label: Remove an old sysinstall(8) workaround

Jessica Clarke jrtc27 at FreeBSD.org
Mon Jul 5 15:17:54 UTC 2021


The branch main has been updated by jrtc27:

URL: https://cgit.FreeBSD.org/src/commit/?id=af433832f7520840c22edd1fe1266c1a5cb781ad

commit af433832f7520840c22edd1fe1266c1a5cb781ad
Author:     Jessica Clarke <jrtc27 at FreeBSD.org>
AuthorDate: 2021-07-05 15:15:32 +0000
Commit:     Jessica Clarke <jrtc27 at FreeBSD.org>
CommitDate: 2021-07-05 15:15:32 +0000

    geom_label: Remove an old sysinstall(8) workaround
    
    We removed sysinstall(8) back in 2011, so this workaround should be long
    since unnecessary. This workaround can end up breaking cases that are
    hit in the real world, such as dd'ing a small pre-built disk image to a
    large partition that you intend to grow on first boot and uses a UFS
    disk label for / in its /etc/fstab (as the only reliable thing a raw UFS
    image can reference).
    
    Reviewed by:    imp, mckusick
    Differential Revision:  https://reviews.freebsd.org/D30825
---
 sys/geom/label/g_label_ufs.c | 35 +++++------------------------------
 1 file changed, 5 insertions(+), 30 deletions(-)

diff --git a/sys/geom/label/g_label_ufs.c b/sys/geom/label/g_label_ufs.c
index ababbaa4b43a..70d59488d7b6 100644
--- a/sys/geom/label/g_label_ufs.c
+++ b/sys/geom/label/g_label_ufs.c
@@ -49,19 +49,8 @@ __FBSDID("$FreeBSD$");
 #define	G_LABEL_UFS_ID		1
 
 /*
- * G_LABEL_UFS_CMP returns true if difference between provider mediasize
- * and filesystem size is less than G_LABEL_UFS_MAXDIFF sectors
- */
-#define	G_LABEL_UFS_CMP(prov, fsys, size) 				   \
-	( abs( ((fsys)->size) - ( (prov)->mediasize / (fsys)->fs_fsize ))  \
-				< G_LABEL_UFS_MAXDIFF )
-#define	G_LABEL_UFS_MAXDIFF	0x100
-
-/*
- * Try to find a superblock on the provider. If successful, then
- * check that the size in the superblock corresponds to the size
- * of the underlying provider. Finally, look for a volume label
- * and create an appropriate provider based on that.
+ * Try to find a superblock on the provider. If successful, look for a volume
+ * label and create an appropriate provider based on that.
  */
 static void
 g_label_ufs_taste_common(struct g_consumer *cp, char *label, size_t size, int what)
@@ -81,24 +70,10 @@ g_label_ufs_taste_common(struct g_consumer *cp, char *label, size_t size, int wh
 		return;
 	}
 
-	/*
-	 * Check for magic. We also need to check if file system size
-	 * is almost 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.
-	 *
-	 * In addition, media size can be a bit bigger than file system
-	 * size. For instance, mkuzip can append bytes to align data
-	 * to large sector size (it improves compression rates).
-	 */
-	if (fs->fs_magic == FS_UFS1_MAGIC && fs->fs_fsize > 0 &&
-	    ( G_LABEL_UFS_CMP(pp, fs, fs_old_size)
-		|| G_LABEL_UFS_CMP(pp, fs, fs_providersize))) {
+	/* Check for magic. */
+	if (fs->fs_magic == FS_UFS1_MAGIC && fs->fs_fsize > 0) {
 		/* Valid UFS1. */
-	} else if (fs->fs_magic == FS_UFS2_MAGIC && fs->fs_fsize > 0 &&
-	    ( G_LABEL_UFS_CMP(pp, fs, fs_size)
-		|| G_LABEL_UFS_CMP(pp, fs, fs_providersize))) {
+	} else if (fs->fs_magic == FS_UFS2_MAGIC && fs->fs_fsize > 0) {
 		/* Valid UFS2. */
 	} else {
 		goto out;


More information about the dev-commits-src-main mailing list