Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Oct 2004 02:53:47 +0000 (UTC)
From:      Scott Long <scottl@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sbin/growfs growfs.c
Message-ID:  <200410090253.i992rl3M051822@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
scottl      2004-10-09 02:53:47 UTC

  FreeBSD src repository

  Modified files:
    sbin/growfs          growfs.c 
  Log:
  3 important fixes for growfs:
  
  1) ginode() is passed a cylinder group number and inode number.  The inode
  number is relative to the cg.  Use this relative number rather than the
  absolute inode number when searching the cg inode bitmap to see if the inode
  is allocated.  Using the absolute number quickly runs the check off the end
  of the array and causes invalid inodes to be referenced.
  
  2) ginode() checks the absolute indoe number to make sure that it is greater
  than ROOTINO.  However, the caller loops through all of the possible inode
  numbers and directly passes in values that are < ROOTINO.  Instead of halting
  the program with an error, just return NULL.
  
  3) When allocating new cylinder groups, growfs was initializing all of the
  inodes in the group regardless of this only being required for UFS1.  Not
  doing this for UFS2 provides a significant performance increase.
  
  These fixes allow growing a filesystem beyond a trivial amount and have
  been tested to grow an 8GB filesystem to 1.9TB.  Much more testing would
  be appreciated.
  
  Obtained from: Sandvine, Inc.
  
  Revision  Changes    Path
  1.23      +42 -22    src/sbin/growfs/growfs.c



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