diff options
author | 2011-04-24 07:07:03 +0000 | |
---|---|---|
committer | 2011-04-24 07:07:03 +0000 | |
commit | ef3a5fb0c50c8cf02ee68651b00538e2829330ce (patch) | |
tree | ece17f270ec931c2e26db8a7705c14263554f1e1 /sbin/fsck_ffs/setup.c | |
parent | sync (diff) | |
download | wireguard-openbsd-ef3a5fb0c50c8cf02ee68651b00538e2829330ce.tar.xz wireguard-openbsd-ef3a5fb0c50c8cf02ee68651b00538e2829330ce.zip |
remove support for (very) old ffs on-disk formats; ok krw@ and no
objection form the usual suspects
Diffstat (limited to 'sbin/fsck_ffs/setup.c')
-rw-r--r-- | sbin/fsck_ffs/setup.c | 131 |
1 files changed, 46 insertions, 85 deletions
diff --git a/sbin/fsck_ffs/setup.c b/sbin/fsck_ffs/setup.c index 1bcd85aa62a..a275e3919b6 100644 --- a/sbin/fsck_ffs/setup.c +++ b/sbin/fsck_ffs/setup.c @@ -1,4 +1,4 @@ -/* $OpenBSD: setup.c,v 1.47 2011/04/16 16:37:21 otto Exp $ */ +/* $OpenBSD: setup.c,v 1.48 2011/04/24 07:07:03 otto Exp $ */ /* $NetBSD: setup.c,v 1.27 1996/09/27 22:45:19 christos Exp $ */ /* @@ -260,96 +260,57 @@ found: dirty(&asblk); } } - if (sblock.fs_inodefmt >= FS_44INODEFMT) { - if (sblock.fs_maxfilesize != maxfilesize) { - pwarn("INCORRECT MAXFILESIZE=%llu IN SUPERBLOCK", - (unsigned long long)sblock.fs_maxfilesize); - sblock.fs_maxfilesize = maxfilesize; - if (preen) - printf(" (FIXED)\n"); - if (preen || reply("FIX") == 1) { - sbdirty(); - dirty(&asblk); - } - } - maxsymlinklen = sblock.fs_magic == FS_UFS1_MAGIC ? - MAXSYMLINKLEN_UFS1 : MAXSYMLINKLEN_UFS2; - if (sblock.fs_maxsymlinklen != maxsymlinklen) { - pwarn("INCORRECT MAXSYMLINKLEN=%d IN SUPERBLOCK", - sblock.fs_maxsymlinklen); - sblock.fs_maxsymlinklen = maxsymlinklen; - if (preen) - printf(" (FIXED)\n"); - if (preen || reply("FIX") == 1) { - sbdirty(); - dirty(&asblk); - } - } - if (sblock.fs_qbmask != ~sblock.fs_bmask) { - pwarn("INCORRECT QBMASK=%lx IN SUPERBLOCK", - (unsigned long)sblock.fs_qbmask); - sblock.fs_qbmask = ~sblock.fs_bmask; - if (preen) - printf(" (FIXED)\n"); - if (preen || reply("FIX") == 1) { - sbdirty(); - dirty(&asblk); - } - } - if (sblock.fs_qfmask != ~sblock.fs_fmask) { - pwarn("INCORRECT QFMASK=%lx IN SUPERBLOCK", - (unsigned long)sblock.fs_qfmask); - sblock.fs_qfmask = ~sblock.fs_fmask; - if (preen) - printf(" (FIXED)\n"); - if (preen || reply("FIX") == 1) { - sbdirty(); - dirty(&asblk); - } + if (sblock.fs_inodefmt < FS_44INODEFMT) { + pwarn("Format of filesystem is too old.\n"); + pwarn("Must update to modern format using a version of fsck\n"); + pfatal("from before release 5.0 with the command ``fsck -c 2''\n"); + exit(8); + } + if (sblock.fs_maxfilesize != maxfilesize) { + pwarn("INCORRECT MAXFILESIZE=%llu IN SUPERBLOCK", + (unsigned long long)sblock.fs_maxfilesize); + sblock.fs_maxfilesize = maxfilesize; + if (preen) + printf(" (FIXED)\n"); + if (preen || reply("FIX") == 1) { + sbdirty(); + dirty(&asblk); } - newinofmt = 1; - } else { - sblock.fs_qbmask = ~sblock.fs_bmask; - sblock.fs_qfmask = ~sblock.fs_fmask; - newinofmt = 0; } - /* - * Convert to new inode format. - */ - if (cvtlevel >= 2 && sblock.fs_inodefmt < FS_44INODEFMT) { + maxsymlinklen = sblock.fs_magic == FS_UFS1_MAGIC ? + MAXSYMLINKLEN_UFS1 : MAXSYMLINKLEN_UFS2; + if (sblock.fs_maxsymlinklen != maxsymlinklen) { + pwarn("INCORRECT MAXSYMLINKLEN=%d IN SUPERBLOCK", + sblock.fs_maxsymlinklen); + sblock.fs_maxsymlinklen = maxsymlinklen; if (preen) - pwarn("CONVERTING TO NEW INODE FORMAT\n"); - else if (!reply("CONVERT TO NEW INODE FORMAT")) - return(0); - doinglevel2++; - sblock.fs_inodefmt = FS_44INODEFMT; - sblock.fs_maxfilesize = maxfilesize; - sblock.fs_maxsymlinklen = MAXSYMLINKLEN_UFS1; + printf(" (FIXED)\n"); + if (preen || reply("FIX") == 1) { + sbdirty(); + dirty(&asblk); + } + } + if (sblock.fs_qbmask != ~sblock.fs_bmask) { + pwarn("INCORRECT QBMASK=%lx IN SUPERBLOCK", + (unsigned long)sblock.fs_qbmask); sblock.fs_qbmask = ~sblock.fs_bmask; - sblock.fs_qfmask = ~sblock.fs_fmask; - sbdirty(); - dirty(&asblk); + if (preen) + printf(" (FIXED)\n"); + if (preen || reply("FIX") == 1) { + sbdirty(); + dirty(&asblk); + } } - /* - * Convert to new cylinder group format. - */ - if (cvtlevel >= 1 && sblock.fs_postblformat == FS_42POSTBLFMT) { + if (sblock.fs_qfmask != ~sblock.fs_fmask) { + pwarn("INCORRECT QFMASK=%lx IN SUPERBLOCK", + (unsigned long)sblock.fs_qfmask); + sblock.fs_qfmask = ~sblock.fs_fmask; if (preen) - pwarn("CONVERTING TO NEW CYLINDER GROUP FORMAT\n"); - else if (!reply("CONVERT TO NEW CYLINDER GROUP FORMAT")) - return(0); - doinglevel1++; - sblock.fs_postblformat = FS_DYNAMICPOSTBLFMT; - sblock.fs_nrpos = 8; - sblock.fs_postbloff = - (char *)(&sblock.fs_maxbsize) - - (char *)(&sblock.fs_firstfield); - sblock.fs_rotbloff = &sblock.fs_space[0] - - (u_char *)(&sblock.fs_firstfield); - sblock.fs_cgsize = - fragroundup(&sblock, CGSIZE(&sblock)); - sbdirty(); - dirty(&asblk); + printf(" (FIXED)\n"); + if (preen || reply("FIX") == 1) { + sbdirty(); + dirty(&asblk); + } } if (sblock.fs_cgsize != fragroundup(&sblock, CGSIZE(&sblock))) { pwarn("INCONSISTENT CGSIZE=%d\n", sblock.fs_cgsize); |