[Midnightbsd-cvs] src [8717] trunk: fix problem with geom label not recognizing UFS labels on filesytems that have been resized.

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Sep 25 18:27:13 EDT 2016


Revision: 8717
          http://svnweb.midnightbsd.org/src/?rev=8717
Author:   laffer1
Date:     2016-09-25 18:27:13 -0400 (Sun, 25 Sep 2016)
Log Message:
-----------
fix problem with geom label not recognizing UFS labels on filesytems that have been resized.

Modified Paths:
--------------
    trunk/sbin/dumpfs/dumpfs.c
    trunk/sbin/growfs/growfs.c
    trunk/sbin/newfs/mkfs.c
    trunk/sbin/newfs/newfs.c
    trunk/sbin/newfs/newfs.h
    trunk/sys/geom/label/g_label_ufs.c
    trunk/sys/ufs/ffs/fs.h

Modified: trunk/sbin/dumpfs/dumpfs.c
===================================================================
--- trunk/sbin/dumpfs/dumpfs.c	2016-09-25 22:23:26 UTC (rev 8716)
+++ trunk/sbin/dumpfs/dumpfs.c	2016-09-25 22:27:13 UTC (rev 8717)
@@ -277,8 +277,9 @@
 		printf("unknown flags (%#x)", fsflags);
 	putchar('\n');
 	printf("fsmnt\t%s\n", afs.fs_fsmnt);
-	printf("volname\t%s\tswuid\t%ju\n",
-		afs.fs_volname, (uintmax_t)afs.fs_swuid);
+	printf("volname\t%s\tswuid\t%ju\tprovidersize\t%ju\n",
+		afs.fs_volname, (uintmax_t)afs.fs_swuid,
+		(uintmax_t)afs.fs_providersize);
 	printf("\ncs[].cs_(nbfree,ndir,nifree,nffree):\n\t");
 	afs.fs_csp = calloc(1, afs.fs_cssize);
 	if (bread(&disk, fsbtodb(&afs, afs.fs_csaddr), afs.fs_csp, afs.fs_cssize) == -1)

Modified: trunk/sbin/growfs/growfs.c
===================================================================
--- trunk/sbin/growfs/growfs.c	2016-09-25 22:23:26 UTC (rev 8716)
+++ trunk/sbin/growfs/growfs.c	2016-09-25 22:27:13 UTC (rev 8717)
@@ -1504,6 +1504,7 @@
 	}
 
 	sblock.fs_size = dbtofsb(&osblock, size / DEV_BSIZE);
+	sblock.fs_providersize = dbtofsb(&osblock, mediasize / DEV_BSIZE);
 
 	/*
 	 * Are we really growing?

Modified: trunk/sbin/newfs/mkfs.c
===================================================================
--- trunk/sbin/newfs/mkfs.c	2016-09-25 22:23:26 UTC (rev 8716)
+++ trunk/sbin/newfs/mkfs.c	2016-09-25 22:27:13 UTC (rev 8717)
@@ -263,6 +263,7 @@
 	}
 	sblock.fs_fsbtodb = ilog2(sblock.fs_fsize / sectorsize);
 	sblock.fs_size = fssize = dbtofsb(&sblock, fssize);
+	sblock.fs_providersize = dbtofsb(&sblock, mediasize / sectorsize);
 
 	/*
 	 * Before the filesystem is finally initialized, mark it

Modified: trunk/sbin/newfs/newfs.c
===================================================================
--- trunk/sbin/newfs/newfs.c	2016-09-25 22:23:26 UTC (rev 8716)
+++ trunk/sbin/newfs/newfs.c	2016-09-25 22:27:13 UTC (rev 8717)
@@ -94,6 +94,7 @@
 int	nflag;			/* do not create .snap directory */
 int	tflag;			/* enable TRIM */
 intmax_t fssize;		/* file system size */
+off_t	mediasize;		/* device size */
 int	sectorsize;		/* bytes/sector */
 int	realsectorsize;		/* bytes/sector in hardware */
 int	fsize = 0;		/* fragment size */
@@ -135,7 +136,6 @@
 	char *cp, *special;
 	intmax_t reserved;
 	int ch, i, rval;
-	off_t mediasize;
 	char part_name;		/* partition name, default to full disk */
 
 	part_name = 'c';

Modified: trunk/sbin/newfs/newfs.h
===================================================================
--- trunk/sbin/newfs/newfs.h	2016-09-25 22:23:26 UTC (rev 8716)
+++ trunk/sbin/newfs/newfs.h	2016-09-25 22:27:13 UTC (rev 8717)
@@ -87,6 +87,7 @@
 extern int	nflag;		/* do not create .snap directory */
 extern int	tflag;		/* enable TRIM */
 extern intmax_t	fssize;		/* file system size */
+extern off_t	mediasize;	/* device size */
 extern int	sectorsize;	/* bytes/sector */
 extern int	realsectorsize;	/* bytes/sector in hardware*/
 extern int	fsize;		/* fragment size */

Modified: trunk/sys/geom/label/g_label_ufs.c
===================================================================
--- trunk/sys/geom/label/g_label_ufs.c	2016-09-25 22:23:26 UTC (rev 8716)
+++ trunk/sys/geom/label/g_label_ufs.c	2016-09-25 22:27:13 UTC (rev 8717)
@@ -1,4 +1,4 @@
-/* $MidnightBSD: src/sys/geom/label/g_label_ufs.c,v 1.5 2011/12/10 15:46:15 laffer1 Exp $ */
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2002, 2003 Gordon Tetlow
  * Copyright (c) 2006 Pawel Jakub Dawidek <pjd at FreeBSD.org>
@@ -87,7 +87,8 @@
 		    pp->mediasize / fs->fs_fsize == fs->fs_old_size) {
 		    	/* Valid UFS1. */
 		} else if (fs->fs_magic == FS_UFS2_MAGIC && fs->fs_fsize > 0 &&
-		    pp->mediasize / fs->fs_fsize == fs->fs_size) {
+		    ((pp->mediasize / fs->fs_fsize == fs->fs_size) ||
+		    (pp->mediasize / fs->fs_fsize == fs->fs_providersize))) {
 		    	/* Valid UFS2. */
 		} else {
 			g_free(fs);

Modified: trunk/sys/ufs/ffs/fs.h
===================================================================
--- trunk/sys/ufs/ffs/fs.h	2016-09-25 22:23:26 UTC (rev 8716)
+++ trunk/sys/ufs/ffs/fs.h	2016-09-25 22:27:13 UTC (rev 8717)
@@ -332,7 +332,8 @@
 	int32_t	 fs_old_cpc;		/* cyl per cycle in postbl */
 	int32_t	 fs_maxbsize;		/* maximum blocking factor permitted */
 	int64_t	 fs_unrefs;		/* number of unreferenced inodes */
-	int64_t	 fs_sparecon64[16];	/* old rotation block list head */
+	int64_t  fs_providersize;	/* size of underlying GEOM provider */
+	int64_t	 fs_sparecon64[15];	/* old rotation block list head */
 	int64_t	 fs_sblockloc;		/* byte offset of standard superblock */
 	struct	csum_total fs_cstotal;	/* (u) cylinder summary information */
 	ufs_time_t fs_time;		/* last time written */



More information about the Midnightbsd-cvs mailing list