fsck of large volume with small memory
sam
samflanker at gmail.com
Tue Sep 25 00:50:22 PDT 2007
Don Lewis wrote:
> On 24 Sep, sam wrote:
>
> Expect major file system lossage ...
> I think this patch could be better, but this should get you going ...
>
> Index: sbin/fsck_ffs/pass1.c
> ===================================================================
> RCS file: /home/ncvs/src/sbin/fsck_ffs/pass1.c,v
> retrieving revision 1.43
> diff -u -r1.43 pass1.c
> --- sbin/fsck_ffs/pass1.c 8 Oct 2004 20:44:47 -0000 1.43
> +++ sbin/fsck_ffs/pass1.c 24 Sep 2007 23:15:22 -0000
> @@ -93,9 +93,29 @@
> inumber = c * sblock.fs_ipg;
> setinodebuf(inumber);
> getblk(&cgblk, cgtod(&sblock, c), sblock.fs_cgsize);
> - if (sblock.fs_magic == FS_UFS2_MAGIC)
> + if (sblock.fs_magic == FS_UFS2_MAGIC) {
> inosused = cgrp.cg_initediblk;
> - else
> + if (inosused < 0 || inosused > sblock.fs_ipg) {
> + pfatal("CG %d: PREPOSTEROUS NUMBER OF INODES %d (cg_initediblk), ASSUMING %d (fs_ipg)\n",
> + c, inosused, sblock.fs_ipg);
> + /*
> + * The cylinder group block is most likely
> + * totally corrupted and will probably
> + * fail the magic number check below as well.
> + * Ignoring cg_initediblk and setting
> + * inosused to sblock.fs_ipg will allow
> + * a manual fsck to proceed further instead
> + * of dying when it attempts to allocate
> + * an insane amount of memory to store
> + * the inode info for this cylinder group.
> + * This may provide enough information
> + * to allow the system administrator to
> + * do a better job of patching the
> + * filesystem with fsdb.
> + */
> + inosused = sblock.fs_ipg;
> + }
> + } else
> inosused = sblock.fs_ipg;
> if (got_siginfo) {
> printf("%s: phase 1: cyl group %d of %d (%d%%)\n",
>
>
>
after patching
======================================================
# fsck /dev/aacd0s1f
** /dev/aacd0s1f (NO WRITE)
** Last Mounted on /usr
** Phase 1 - Check Blocks and Sizes
CG 124: PREPOSTEROUS NUMBER OF INODES 1668246575 (cg_initediblk),
ASSUMING 23552 (fs_ipg)
UNEXPECTED SOFT UPDATE INCONSISTENCY
** Phase 2 - Check Pathnames
UNALLOCATED I=2732216 OWNER=svn MODE=40755
SIZE=512 MTIME=Sep 4 12:22 2007
DIR=/home/svn
UNEXPECTED SOFT UPDATE INCONSISTENCY
REMOVE? no
UNALLOCATED I=2732189 OWNER=venom MODE=40755
SIZE=512 MTIME=Sep 3 17:16 2007
DIR=/home/venom/svn
UNEXPECTED SOFT UPDATE INCONSISTENCY
REMOVE? no
UNALLOCATED I=2732248 OWNER=root MODE=40755
SIZE=512 MTIME=Sep 14 19:03 2007
DIR=/home/venom/temp/devel/trunk
*** DELETE OUTPUT ***
** Phase 3 - Check Connectivity
UNREF DIR I=2755667 OWNER=games MODE=40750
SIZE=1536 MTIME=Jul 19 16:45 2007
RECONNECT? no
UNREF DIR I=2755600 OWNER=games MODE=40750
SIZE=1024 MTIME=Jul 19 16:45 2007
RECONNECT? no
UNREF DIR I=2755628 OWNER=games MODE=40750
SIZE=1536 MTIME=Jul 19 16:45 2007
RECONNECT? no
UNREF DIR I=2755584 OWNER=games MODE=40750
SIZE=512 MTIME=Jul 19 16:45 2007
RECONNECT? no
** Phase 4 - Check Reference Counts
UNREF FILE I=541705 OWNER=root MODE=100555
SIZE=218296 MTIME=Sep 10 14:51 2007
CLEAR? no
UNREF FILE I=541950 OWNER=root MODE=100555
SIZE=37832 MTIME=Sep 10 14:52 2007
CLEAR? no
*** DELETE OUTPUT ***
UNREF FILE I=4875961 OWNER=root MODE=100444
SIZE=35552 MTIME=Sep 10 14:50 2007
CLEAR? no
UNREF FILE I=6312454 OWNER=root MODE=104555
SIZE=15880 MTIME=Sep 10 14:52 2007
CLEAR? no
** Phase 5 - Check Cyl groups
CG 116: BAD MAGIC NUMBER
UNEXPECTED SOFT UPDATE INCONSISTENCY
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? no
SUMMARY INFORMATION BAD
SALVAGE? no
BLK(S) MISSING IN BIT MAPS
SALVAGE? no
CG 124: BAD MAGIC NUMBER
UNEXPECTED SOFT UPDATE INCONSISTENCY
LOST 74 DIRECTORIES
UNEXPECTED SOFT UPDATE INCONSISTENCY
fsck: /dev/aacd0s1f: Segmentation fault: 11
#
======================================================
/Vladimir Ermakov
More information about the freebsd-hackers
mailing list