Date: Fri, 26 Jan 2007 04:20:23 GMT From: Bruce Evans <bde@zeta.org.au> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/108320: dumpfs(8) lists wrong file system size [PATCH?] Message-ID: <200701260420.l0Q4KN7p005187@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/108320; it has been noted by GNATS. From: Bruce Evans <bde@zeta.org.au> To: Toby Burress <kurin@delete.org> Cc: freebsd-gnats-submit@freebsd.org, jmallett@freebsd.org Subject: Re: bin/108320: dumpfs(8) lists wrong file system size [PATCH?] Date: Fri, 26 Jan 2007 15:15:32 +1100 (EST) On Thu, 25 Jan 2007, Toby Burress wrote: > On Thu, Jan 25, 2007 at 06:56:23PM +1100, Bruce Evans wrote: >> On Wed, 24 Jan 2007, Toby Burress wrote: >> >>>> Description: >>> When using dumpfs(8) to check the file system size, and in particular >>> dumpfs -m to find a command that creates the file system, the size >>> listed is smaller than the actual size of the file system. >> >> No, dumpfs is correct. It just reports the size being used ffs. The >> size is in blocks (frags). This size is reported by dumpfs as `fsize`. > > If dumpfs is correct, then why are the file systems created with > the command `dumpfs -m` smaller than the original file systems? Sorry, I didn't notice that you wanted -m to work (I didn't know that -m existed). -m just never actually worked, except accidentally when the frag size equals the sector size. It prints "-s <size in frags>" but newfs's -s arg takes a size in sectors. These sizes normally differ by a factor of 4, since the frag size defaults to 2048 and most disks have a sector size of 512. Another bug in -m is that it conflicts with NetBSD's -m. It's bogus for newfs to take a size in sectors. The sector size is not recorded in struct fs or used by ffs. It just needs to be a divisor of the frag size (and maybe a power of 2). newfs normally determines it using a disk ioctl and only uses it to scale the sizes. This default can can be overridden by specifying the size using newfs -S or -T. Another bug: -T apparently clobbers any setting by -S, even if -S is after -T on the command line. Possible fixes: - use a disk ioctl in dumpfs, so as to reverse the conversion of units that newfs will do. I don't like this. It doesn't work if the file system is a copy of a disk in a regular file. - use a fake sector size: print "-S <frag size>" in dumpfs. This should give identical results since ffs doesn't actually use the sector size, except newfs randomizes some things in the new file system. The undocumented -R flag can be used to avoid the randomness for testing. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200701260420.l0Q4KN7p005187>