Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Nov 2010 01:24:27 +0000 (UTC)
From:      Kirk McKusick <mckusick@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sbin/newfs mkfs.c
Message-ID:  <201011230124.oAN1Ofjx037972@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
mckusick    2010-11-23 01:24:27 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_8)
    sbin/newfs           mkfs.c 
  Log:
  SVN rev 215728 on 2010-11-23 01:24:27Z by mckusick
  
  MFC of 213119
  
  Reported problem:
  Large (60GB) filesystems created using "newfs -U -O 1 -b 65536 -f 8192"
  show incorrect results from "df" for free and used space when mounted
  immediately after creation. fsck on the new filesystem (before ever
  mounting it once) gives a "SUMMARY INFORMATION BAD" error in phase 5.
  
  This error hasn't occurred in any runs of fsck immediately after
  "newfs -U -b 65536 -f 8192" (leaving out the "-O 1" option).
  
  Solution:
  The default UFS1 superblock is located at offset 8K in the filesystem
  partition; the default UFS2 superblock is located at offset 64K in
  the filesystem partition. For UFS1 filesystems with a blocksize of
  64K, the first alternate superblock resides at 64K which is the the
  location used for the default UFS2 superblock. By default, the
  system first checks for a valid superblock at the default location
  for a UFS2 filoesystem. For a UFS1 filesystem with a blocksize of
  64K, there is a valid UFS1 superblock at this location. Thus, even
  though it is expected to be a backup superblock, the system will
  use it as its default superblock. So, we have to ensure that all the
  statistcs on usage are correct in this first alternate superblock
  as it is the superblock that will actually be used.
  
  While tracking down this problem, another limitation of UFS1 became
  evident. For UFS1, the number of inodes per cylinder group is stored
  in an int16_t. Thus the maximum number of inodes per cylinder group
  is limited to 2^15 - 1. This limit can easily be exceeded for block
  sizes of 32K and above. Thus when building UFS1 filesystems, newfs
  must limit the number of inodes per cylinder group to 2^15 - 1.
  
  Reported by: Guy Helmer<ghelmer@palisadesys.com>
  Followup by: Bruce Cran <brucec@freebsd.org>
  PR: 107692
  
  Revision  Changes    Path
  1.97.2.3  +23 -7     src/sbin/newfs/mkfs.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011230124.oAN1Ofjx037972>