[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