diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1997-10-06 20:23:17 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1997-10-06 20:23:17 +0000 |
commit | 85674180ac0b414993bec634994ea51b28390306 (patch) | |
tree | 5ce384dfed739e368b8605fc6db4ed1f26a43609 /sbin/fsck_ffs | |
parent | 44f83f3e77b70fbce9f014e39cf5c97bae700213 (diff) |
back out vfs lite2 till after 2.2
Diffstat (limited to 'sbin/fsck_ffs')
-rw-r--r-- | sbin/fsck_ffs/dir.c | 13 | ||||
-rw-r--r-- | sbin/fsck_ffs/fsck.h | 4 | ||||
-rw-r--r-- | sbin/fsck_ffs/inode.c | 16 | ||||
-rw-r--r-- | sbin/fsck_ffs/main.c | 26 | ||||
-rw-r--r-- | sbin/fsck_ffs/pass1.c | 20 | ||||
-rw-r--r-- | sbin/fsck_ffs/pass2.c | 35 | ||||
-rw-r--r-- | sbin/fsck_ffs/pass5.c | 67 | ||||
-rw-r--r-- | sbin/fsck_ffs/setup.c | 12 | ||||
-rw-r--r-- | sbin/fsck_ffs/utilities.c | 30 |
9 files changed, 59 insertions, 164 deletions
diff --git a/sbin/fsck_ffs/dir.c b/sbin/fsck_ffs/dir.c index ce7f126381d..c1a06d0173b 100644 --- a/sbin/fsck_ffs/dir.c +++ b/sbin/fsck_ffs/dir.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dir.c,v 1.6 1997/10/06 15:33:32 csapuntz Exp $ */ +/* $OpenBSD: dir.c,v 1.7 1997/10/06 20:22:31 deraadt Exp $ */ /* $NetBSD: dir.c,v 1.20 1996/09/27 22:45:11 christos Exp $ */ /* @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)dir.c 8.5 (Berkeley) 12/8/94"; #else -static char rcsid[] = "$OpenBSD: dir.c,v 1.6 1997/10/06 15:33:32 csapuntz Exp $"; +static char rcsid[] = "$OpenBSD: dir.c,v 1.7 1997/10/06 20:22:31 deraadt Exp $"; #endif #endif /* not lint */ @@ -333,13 +333,12 @@ adjust(idesc, lcnt) pinode(idesc->id_number); printf(" COUNT %d SHOULD BE %d", dp->di_nlink, dp->di_nlink - lcnt); - if (preen || usedsoftdep) { + if (preen) { if (lcnt < 0) { printf("\n"); pfatal("LINK COUNT INCREASING"); } - if (preen) - printf(" (ADJUSTED)\n"); + printf(" (ADJUSTED)\n"); } if (preen || reply("ADJUST") == 1) { dp->di_nlink -= lcnt; @@ -425,15 +424,13 @@ linkup(orphan, parentdir) lostdir = (dp->di_mode & IFMT) == IFDIR; pwarn("UNREF %s ", lostdir ? "DIR" : "FILE"); pinode(orphan); - if ((preen || usedsoftdep) && dp->di_size == 0) + if (preen && dp->di_size == 0) return (0); if (preen) printf(" (RECONNECTED)\n"); else if (reply("RECONNECT") == 0) return (0); - if (parentdir != 0) - lncntp[parentdir]++; if (lfdir == 0) { dp = ginode(ROOTINO); idesc.id_name = lfname; diff --git a/sbin/fsck_ffs/fsck.h b/sbin/fsck_ffs/fsck.h index 3cc21c10b53..52a0f91a39d 100644 --- a/sbin/fsck_ffs/fsck.h +++ b/sbin/fsck_ffs/fsck.h @@ -1,4 +1,4 @@ -/* $OpenBSD: fsck.h,v 1.5 1997/10/06 15:33:33 csapuntz Exp $ */ +/* $OpenBSD: fsck.h,v 1.6 1997/10/06 20:22:32 deraadt Exp $ */ /* $NetBSD: fsck.h,v 1.13 1996/10/11 20:15:46 thorpej Exp $ */ /* @@ -176,9 +176,7 @@ int cvtlevel; /* convert to newer file system format */ int doinglevel1; /* converting to new cylinder group format */ int doinglevel2; /* converting to new inode format */ int newinofmt; /* filesystem has new inode format */ -char usedsoftdep; /* just fix soft dependency inconsistencies */ int preen; /* just fix normal inconsistencies */ -char resolved; /* cleared if unresolved changes => not clean */ char havesb; /* superblock has been read */ char skipclean; /* skip clean file systems if preening */ int fsmodified; /* 1 => write done to file system */ diff --git a/sbin/fsck_ffs/inode.c b/sbin/fsck_ffs/inode.c index 1be39fa7e90..9324b60dab9 100644 --- a/sbin/fsck_ffs/inode.c +++ b/sbin/fsck_ffs/inode.c @@ -1,4 +1,4 @@ -/* $OpenBSD: inode.c,v 1.11 1997/10/06 15:33:33 csapuntz Exp $ */ +/* $OpenBSD: inode.c,v 1.12 1997/10/06 20:22:32 deraadt Exp $ */ /* $NetBSD: inode.c,v 1.23 1996/10/11 20:15:47 thorpej Exp $ */ /* @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)inode.c 8.5 (Berkeley) 2/8/95"; #else -static char rcsid[] = "$OpenBSD: inode.c,v 1.11 1997/10/06 15:33:33 csapuntz Exp $"; +static char rcsid[] = "$OpenBSD: inode.c,v 1.12 1997/10/06 20:22:32 deraadt Exp $"; #endif #endif /* not lint */ @@ -573,8 +573,6 @@ allocino(request, type) { register ino_t ino; register struct dinode *dp; - struct cg *cgp = &cgrp; - int cg; time_t t; if (request == 0) @@ -586,17 +584,9 @@ allocino(request, type) break; if (ino == maxino) return (0); - cg = ino_to_cg(&sblock, ino); - getblk(&cgblk, cgtod(&sblock, cg), sblock.fs_cgsize); - if (!cg_chkmagic(cgp)) - pfatal("CG %d: BAD MAGIC NUMBER\n", cg); - setbit(cg_inosused(cgp), ino % sblock.fs_ipg); - cgp->cg_cs.cs_nifree--; - switch (type & IFMT) { case IFDIR: statemap[ino] = DSTATE; - cgp->cg_cs.cs_ndir++; break; case IFREG: case IFLNK: @@ -605,7 +595,6 @@ allocino(request, type) default: return (0); } - cgdirty(); dp = ginode(ino); dp->di_db[0] = allocblk((long)1); if (dp->di_db[0] == 0) { @@ -613,7 +602,6 @@ allocino(request, type) return (0); } dp->di_mode = type; - dp->di_flags = 0; (void)time(&t); dp->di_atime = t; dp->di_mtime = dp->di_ctime = dp->di_atime; diff --git a/sbin/fsck_ffs/main.c b/sbin/fsck_ffs/main.c index 159a2252814..6a72300475a 100644 --- a/sbin/fsck_ffs/main.c +++ b/sbin/fsck_ffs/main.c @@ -1,4 +1,4 @@ -/* $OpenBSD: main.c,v 1.11 1997/10/06 15:33:33 csapuntz Exp $ */ +/* $OpenBSD: main.c,v 1.12 1997/10/06 20:22:33 deraadt Exp $ */ /* $NetBSD: main.c,v 1.22 1996/10/11 20:15:48 thorpej Exp $ */ /* @@ -44,7 +44,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)main.c 8.2 (Berkeley) 1/23/94"; #else -static char rcsid[] = "$OpenBSD: main.c,v 1.11 1997/10/06 15:33:33 csapuntz Exp $"; +static char rcsid[] = "$OpenBSD: main.c,v 1.12 1997/10/06 20:22:33 deraadt Exp $"; #endif #endif /* not lint */ @@ -206,13 +206,6 @@ checkfilesys(filesys, mntpt, auxdata, child) case -1: return (0); } - - /* - * Cleared if any questions answered no. Used to decide if - * the superblock should be marked clean. - */ - resolved = 1; - /* * 1: scan inodes tallying blocks used */ @@ -228,7 +221,7 @@ checkfilesys(filesys, mntpt, auxdata, child) * 1b: locate first references to duplicates, if any */ if (duplist) { - if (preen || usedsoftdep) + if (preen) pfatal("INTERNAL ERROR: dups with -p"); printf("** Phase 1b - Rescan For More DUPS\n"); pass1b(); @@ -311,19 +304,16 @@ checkfilesys(filesys, mntpt, auxdata, child) bwrite(fswritefd, (char *)&sblock, fsbtodb(&sblock, cgsblock(&sblock, cylno)), SBSIZE); } + ckfini(1); + free(blockmap); + free(statemap); + free((char *)lncntp); if (!fsmodified) return (0); if (!preen) printf("\n***** FILE SYSTEM WAS MODIFIED *****\n"); - if (rerun) { - resolved = 0; + if (rerun) printf("\n***** PLEASE RERUN FSCK *****\n"); - } - ckfini(resolved); - free(blockmap); - free(statemap); - free((char *)lncntp); - if (hotroot()) { struct statfs stfs_buf; /* diff --git a/sbin/fsck_ffs/pass1.c b/sbin/fsck_ffs/pass1.c index 11d22ef979c..181006e8b82 100644 --- a/sbin/fsck_ffs/pass1.c +++ b/sbin/fsck_ffs/pass1.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pass1.c,v 1.5 1997/10/06 15:33:34 csapuntz Exp $ */ +/* $OpenBSD: pass1.c,v 1.6 1997/10/06 20:22:34 deraadt Exp $ */ /* $NetBSD: pass1.c,v 1.16 1996/09/27 22:45:15 christos Exp $ */ /* @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)pass1.c 8.1 (Berkeley) 6/5/93"; #else -static char rcsid[] = "$OpenBSD: pass1.c,v 1.5 1997/10/06 15:33:34 csapuntz Exp $"; +static char rcsid[] = "$OpenBSD: pass1.c,v 1.6 1997/10/06 20:22:34 deraadt Exp $"; #endif #endif /* not lint */ @@ -215,10 +215,8 @@ checkinode(inumber, idesc) zlnp = (struct zlncnt *)malloc(sizeof *zlnp); if (zlnp == NULL) { pfatal("LINK COUNT TABLE OVERFLOW"); - if (reply("CONTINUE") == 0) { - ckfini(0); + if (reply("CONTINUE") == 0) errexit("%s", ""); - } } else { zlnp->zlncnt = inumber; zlnp->next = zlnhead; @@ -287,10 +285,8 @@ pass1check(idesc) idesc->id_number); if (preen) printf(" (SKIPPING)\n"); - else if (reply("CONTINUE") == 0) { - ckfini(0); + else if (reply("CONTINUE") == 0) errexit("%s", ""); - } return (STOP); } } @@ -307,19 +303,15 @@ pass1check(idesc) idesc->id_number); if (preen) printf(" (SKIPPING)\n"); - else if (reply("CONTINUE") == 0) { - ckfini(0); + else if (reply("CONTINUE") == 0) errexit("%s", ""); - } return (STOP); } new = (struct dups *)malloc(sizeof(struct dups)); if (new == NULL) { pfatal("DUP TABLE OVERFLOW."); - if (reply("CONTINUE") == 0) { - ckfini(0); + if (reply("CONTINUE") == 0) errexit("%s", ""); - } return (STOP); } new->dup = blkno; diff --git a/sbin/fsck_ffs/pass2.c b/sbin/fsck_ffs/pass2.c index 142fe1bdbd0..c687a30c4b0 100644 --- a/sbin/fsck_ffs/pass2.c +++ b/sbin/fsck_ffs/pass2.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pass2.c,v 1.5 1997/10/06 15:33:34 csapuntz Exp $ */ +/* $OpenBSD: pass2.c,v 1.6 1997/10/06 20:22:35 deraadt Exp $ */ /* $NetBSD: pass2.c,v 1.17 1996/09/27 22:45:15 christos Exp $ */ /* @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)pass2.c 8.6 (Berkeley) 10/27/94"; #else -static char rcsid[] = "$OpenBSD: pass2.c,v 1.5 1997/10/06 15:33:34 csapuntz Exp $"; +static char rcsid[] = "$OpenBSD: pass2.c,v 1.6 1997/10/06 20:22:35 deraadt Exp $"; #endif #endif /* not lint */ @@ -75,10 +75,8 @@ pass2() case USTATE: pfatal("ROOT INODE UNALLOCATED"); - if (reply("ALLOCATE") == 0) { - ckfini(0); + if (reply("ALLOCATE") == 0) errexit("%s", ""); - } if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO) errexit("CANNOT ALLOCATE ROOT INODE\n"); break; @@ -91,10 +89,8 @@ pass2() errexit("CANNOT ALLOCATE ROOT INODE\n"); break; } - if (reply("CONTINUE") == 0) { - ckfini(0); + if (reply("CONTINUE") == 0) errexit("%s", ""); - } break; case FSTATE: @@ -106,10 +102,8 @@ pass2() errexit("CANNOT ALLOCATE ROOT INODE\n"); break; } - if (reply("FIX") == 0) { - ckfini(0); + if (reply("FIX") == 0) errexit("%s", ""); - } dp = ginode(ROOTINO); dp->di_mode &= ~IFMT; dp->di_mode |= IFDIR; @@ -151,14 +145,8 @@ pass2() } } else if ((inp->i_isize & (DIRBLKSIZ - 1)) != 0) { getpathname(pathbuf, inp->i_number, inp->i_number); - if (usedsoftdep) - pfatal("%s %s: LENGTH %d NOT MULTIPLE of %d", - "DIRECTORY", pathbuf, inp->i_isize, - DIRBLKSIZ); - else - pwarn("%s %s: LENGTH %d NOT MULTIPLE OF %d", - "DIRECTORY", pathbuf, inp->i_isize, - DIRBLKSIZ); + pwarn("DIRECTORY %s: LENGTH %d NOT MULTIPLE OF %d", + pathbuf, inp->i_isize, DIRBLKSIZ); if (preen) printf(" (ADJUSTED)\n"); inp->i_isize = roundup(inp->i_isize, DIRBLKSIZ); @@ -408,7 +396,7 @@ again: break; if (statemap[dirp->d_ino] == FCLEAR) errmsg = "DUP/BAD"; - else if (!preen && !usedsoftdep) + else if (!preen) errmsg = "ZERO LENGTH DIRECTORY"; else { n = 1; @@ -433,11 +421,8 @@ again: pwarn("%s %s %s\n", pathbuf, "IS AN EXTRANEOUS HARD LINK TO DIRECTORY", namebuf); - if (preen) { - printf (" (REMOVED)\n"); - n = 1; - break; - } + if (preen) + printf(" (IGNORED)\n"); else if ((n = reply("REMOVE")) == 1) break; } diff --git a/sbin/fsck_ffs/pass5.c b/sbin/fsck_ffs/pass5.c index 0abd3082cb3..5d17b4806e9 100644 --- a/sbin/fsck_ffs/pass5.c +++ b/sbin/fsck_ffs/pass5.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pass5.c,v 1.4 1997/10/06 15:33:35 csapuntz Exp $ */ +/* $OpenBSD: pass5.c,v 1.5 1997/10/06 20:22:35 deraadt Exp $ */ /* $NetBSD: pass5.c,v 1.16 1996/09/27 22:45:18 christos Exp $ */ /* @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)pass5.c 8.6 (Berkeley) 11/30/94"; #else -static char rcsid[] = "$OpenBSD: pass5.c,v 1.4 1997/10/06 15:33:35 csapuntz Exp $"; +static char rcsid[] = "$OpenBSD: pass5.c,v 1.5 1997/10/06 20:22:35 deraadt Exp $"; #endif #endif /* not lint */ @@ -46,6 +46,7 @@ static char rcsid[] = "$OpenBSD: pass5.c,v 1.4 1997/10/06 15:33:35 csapuntz Exp #include <sys/time.h> #include <ufs/ufs/dinode.h> #include <ufs/ffs/fs.h> +#include <ufs/ffs/ffs_extern.h> #include <string.h> #include "fsutil.h" @@ -56,12 +57,11 @@ void pass5() { int c, blk, frags, basesize, sumsize, mapsize, savednrpos; - int inomapsize, blkmapsize; register struct fs *fs = &sblock; register struct cg *cg = &cgrp; daddr_t dbase, dmax; - daddr_t d; - long i, j, k; + register daddr_t d; + register long i, j; struct csum *cs; struct csum cstotal; struct inodesc idesc[3]; @@ -119,8 +119,6 @@ pass5() sumsize = &ocg->cg_iused[0] - (u_int8_t *)(&ocg->cg_btot[0]); mapsize = &ocg->cg_free[howmany(fs->fs_fpg, NBBY)] - (u_char *)&ocg->cg_iused[0]; - blkmapsize = howmany(fs->fs_fpg, NBBY); - inomapsize = &ocg->cg_free[0] - (u_char *)&ocg->cg_iused[0]; ocg->cg_magic = CG_MAGIC; savednrpos = fs->fs_nrpos; fs->fs_nrpos = 8; @@ -135,12 +133,12 @@ pass5() fs->fs_cpg * fs->fs_nrpos * sizeof(int16_t); newcg->cg_freeoff = newcg->cg_iusedoff + howmany(fs->fs_ipg, NBBY); - inomapsize = newcg->cg_freeoff - newcg->cg_iusedoff; - newcg->cg_nextfreeoff = newcg->cg_freeoff + - howmany(fs->fs_cpg * fs->fs_spc / NSPF(fs), NBBY); - blkmapsize = newcg->cg_nextfreeoff - newcg->cg_freeoff; - if (fs->fs_contigsumsize > 0) { - newcg->cg_clustersumoff = newcg->cg_nextfreeoff - + if (fs->fs_contigsumsize <= 0) { + newcg->cg_nextfreeoff = newcg->cg_freeoff + + howmany(fs->fs_cpg * fs->fs_spc / NSPF(fs), NBBY); + } else { + newcg->cg_clustersumoff = newcg->cg_freeoff + + howmany(fs->fs_cpg * fs->fs_spc / NSPF(fs), NBBY) - sizeof(int32_t); newcg->cg_clustersumoff = roundup(newcg->cg_clustersumoff, sizeof(int32_t)); @@ -157,7 +155,6 @@ pass5() break; default: - inomapsize = blkmapsize = sumsize = 0; errexit("UNKNOWN ROTATIONAL TABLE FORMAT %d\n", fs->fs_postblformat); } @@ -308,6 +305,13 @@ pass5() cgdirty(); continue; } + if (memcmp(cg_inosused(newcg), + cg_inosused(cg), mapsize) != 0 && + dofix(&idesc[1], "BLK(S) MISSING IN BIT MAPS")) { + memcpy(cg_inosused(cg), cg_inosused(newcg), + (size_t)mapsize); + cgdirty(); + } if ((memcmp(newcg, cg, basesize) != 0 || memcmp(&cg_blktot(newcg)[0], &cg_blktot(cg)[0], sumsize) != 0) && @@ -317,41 +321,6 @@ pass5() &cg_blktot(newcg)[0], (size_t)sumsize); cgdirty(); } - if (usedsoftdep) { - for (i = 0; i < inomapsize; i++) { - j = cg_inosused(newcg)[i]; - if ((cg_inosused(cg)[i] & j) == j) - continue; - for (k = 0; k < NBBY; k++) { - if ((j & (1 << k)) == 0) - continue; - if (cg_inosused(cg)[i] & (1 << k)) - continue; - pwarn("ALLOCATED INODE %d MARKED FREE", - c * fs->fs_ipg + i * 8 + k); - } - } - for (i = 0; i < blkmapsize; i++) { - j = cg_blksfree(cg)[i]; - if ((cg_blksfree(newcg)[i] & j) == j) - continue; - for (k = 0; k < NBBY; k++) { - if ((j & (1 << k)) == 0) - continue; - if (cg_inosused(cg)[i] & (1 << k)) - continue; - pwarn("ALLOCATED FRAG %d MARKED FREE", - c * fs->fs_fpg + i * 8 + k); - } - } - } - if (memcmp(cg_inosused(newcg), cg_inosused(cg), - mapsize) != 0 && - dofix(&idesc[1], "BLK(S) MISSING IN BIT MAPS")) { - memmove(cg_inosused(cg), cg_inosused(newcg), - (size_t)mapsize); - cgdirty(); - } } if (fs->fs_postblformat == FS_42POSTBLFMT) fs->fs_nrpos = savednrpos; diff --git a/sbin/fsck_ffs/setup.c b/sbin/fsck_ffs/setup.c index 436fe96eeb9..94fa383508d 100644 --- a/sbin/fsck_ffs/setup.c +++ b/sbin/fsck_ffs/setup.c @@ -1,4 +1,4 @@ -/* $OpenBSD: setup.c,v 1.5 1997/10/06 15:33:35 csapuntz Exp $ */ +/* $OpenBSD: setup.c,v 1.6 1997/10/06 20:22:36 deraadt Exp $ */ /* $NetBSD: setup.c,v 1.27 1996/09/27 22:45:19 christos Exp $ */ /* @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)setup.c 8.5 (Berkeley) 11/23/94"; #else -static char rcsid[] = "$OpenBSD: setup.c,v 1.5 1997/10/06 15:33:35 csapuntz Exp $"; +static char rcsid[] = "$OpenBSD: setup.c,v 1.6 1997/10/06 20:22:36 deraadt Exp $"; #endif #endif /* not lint */ @@ -336,10 +336,8 @@ setup(dev) fsbtodb(&sblock, sblock.fs_csaddr + j * sblock.fs_frag), size) != 0 && !asked) { pfatal("BAD SUMMARY INFORMATION"); - if (reply("CONTINUE") == 0) { - ckfini(0); + if (reply("CONTINUE") == 0) errexit("%s", ""); - } asked++; } } @@ -384,10 +382,6 @@ setup(dev) goto badsblabel; } bufinit(); - if (sblock.fs_flags & FS_DOSOFTDEP) - usedsoftdep = 1; - else - usedsoftdep = 0; return (1); badsblabel: diff --git a/sbin/fsck_ffs/utilities.c b/sbin/fsck_ffs/utilities.c index 3b6dfe2d017..643ac2a1c65 100644 --- a/sbin/fsck_ffs/utilities.c +++ b/sbin/fsck_ffs/utilities.c @@ -1,4 +1,4 @@ -/* $OpenBSD: utilities.c,v 1.5 1997/10/06 15:33:36 csapuntz Exp $ */ +/* $OpenBSD: utilities.c,v 1.6 1997/10/06 20:22:37 deraadt Exp $ */ /* $NetBSD: utilities.c,v 1.18 1996/09/27 22:45:20 christos Exp $ */ /* @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)utilities.c 8.1 (Berkeley) 6/5/93"; #else -static char rcsid[] = "$OpenBSD: utilities.c,v 1.5 1997/10/06 15:33:36 csapuntz Exp $"; +static char rcsid[] = "$OpenBSD: utilities.c,v 1.6 1997/10/06 20:22:37 deraadt Exp $"; #endif #endif /* not lint */ @@ -96,7 +96,6 @@ reply(question) printf("\n"); if (!persevere && (nflag || fswritefd < 0)) { printf("%s? no\n\n", question); - resolved = 0; return (0); } if (yflag || (persevere && nflag)) { @@ -107,17 +106,13 @@ reply(question) printf("%s? [yn] ", question); (void) fflush(stdout); c = getc(stdin); - while (c != '\n' && getc(stdin) != '\n') { - if (feof(stdin)) { - resolved = 0; + while (c != '\n' && getc(stdin) != '\n') + if (feof(stdin)) return (0); - } - } } while (c != 'y' && c != 'Y' && c != 'n' && c != 'N'); printf("\n"); if (c == 'y' || c == 'Y') return (1); - resolved = 0; return (0); } @@ -379,8 +374,7 @@ int allocblk(frags) long frags; { - int i, j, k, cg, baseblk; - struct cg *cgp = &cgrp; + register int i, j, k; if (frags <= 0 || frags > sblock.fs_frag) return (0); @@ -395,21 +389,9 @@ allocblk(frags) j += k; continue; } - cg = dtog(&sblock, i + j); - getblk(&cgblk, cgtod(&sblock, cg), sblock.fs_cgsize); - if (!cg_chkmagic(cgp)) - pfatal("CG %d: BAD MAGIC NUMBER\n", cg); - baseblk = dtogd(&sblock, i + j); - - for (k = 0; k < frags; k++) { + for (k = 0; k < frags; k++) setbmap(i + j + k); - clrbit(cg_blksfree(cgp), baseblk + k); - } n_blks += frags; - if (frags == sblock.fs_frag) - cgp->cg_cs.cs_nbfree--; - else - cgp->cg_cs.cs_nffree -= frags; return (i + j); } } |