SCCS-vsn: sbin/fsck/main.c 1.24
SCCS-vsn: sbin/icheck/icheck.c 1.18
-static char *sccsid = "@(#)main.c 1.23 (Berkeley) %G%";
+static char *sccsid = "@(#)main.c 1.24 (Berkeley) %G%";
#include <stdio.h>
#include <ctype.h>
#include <stdio.h>
#include <ctype.h>
dp = ginode();
if (dp == NULL)
continue;
dp = ginode();
if (dp == NULL)
continue;
if (ALLOC) {
if (!isset(cgrp.cg_iused, i)) {
if (debug)
printf("%d bad, not used\n",
inum);
inosumbad++;
if (ALLOC) {
if (!isset(cgrp.cg_iused, i)) {
if (debug)
printf("%d bad, not used\n",
inum);
inosumbad++;
lastino = inum;
if (ftypeok(dp) == 0) {
pfatal("UNKNOWN FILE TYPE I=%u", inum);
lastino = inum;
if (ftypeok(dp) == 0) {
pfatal("UNKNOWN FILE TYPE I=%u", inum);
badblk = dupblk = 0; filsize = 0; maxblk = 0;
ckinode(dp, ADDR);
} else {
badblk = dupblk = 0; filsize = 0; maxblk = 0;
ckinode(dp, ADDR);
} else {
if (isset(cgrp.cg_iused, i)) {
if (debug)
printf("%d bad, marked used\n",
if (isset(cgrp.cg_iused, i)) {
if (debug)
printf("%d bad, marked used\n",
}
if (n != cgrp.cg_cs.cs_nifree) {
if (debug)
}
if (n != cgrp.cg_cs.cs_nifree) {
if (debug)
- printf("cg[%d].cg_cs.cs_nifree is %d not %d\n",
+ printf("cg[%d].cg_cs.cs_nifree is %d; calc %d\n",
c, cgrp.cg_cs.cs_nifree, n);
inosumbad++;
}
c, cgrp.cg_cs.cs_nifree, n);
inosumbad++;
}
if (preen)
printf(" (FIXED)\n");
if (preen || reply("FIX") == 1) {
if (preen)
printf(" (FIXED)\n");
if (preen || reply("FIX") == 1) {
- sblock.fs_cstotal.cs_nifree = imax - n_files;
+ sblock.fs_cstotal.cs_nifree = imax - ROOTINO - n_files;
int c, blk;
daddr_t dbase, d, dmin, dmax;
long i, j, s;
int c, blk;
daddr_t dbase, d, dmin, dmax;
long i, j, s;
register struct csum *cs;
register DINODE *dp;
register struct csum *cs;
register DINODE *dp;
dbase = cgbase(&sblock, c);
dmax = dbase + sblock.fs_fpg;
if (dmax > sblock.fs_size) {
dbase = cgbase(&sblock, c);
dmax = dbase + sblock.fs_fpg;
if (dmax > sblock.fs_size) {
- for ( ; dmax >= sblock.fs_size ; dmax--)
+ for ( ; dmax >= sblock.fs_size; dmax--)
clrbit(cgrp.cg_free, dmax - dbase);
dmax++;
}
clrbit(cgrp.cg_free, dmax - dbase);
dmax++;
}
cgrp.cg_frsum[i] = 0;
inum = sblock.fs_ipg * c;
for (i = 0; i < sblock.fs_ipg; inum++, i++) {
cgrp.cg_frsum[i] = 0;
inum = sblock.fs_ipg * c;
for (i = 0; i < sblock.fs_ipg; inum++, i++) {
+ cgrp.cg_cs.cs_nifree++;
+ clrbit(cgrp.cg_iused, i);
dp = ginode();
if (dp == NULL)
continue;
if (ALLOC) {
if (DIRCT)
cgrp.cg_cs.cs_ndir++;
dp = ginode();
if (dp == NULL)
continue;
if (ALLOC) {
if (DIRCT)
cgrp.cg_cs.cs_ndir++;
+ cgrp.cg_cs.cs_nifree--;
setbit(cgrp.cg_iused, i);
continue;
}
setbit(cgrp.cg_iused, i);
continue;
}
- cgrp.cg_cs.cs_nifree++;
- clrbit(cgrp.cg_iused, i);
}
while (i < MAXIPG) {
clrbit(cgrp.cg_iused, i);
i++;
}
}
while (i < MAXIPG) {
clrbit(cgrp.cg_iused, i);
i++;
}
+ if (c == 0)
+ for (i = 0; i < ROOTINO; i++) {
+ setbit(cgrp.cg_iused, i);
+ cgrp.cg_cs.cs_nifree--;
+ }
for (s = 0; s < MAXCPG; s++) {
cgrp.cg_btot[s] = 0;
for (i = 0; i < NRPOS; i++)
cgrp.cg_b[s][i] = 0;
}
if (c == 0) {
for (s = 0; s < MAXCPG; s++) {
cgrp.cg_btot[s] = 0;
for (i = 0; i < NRPOS; i++)
cgrp.cg_b[s][i] = 0;
}
if (c == 0) {
- dmin += howmany(sblock.fs_cssize, sblock.fs_bsize) * sblock.fs_frag;
+ dmin += howmany(sblock.fs_cssize, sblock.fs_bsize) *
+ sblock.fs_frag;
}
for (d = 0; d < dmin; d++)
clrbit(cgrp.cg_free, d);
}
for (d = 0; d < dmin; d++)
clrbit(cgrp.cg_free, d);
fragacct(&sblock, blk, cgrp.cg_frsum, 1);
}
}
fragacct(&sblock, blk, cgrp.cg_frsum, 1);
}
}
for (j = d; d < dmax - dbase; d++) {
if (!getbmap(dbase+d)) {
setbit(cgrp.cg_free, d);
cgrp.cg_cs.cs_nffree++;
for (j = d; d < dmax - dbase; d++) {
if (!getbmap(dbase+d)) {
setbit(cgrp.cg_free, d);
cgrp.cg_cs.cs_nffree++;
} else
clrbit(cgrp.cg_free, d);
}
} else
clrbit(cgrp.cg_free, d);
}
-static char *sccsid = "@(#)icheck.c 1.17 (Berkeley) %G%";
+static char *sccsid = "@(#)icheck.c 1.18 (Berkeley) %G%";
bread(fsbtodb(&sblock, cgimin(&sblock, c)), (char *)itab,
sblock.fs_ipg * sizeof(struct dinode));
for (i = 0; i < sblock.fs_ipg; i++) {
bread(fsbtodb(&sblock, cgimin(&sblock, c)), (char *)itab,
sblock.fs_ipg * sizeof(struct dinode));
for (i = 0; i < sblock.fs_ipg; i++) {
+ cgrp.cg_cs.cs_nifree++;
+ clrbit(cgrp.cg_iused, i);
- if (dp == NULL)
- continue;
if ((dp->di_mode & IFMT) != 0) {
if ((dp->di_mode & IFMT) == IFDIR)
cgrp.cg_cs.cs_ndir++;
if ((dp->di_mode & IFMT) != 0) {
if ((dp->di_mode & IFMT) == IFDIR)
cgrp.cg_cs.cs_ndir++;
+ cgrp.cg_cs.cs_nifree--;
setbit(cgrp.cg_iused, i);
continue;
}
setbit(cgrp.cg_iused, i);
continue;
}
- cgrp.cg_cs.cs_nifree++;
- clrbit(cgrp.cg_iused, i);
}
while (i < MAXIPG) {
clrbit(cgrp.cg_iused, i);
}
while (i < MAXIPG) {
clrbit(cgrp.cg_iused, i);