SCCS-vsn: sys/ufs/ffs/fs.h 1.13
SCCS-vsn: sys/ufs/ffs/ffs_alloc.c 1.15
SCCS-vsn: sys/ufs/lfs/lfs_alloc.c 1.15
SCCS-vsn: sbin/clri/clri.c 1.3
SCCS-vsn: old/dcheck/dcheck.c 1.6
SCCS-vsn: sbin/dumpfs/dumpfs.c 1.10
SCCS-vsn: sbin/fsck/main.c 1.19
SCCS-vsn: sbin/icheck/icheck.c 1.15
SCCS-vsn: sbin/newfs/mkfs.c 1.15
SCCS-vsn: sbin/ncheck/ncheck.c 1.6
SCCS-vsn: sbin/restore/main.c 1.11
SCCS-vsn: sbin/dump/traverse.c 1.5
12 files changed:
-static char *sccsid = "@(#)dcheck.c 1.5 (Berkeley) %G%";
+static char *sccsid = "@(#)dcheck.c 1.6 (Berkeley) %G%";
/*
* dcheck - check directory consistency
*/
/*
* dcheck - check directory consistency
*/
ecount[i] = 0;
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
ecount[i] = 0;
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
- bread(fsbtodb(&sblock, cgimin(c, &sblock)), (char *)itab,
+ bread(fsbtodb(&sblock, cgimin(&sblock, c)), (char *)itab,
sblock.fs_ipg * sizeof (struct dinode));
for (j = 0; j < sblock.fs_ipg; j++) {
pass1(&itab[j]);
sblock.fs_ipg * sizeof (struct dinode));
for (j = 0; j < sblock.fs_ipg; j++) {
pass1(&itab[j]);
}
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
}
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
- bread(fsbtodb(&sblock, cgimin(c, &sblock)), (char *)itab,
+ bread(fsbtodb(&sblock, cgimin(&sblock, c)), (char *)itab,
sblock.fs_ipg * sizeof (struct dinode));
for (j = 0; j < sblock.fs_ipg; j++) {
pass2(&itab[j]);
sblock.fs_ipg * sizeof (struct dinode));
for (j = 0; j < sblock.fs_ipg; j++) {
pass2(&itab[j]);
/* Copyright (c) 1981 Regents of the University of California */
/* Copyright (c) 1981 Regents of the University of California */
-static char sccsid[] = "@(#)clri.c 1.2 %G%";
+static char sccsid[] = "@(#)clri.c 1.3 %G%";
/* static char *sccsid = "@(#)clri.c 4.1 (Berkeley) 10/1/80"; */
/*
/* static char *sccsid = "@(#)clri.c 4.1 (Berkeley) 10/1/80"; */
/*
- off = fsbtodb(&sblock, itod(n, &sblock)) * DEV_BSIZE;
+ off = fsbtodb(&sblock, itod(&sblock, n)) * DEV_BSIZE;
lseek(f, off, 0);
if (read(f, (char *)buf, sblock.fs_bsize) != sblock.fs_bsize) {
printf("%s: read error\n", argv[i]);
lseek(f, off, 0);
if (read(f, (char *)buf, sblock.fs_bsize) != sblock.fs_bsize) {
printf("%s: read error\n", argv[i]);
for (i = 2; i < argc; i++) {
n = atoi(argv[i]);
printf("clearing %u\n", n);
for (i = 2; i < argc; i++) {
n = atoi(argv[i]);
printf("clearing %u\n", n);
- off = fsbtodb(&sblock, itod(n, &sblock)) * DEV_BSIZE;
+ off = fsbtodb(&sblock, itod(&sblock, n)) * DEV_BSIZE;
lseek(f, off, 0);
read(f, (char *)buf, sblock.fs_bsize);
lseek(f, off, 0);
read(f, (char *)buf, sblock.fs_bsize);
for (k = 0; k < ISIZE; k++)
buf[j].junk[k] = 0;
lseek(f, off, 0);
for (k = 0; k < ISIZE; k++)
buf[j].junk[k] = 0;
lseek(f, off, 0);
-static char *sccsid = "@(#)traverse.c 1.4 (Berkeley) %G%";
+static char *sccsid = "@(#)traverse.c 1.5 (Berkeley) %G%";
if (ino >= minino && ino < maxino) {
return (&itab[ino - minino]);
}
if (ino >= minino && ino < maxino) {
return (&itab[ino - minino]);
}
- bread(fsbtodb(sblock, itod(ino, sblock)), itab, sblock->fs_bsize);
+ bread(fsbtodb(sblock, itod(sblock, ino)), itab, sblock->fs_bsize);
minino = ino - (ino % INOPB(sblock));
maxino = minino + INOPB(sblock);
return (&itab[ino - minino]);
minino = ino - (ino % INOPB(sblock));
maxino = minino + INOPB(sblock);
return (&itab[ino - minino]);
-static char *sccsid = "@(#)dumpfs.c 1.9 (Berkeley) %G%";
+static char *sccsid = "@(#)dumpfs.c 1.10 (Berkeley) %G%";
#include "../h/param.h"
#include "../h/fs.h"
#include "../h/param.h"
#include "../h/fs.h"
int i,j;
printf("\ncg %d:\n", c);
int i,j;
printf("\ncg %d:\n", c);
- lseek(0, fsbtodb(&afs, cgtod(c,&afs)) * DEV_BSIZE, 0);
+ lseek(0, fsbtodb(&afs, cgtod(&afs, c)) * DEV_BSIZE, 0);
printf("tell\t%x\n", tell(0));
if (read(0, (char *)&acg, afs.fs_bsize) != afs.fs_bsize) {
printf("\terror reading cg\n");
printf("tell\t%x\n", tell(0));
if (read(0, (char *)&acg, afs.fs_bsize) != afs.fs_bsize) {
printf("\terror reading cg\n");
-static char *sccsid = "@(#)main.c 1.18 (Berkeley) %G%";
+static char *sccsid = "@(#)main.c 1.19 (Berkeley) %G%";
#include <stdio.h>
#include <ctype.h>
#include <stdio.h>
#include <ctype.h>
char nflag; /* assume a no response */
char yflag; /* assume a yes response */
int bflag; /* location of alternate super block */
char nflag; /* assume a no response */
char yflag; /* assume a yes response */
int bflag; /* location of alternate super block */
+int debug; /* output debugging info */
char preen; /* just fix normal inconsistencies */
char rplyflag; /* any questions asked? */
char hotroot; /* checking root device */
char preen; /* just fix normal inconsistencies */
char rplyflag; /* any questions asked? */
char hotroot; /* checking root device */
printf("Alternate super block location: %d\n", bflag);
break;
printf("Alternate super block location: %d\n", bflag);
break;
+ case 'd':
+ debug++;
+ break;
+
case 'n': /* default no answer flag */
case 'N':
nflag++;
case 'n': /* default no answer flag */
case 'N':
nflag++;
inum = 0;
n_blks += howmany(sblock.fs_cssize, sblock.fs_bsize) * sblock.fs_frag;
for (c = 0; c < sblock.fs_ncg; c++) {
inum = 0;
n_blks += howmany(sblock.fs_cssize, sblock.fs_bsize) * sblock.fs_frag;
for (c = 0; c < sblock.fs_ncg; c++) {
- if (getblk(&cgblk, cgtod(c, &sblock), sblock.fs_cgsize) == 0)
+ if (getblk(&cgblk, cgtod(&sblock, c), sblock.fs_cgsize) == 0)
continue;
n = 0;
for (i = 0; i < sblock.fs_ipg; i++, inum++) {
continue;
n = 0;
for (i = 0; i < sblock.fs_ipg; i++, inum++) {
continue;
if (ALLOC) {
if (!isset(cgrp.cg_iused, i)) {
continue;
if (ALLOC) {
if (!isset(cgrp.cg_iused, i)) {
- /*
- printf("%d bad, not used\n", inum);
- */
+ if (debug)
+ printf("%d bad, not used\n",
+ inum);
} else {
n++;
if (isset(cgrp.cg_iused, i)) {
} else {
n++;
if (isset(cgrp.cg_iused, i)) {
- /*
- printf("%d bad, marked used\n", inum);
- */
+ if (debug)
+ printf("%d bad, marked used\n",
+ inum);
}
}
if (n != cgrp.cg_cs.cs_nifree) {
}
}
if (n != cgrp.cg_cs.cs_nifree) {
- printf("cg[%d].cg_cs.cs_nifree is %d not %d\n",
- c, cgrp.cg_cs.cs_nifree, n);
+ if (debug)
+ printf("cg[%d].cg_cs.cs_nifree is %d not %d\n",
+ c, cgrp.cg_cs.cs_nifree, n);
printf("** Phase 5 - Check Cyl groups\n");
copy(blkmap, freemap, (unsigned)bmapsz);
dupblk = 0;
printf("** Phase 5 - Check Cyl groups\n");
copy(blkmap, freemap, (unsigned)bmapsz);
dupblk = 0;
- n_index = sblock.fs_ncg * (cgdmin(0, &sblock) - cgtod(0, &sblock));
+ n_index = sblock.fs_ncg * (cgdmin(&sblock, 0) - cgtod(&sblock, 0));
for (c = 0; c < sblock.fs_ncg; c++) {
for (c = 0; c < sblock.fs_ncg; c++) {
- daddr_t cbase = cgbase(c,&sblock);
+ daddr_t cbase = cgbase(&sblock, c);
short bo[MAXCPG][NRPOS];
long botot[MAXCPG];
long frsum[MAXFRAG];
short bo[MAXCPG][NRPOS];
long botot[MAXCPG];
long frsum[MAXFRAG];
* need to account for the spare boot and super blocks
* which appear (inaccurately) bad
*/
* need to account for the spare boot and super blocks
* which appear (inaccurately) bad
*/
- n_bad += cgtod(c, &sblock) - cbase;
- if (getblk(&cgblk, cgtod(c, &sblock), sblock.fs_cgsize) == 0)
+ n_bad += cgtod(&sblock, c) - cbase;
+ if (getblk(&cgblk, cgtod(&sblock, c), sblock.fs_cgsize) == 0)
continue;
for (b = 0; b < sblock.fs_fpg; b += sblock.fs_frag) {
if (isblock(&sblock, cgrp.cg_free, b/sblock.fs_frag)) {
continue;
for (b = 0; b < sblock.fs_fpg; b += sblock.fs_frag) {
if (isblock(&sblock, cgrp.cg_free, b/sblock.fs_frag)) {
}
for (i = 0; i < sblock.fs_frag; i++) {
if (cgrp.cg_frsum[i] != frsum[i]) {
}
for (i = 0; i < sblock.fs_frag; i++) {
if (cgrp.cg_frsum[i] != frsum[i]) {
- printf("cg[%d].cg_frsum[%d] have %d calc %d\n",
- c, i, cgrp.cg_frsum[i], frsum[i]);
+ if (debug)
+ printf("cg[%d].cg_frsum[%d] have %d calc %d\n",
+ c, i, cgrp.cg_frsum[i], frsum[i]);
frsumbad++;
}
}
for (n = 0; n < sblock.fs_cpg; n++) {
if (botot[n] != cgrp.cg_btot[n]) {
frsumbad++;
}
}
for (n = 0; n < sblock.fs_cpg; n++) {
if (botot[n] != cgrp.cg_btot[n]) {
- printf("cg[%d].cg_btot[%d] have %d calc %d\n",
- c, n, cgrp.cg_btot[n], botot[n]);
+ if (debug)
+ printf("cg[%d].cg_btot[%d] have %d calc %d\n",
+ c, n, cgrp.cg_btot[n], botot[n]);
offsumbad++;
}
for (i = 0; i < NRPOS; i++)
if (bo[n][i] != cgrp.cg_b[n][i]) {
offsumbad++;
}
for (i = 0; i < NRPOS; i++)
if (bo[n][i] != cgrp.cg_b[n][i]) {
- printf("cg[%d].cg_b[%d][%d] have %d calc %d\n",
- c, n, i, cgrp.cg_b[n][i], bo[n][i]);
+ if (debug)
+ printf("cg[%d].cg_b[%d][%d] have %d calc %d\n",
+ c, n, i, cgrp.cg_b[n][i],
+ bo[n][i]);
- c = dtog(blk, &sblock);
- if (blk >= fmax || blk < cgdmin(c, &sblock)) {
+ c = dtog(&sblock, blk);
+ if (blk >= fmax || blk < cgdmin(&sblock, c)) {
return (1);
}
return (0);
return (1);
}
return (0);
{ badsb("SPC DOES NOT JIVE w/NTRAK*NSECT"); return (0); }
if (sblock.fs_ipg % INOPB(&sblock))
{ badsb("INODES NOT MULTIPLE OF A BLOCK"); return (0); }
{ badsb("SPC DOES NOT JIVE w/NTRAK*NSECT"); return (0); }
if (sblock.fs_ipg % INOPB(&sblock))
{ badsb("INODES NOT MULTIPLE OF A BLOCK"); return (0); }
- if (cgdmin(0, &sblock) >= sblock.fs_cpg * sblock.fs_spc / NSPF(&sblock))
+ if (cgdmin(&sblock, 0) >= sblock.fs_cpg * sblock.fs_spc / NSPF(&sblock))
{ badsb("IMPLIES MORE INODE THAN DATA BLOCKS"); return (0); }
if (sblock.fs_ncg * sblock.fs_cpg < sblock.fs_ncyl ||
(sblock.fs_ncg - 1) * sblock.fs_cpg >= sblock.fs_ncyl)
{ badsb("IMPLIES MORE INODE THAN DATA BLOCKS"); return (0); }
if (sblock.fs_ncg * sblock.fs_cpg < sblock.fs_ncyl ||
(sblock.fs_ncg - 1) * sblock.fs_cpg >= sblock.fs_ncyl)
if (inum < ROOTINO || inum > imax)
return (NULL);
if (inum < startinum || inum >= startinum + INOPB(&sblock)) {
if (inum < ROOTINO || inum > imax)
return (NULL);
if (inum < startinum || inum >= startinum + INOPB(&sblock)) {
- iblk = itod(inum, &sblock);
+ iblk = itod(&sblock, inum);
if (getblk(&inoblk, iblk, sblock.fs_bsize) == NULL) {
return (NULL);
}
if (getblk(&inoblk, iblk, sblock.fs_bsize) == NULL) {
return (NULL);
}
sblock.fs_csaddr + (i * sblock.fs_frag), sblock.fs_bsize);
}
for (c = 0; c < sblock.fs_ncg; c++) {
sblock.fs_csaddr + (i * sblock.fs_frag), sblock.fs_bsize);
}
for (c = 0; c < sblock.fs_ncg; c++) {
- dbase = cgbase(c, &sblock);
+ dbase = cgbase(&sblock, c);
dmax = dbase + sblock.fs_fpg;
if (dmax > sblock.fs_size)
dmax = sblock.fs_size;
dmax = dbase + sblock.fs_fpg;
if (dmax > sblock.fs_size)
dmax = sblock.fs_size;
- dmin = cgdmin(c, &sblock) - dbase;
+ dmin = cgdmin(&sblock, c) - dbase;
cs = &sblock.fs_cs(&sblock, c);
cgrp.cg_time = time(0);
cgrp.cg_magic = CG_MAGIC;
cs = &sblock.fs_cs(&sblock, c);
cgrp.cg_time = time(0);
cgrp.cg_magic = CG_MAGIC;
sblock.fs_cstotal.cs_nifree += cgrp.cg_cs.cs_nifree;
sblock.fs_cstotal.cs_ndir += cgrp.cg_cs.cs_ndir;
*cs = cgrp.cg_cs;
sblock.fs_cstotal.cs_nifree += cgrp.cg_cs.cs_nifree;
sblock.fs_cstotal.cs_ndir += cgrp.cg_cs.cs_ndir;
*cs = cgrp.cg_cs;
- bwrite(&dfile, &cgrp, fsbtodb(&sblock, cgtod(c, &sblock)),
+ bwrite(&dfile, &cgrp, fsbtodb(&sblock, cgtod(&sblock, c)),
roundup(sblock.fs_cgsize, DEV_BSIZE));
}
for (i = 0; i < howmany(sblock.fs_cssize, sblock.fs_bsize); i++) {
roundup(sblock.fs_cgsize, DEV_BSIZE));
}
for (i = 0; i < howmany(sblock.fs_cssize, sblock.fs_bsize); i++) {
mask = 0x01 << (h & 0x7);
return ((cp[h >> 3] & mask) == mask);
default:
mask = 0x01 << (h & 0x7);
return ((cp[h >> 3] & mask) == mask);
default:
- fprintf(stderr, "isblock bad fs_frag %d\n", fs->fs_frag);
- return;
+ error("isblock bad fs_frag %d\n", fs->fs_frag);
+ return (0);
-static char *sccsid = "@(#)icheck.c 1.14 (Berkeley) %G%";
+static char *sccsid = "@(#)icheck.c 1.15 (Berkeley) %G%";
for (i=0; i<(unsigned)n; i++)
bmap[i] = 0;
for (c=0; c < sblock.fs_ncg; c++) {
for (i=0; i<(unsigned)n; i++)
bmap[i] = 0;
for (c=0; c < sblock.fs_ncg; c++) {
- cgd = cgtod(c, &sblock);
- for (d = cgbase(c, &sblock); d < cgd; d += sblock.fs_frag)
+ cgd = cgtod(&sblock, c);
+ for (d = cgbase(&sblock, c); d < cgd; d += sblock.fs_frag)
chk(d, "badcg", sblock.fs_bsize);
chk(d, "badcg", sblock.fs_bsize);
- d = cgimin(c, &sblock);
+ d = cgimin(&sblock, c);
while (cgd < d) {
chk(cgd, "cg", sblock.fs_bsize);
cgd += sblock.fs_frag;
}
while (cgd < d) {
chk(cgd, "cg", sblock.fs_bsize);
cgd += sblock.fs_frag;
}
- d = cgdmin(c, &sblock);
+ d = cgdmin(&sblock, c);
for (; cgd < d; cgd += sblock.fs_frag)
chk(cgd, "inode", sblock.fs_bsize);
if (c == 0) {
for (; cgd < d; cgd += sblock.fs_frag)
chk(cgd, "inode", sblock.fs_bsize);
if (c == 0) {
}
cginit = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
}
cginit = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
- bread(fsbtodb(&sblock, cgimin(c,&sblock)), (char *)itab,
+ bread(fsbtodb(&sblock, cgimin(&sblock, c)), (char *)itab,
sblock.fs_ipg * sizeof (struct dinode));
for (j=0; j < sblock.fs_ipg; j++) {
pass1(&itab[j]);
sblock.fs_ipg * sizeof (struct dinode));
for (j=0; j < sblock.fs_ipg; j++) {
pass1(&itab[j]);
nffree = 0;
nbfree = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
nffree = 0;
nbfree = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
- cbase = cgbase(c,&sblock);
- bread(fsbtodb(&sblock, cgtod(c,&sblock)), (char *)&cgrp,
+ cbase = cgbase(&sblock, c);
+ bread(fsbtodb(&sblock, cgtod(&sblock, c)), (char *)&cgrp,
sblock.fs_cgsize);
for (b = 0; b < sblock.fs_fpg; b += sblock.fs_frag) {
if (isblock(&sblock, cgrp.cg_free,
sblock.fs_cgsize);
for (b = 0; b < sblock.fs_fpg; b += sblock.fs_frag) {
if (isblock(&sblock, cgrp.cg_free,
- cg = dtog(bno, &sblock);
+ cg = dtog(&sblock, bno);
- bno<cgdmin(cg,&sblock) || bno >= sblock.fs_frag * sblock.fs_size) {
+ bno<cgdmin(&sblock, cg) || bno >= sblock.fs_frag * sblock.fs_size) {
printf("%ld bad; inode=%u, class=%s\n", bno, ino, s);
return(1);
}
printf("%ld bad; inode=%u, class=%s\n", bno, ino, s);
return(1);
}
sblock.fs_cstotal.cs_nifree = 0;
sblock.fs_cstotal.cs_ndir = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
sblock.fs_cstotal.cs_nifree = 0;
sblock.fs_cstotal.cs_ndir = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
- dbase = cgbase(c, &sblock);
+ dbase = cgbase(&sblock, c);
dmax = dbase + sblock.fs_fpg;
if (dmax > sblock.fs_size)
dmax = sblock.fs_size;
dmax = dbase + sblock.fs_fpg;
if (dmax > sblock.fs_size)
dmax = sblock.fs_size;
- dmin = cgdmin(c, &sblock) - dbase;
+ dmin = cgdmin(&sblock, c) - dbase;
cs = &sblock.fs_cs(&sblock, c);
cgrp.cg_time = time(0);
cgrp.cg_magic = CG_MAGIC;
cs = &sblock.fs_cs(&sblock, c);
cgrp.cg_time = time(0);
cgrp.cg_magic = CG_MAGIC;
cgrp.cg_irotor = 0;
for (i = 0; i < sblock.fs_frag; i++)
cgrp.cg_frsum[i] = 0;
cgrp.cg_irotor = 0;
for (i = 0; i < sblock.fs_frag; i++)
cgrp.cg_frsum[i] = 0;
- bread(fsbtodb(&sblock, cgimin(c, &sblock)), (char *)itab,
+ bread(fsbtodb(&sblock, cgimin(&sblock, c)), (char *)itab,
sblock.fs_ipg * sizeof(struct dinode));
for (i = 0; i < sblock.fs_ipg; i++) {
dp = &itab[i];
sblock.fs_ipg * sizeof(struct dinode));
for (i = 0; i < sblock.fs_ipg; i++) {
dp = &itab[i];
sblock.fs_cstotal.cs_nifree += cgrp.cg_cs.cs_nifree;
sblock.fs_cstotal.cs_ndir += cgrp.cg_cs.cs_ndir;
*cs = cgrp.cg_cs;
sblock.fs_cstotal.cs_nifree += cgrp.cg_cs.cs_nifree;
sblock.fs_cstotal.cs_ndir += cgrp.cg_cs.cs_ndir;
*cs = cgrp.cg_cs;
- bwrite(fsbtodb(&sblock, cgtod(c, &sblock)), &cgrp,
+ bwrite(fsbtodb(&sblock, cgtod(&sblock, c)), &cgrp,
sblock.fs_cgsize);
}
for (i = 0; i < howmany(sblock.fs_cssize, sblock.fs_bsize); i++) {
sblock.fs_cgsize);
}
for (i = 0; i < howmany(sblock.fs_cssize, sblock.fs_bsize); i++) {
-static char *sccsid = "@(#)ncheck.c 1.5 (Berkeley) %G%";
+static char *sccsid = "@(#)ncheck.c 1.6 (Berkeley) %G%";
/*
* ncheck -- obtain file names from reading filesystem
*/
/*
* ncheck -- obtain file names from reading filesystem
*/
}
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
}
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
- bread(fsbtodb(&sblock, cgimin(c, &sblock)), (char *)itab,
+ bread(fsbtodb(&sblock, cgimin(&sblock, c)), (char *)itab,
sblock.fs_ipg * sizeof (struct dinode));
for(j=0; j<sblock.fs_ipg; j++) {
pass1(&itab[j]);
sblock.fs_ipg * sizeof (struct dinode));
for(j=0; j<sblock.fs_ipg; j++) {
pass1(&itab[j]);
ilist[nxfile+1] = 0;
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
ilist[nxfile+1] = 0;
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
- bread(fsbtodb(&sblock, cgimin(c, &sblock)), (char *)itab,
+ bread(fsbtodb(&sblock, cgimin(&sblock, c)), (char *)itab,
sblock.fs_ipg * sizeof (struct dinode));
for(j=0; j<sblock.fs_ipg; j++) {
pass2(&itab[j]);
sblock.fs_ipg * sizeof (struct dinode));
for(j=0; j<sblock.fs_ipg; j++) {
pass2(&itab[j]);
}
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
}
ino = 0;
for (c = 0; c < sblock.fs_ncg; c++) {
- bread(fsbtodb(&sblock, cgimin(c, &sblock)), (char *)itab,
+ bread(fsbtodb(&sblock, cgimin(&sblock, c)), (char *)itab,
sblock.fs_ipg * sizeof (struct dinode));
for(j=0; j<sblock.fs_ipg; j++) {
pass3(&itab[j]);
sblock.fs_ipg * sizeof (struct dinode));
for(j=0; j<sblock.fs_ipg; j++) {
pass3(&itab[j]);
-static char *sccsid = "@(#)mkfs.c 1.14 (Berkeley) %G%";
+static char *sccsid = "@(#)mkfs.c 1.15 (Berkeley) %G%";
/*
* make file system for cylinder-group style file systems
/*
* make file system for cylinder-group style file systems
if (sblock.fs_ipg > MAXIPG)
sblock.fs_ipg = MAXIPG;
sblock.fs_dblkno = sblock.fs_iblkno + sblock.fs_ipg / INOPF(&sblock);
if (sblock.fs_ipg > MAXIPG)
sblock.fs_ipg = MAXIPG;
sblock.fs_dblkno = sblock.fs_iblkno + sblock.fs_ipg / INOPF(&sblock);
- if (cgdmin(0,&sblock) >= sblock.fs_fpg) {
+ if (cgdmin(&sblock, 0) >= sblock.fs_fpg) {
printf("inode blocks/cyl group (%d) >= data blocks (%d)\n",
printf("inode blocks/cyl group (%d) >= data blocks (%d)\n",
- cgdmin(0,&sblock) / sblock.fs_frag,
+ cgdmin(&sblock, 0) / sblock.fs_frag,
sblock.fs_fpg / sblock.fs_frag);
printf("number of cylinder per cylinder group must be increased\n");
exit(1);
sblock.fs_fpg / sblock.fs_frag);
printf("number of cylinder per cylinder group must be increased\n");
exit(1);
/*
* fill in remaining fields of the super block
*/
/*
* fill in remaining fields of the super block
*/
- sblock.fs_csaddr = cgdmin(0, &sblock);
+ sblock.fs_csaddr = cgdmin(&sblock, 0);
sblock.fs_cssize = sblock.fs_ncg * sizeof(struct csum);
fscs = (struct csum *)
calloc(1, roundup(sblock.fs_cssize, sblock.fs_bsize));
sblock.fs_cssize = sblock.fs_ncg * sizeof(struct csum);
fscs = (struct csum *)
calloc(1, roundup(sblock.fs_cssize, sblock.fs_bsize));
printf("Warning: no super-block backups with only one cylinder group\n");
else
printf("\tsuper-block backups (for fsck -b#) at %d+k*%d (%d .. %d)\n",
printf("Warning: no super-block backups with only one cylinder group\n");
else
printf("\tsuper-block backups (for fsck -b#) at %d+k*%d (%d .. %d)\n",
- SBLOCK, cgsblock(1, &sblock) - SBLOCK, cgsblock(1, &sblock),
- cgsblock(sblock.fs_ncg - 1, &sblock));
+ SBLOCK, cgsblock(&sblock, 1) - SBLOCK, cgsblock(&sblock, 1),
+ cgsblock(&sblock, sblock.fs_ncg - 1));
/*
* Now construct the initial file system,
* then write out the super-block.
/*
* Now construct the initial file system,
* then write out the super-block.
* Write out the duplicate super blocks
*/
for (cylno = 1; cylno < sblock.fs_ncg; cylno++)
* Write out the duplicate super blocks
*/
for (cylno = 1; cylno < sblock.fs_ncg; cylno++)
- wtfs(cgsblock(cylno, &sblock), SBSIZE, (char *)&sblock);
+ wtfs(cgsblock(&sblock, cylno), SBSIZE, (char *)&sblock);
#ifndef STANDALONE
exit(0);
#endif
#ifndef STANDALONE
exit(0);
#endif
* Allow space for super block summary information in first
* cylinder group.
*/
* Allow space for super block summary information in first
* cylinder group.
*/
- cbase = cgbase(cylno,&sblock);
+ cbase = cgbase(&sblock, cylno);
dmax = cbase + sblock.fs_fpg;
if (dmax > sblock.fs_size)
dmax = sblock.fs_size;
dmax = cbase + sblock.fs_fpg;
if (dmax > sblock.fs_size)
dmax = sblock.fs_size;
clrbit(acg.cg_iused, i);
i++;
}
clrbit(acg.cg_iused, i);
i++;
}
- lseek(fso, fsbtodb(&sblock, cgimin(cylno,&sblock)) * DEV_BSIZE, 0);
+ lseek(fso, fsbtodb(&sblock, cgimin(&sblock, cylno)) * DEV_BSIZE, 0);
if (write(fso, (char *)zino, sblock.fs_ipg * sizeof (struct dinode)) !=
sblock.fs_ipg * sizeof (struct dinode))
printf("write error %D\n", tell(fso) / sblock.fs_bsize);
if (write(fso, (char *)zino, sblock.fs_ipg * sizeof (struct dinode)) !=
sblock.fs_ipg * sizeof (struct dinode))
printf("write error %D\n", tell(fso) / sblock.fs_bsize);
sblock.fs_cstotal.cs_nbfree += acg.cg_cs.cs_nbfree;
sblock.fs_cstotal.cs_nifree += acg.cg_cs.cs_nifree;
*cs = acg.cg_cs;
sblock.fs_cstotal.cs_nbfree += acg.cg_cs.cs_nbfree;
sblock.fs_cstotal.cs_nifree += acg.cg_cs.cs_nifree;
*cs = acg.cg_cs;
- wtfs(fsbtodb(&sblock, cgtod(cylno, &sblock)),
+ wtfs(fsbtodb(&sblock, cgtod(&sblock, cylno)),
sblock.fs_bsize, (char *)&acg);
}
sblock.fs_bsize, (char *)&acg);
}
- rdfs(fsbtodb(&sblock, cgtod(0,&sblock)),
+ rdfs(fsbtodb(&sblock, cgtod(&sblock, 0)),
roundup(sblock.fs_cgsize, DEV_BSIZE), (char *)&acg);
if (acg.cg_cs.cs_nbfree == 0) {
printf("first cylinder group ran out of space\n");
roundup(sblock.fs_cgsize, DEV_BSIZE), (char *)&acg);
if (acg.cg_cs.cs_nbfree == 0) {
printf("first cylinder group ran out of space\n");
for (i = frag; i < sblock.fs_frag; i++)
setbit(acg.cg_free, d+i);
}
for (i = frag; i < sblock.fs_frag; i++)
setbit(acg.cg_free, d+i);
}
- wtfs(fsbtodb(&sblock, cgtod(0,&sblock)),
+ wtfs(fsbtodb(&sblock, cgtod(&sblock, 0)),
roundup(sblock.fs_cgsize, DEV_BSIZE), (char *)&acg);
return (d);
}
roundup(sblock.fs_cgsize, DEV_BSIZE), (char *)&acg);
return (d);
}
- c = itog(ip->i_number, &sblock);
- rdfs(fsbtodb(&sblock, cgtod(c,&sblock)),
+ c = itog(&sblock, ip->i_number);
+ rdfs(fsbtodb(&sblock, cgtod(&sblock, c)),
roundup(sblock.fs_cgsize, DEV_BSIZE), (char *)&acg);
acg.cg_cs.cs_nifree--;
setbit(acg.cg_iused, ip->i_number);
roundup(sblock.fs_cgsize, DEV_BSIZE), (char *)&acg);
acg.cg_cs.cs_nifree--;
setbit(acg.cg_iused, ip->i_number);
- wtfs(fsbtodb(&sblock, cgtod(c,&sblock)),
+ wtfs(fsbtodb(&sblock, cgtod(&sblock, c)),
roundup(sblock.fs_cgsize, DEV_BSIZE), (char *)&acg);
sblock.fs_cstotal.cs_nifree--;
fscs[0].cs_nifree--;
roundup(sblock.fs_cgsize, DEV_BSIZE), (char *)&acg);
sblock.fs_cstotal.cs_nifree--;
fscs[0].cs_nifree--;
ip->i_number);
exit(1);
}
ip->i_number);
exit(1);
}
- d = fsbtodb(&sblock, itod(ip->i_number, &sblock));
+ d = fsbtodb(&sblock, itod(&sblock, ip->i_number));
rdfs(d, sblock.fs_bsize, buf);
rdfs(d, sblock.fs_bsize, buf);
- buf[itoo(ip->i_number, &sblock)].di_ic = ip->i_ic;
+ buf[itoo(&sblock, ip->i_number)].di_ic = ip->i_ic;
wtfs(d, sblock.fs_bsize, buf);
}
wtfs(d, sblock.fs_bsize, buf);
}
/* Copyright (c) 1981 Regents of the University of California */
/* Copyright (c) 1981 Regents of the University of California */
-char version[] = "@(#)main.c 1.10 %G%";
+char version[] = "@(#)main.c 1.11 %G%";
/* Modified to include h option (recursively extract all files within
* a subtree) and m option (recreate the heirarchical structure of
/* Modified to include h option (recursively extract all files within
* a subtree) and m option (recreate the heirarchical structure of
fs = getfs(dev);
if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg)
return (0);
fs = getfs(dev);
if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg)
return (0);
- cg = itog(ino, fs);
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ cg = itog(fs, ino);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return(0);
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return(0);
cgp = bp->b_un.b_cg;
/* Copyright (c) 1981 Regents of the University of California */
/* Copyright (c) 1981 Regents of the University of California */
-static char vers[] = "@(#)ffs_alloc.c 1.14 %G%";
+static char vers[] = "@(#)ffs_alloc.c 1.15 %G%";
/* alloc.c 4.8 81/03/08 */
/* alloc.c 4.8 81/03/08 */
if (bpref >= fs->fs_size)
bpref = 0;
if (bpref == 0)
if (bpref >= fs->fs_size)
bpref = 0;
if (bpref == 0)
- cg = itog(ip->i_number, fs);
+ cg = itog(fs, ip->i_number);
bno = (daddr_t)hashalloc(dev, fs, cg, (long)bpref, size, alloccg);
if (bno == 0)
goto nospace;
bno = (daddr_t)hashalloc(dev, fs, cg, (long)bpref, size, alloccg);
if (bno == 0)
goto nospace;
fs->fs_dsize * fs->fs_minfree / 100)
goto nospace;
if (bprev != 0)
fs->fs_dsize * fs->fs_minfree / 100)
goto nospace;
if (bprev != 0)
else
panic("realloccg: bad bprev");
bno = fragextend(dev, fs, cg, (long)bprev, osize, nsize);
else
panic("realloccg: bad bprev");
bno = fragextend(dev, fs, cg, (long)bprev, osize, nsize);
goto noinodes;
if (ipref >= fs->fs_ncg * fs->fs_ipg)
ipref = 0;
goto noinodes;
if (ipref >= fs->fs_ncg * fs->fs_ipg)
ipref = 0;
ino = (ino_t)hashalloc(dev, fs, cg, (long)ipref, mode, ialloccg);
if (ino == 0)
goto noinodes;
ino = (ino_t)hashalloc(dev, fs, cg, (long)ipref, mode, ialloccg);
if (ino == 0)
goto noinodes;
/* cannot extend across a block boundry */
return (0);
}
/* cannot extend across a block boundry */
return (0);
}
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
- bno = dtogd(bprev, fs);
+ bno = dtogd(fs, bprev);
for (i = osize / fs->fs_fsize; i < frags; i++)
if (isclr(cgp->cg_free, bno + i)) {
brelse(bp);
for (i = osize / fs->fs_fsize; i < frags; i++)
if (isclr(cgp->cg_free, bno + i)) {
brelse(bp);
if (fs->fs_cs(fs, cg).cs_nbfree == 0 && size == fs->fs_bsize)
return (0);
if (fs->fs_cs(fs, cg).cs_nbfree == 0 && size == fs->fs_bsize)
return (0);
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
return (0);
}
bno = alloccgblk(fs, cgp, bpref);
return (0);
}
bno = alloccgblk(fs, cgp, bpref);
- bpref = dtogd(bno, fs);
+ bpref = dtogd(fs, bno);
for (i = frags; i < fs->fs_frag; i++)
setbit(cgp->cg_free, bpref + i);
i = fs->fs_frag - frags;
for (i = frags; i < fs->fs_frag; i++)
setbit(cgp->cg_free, bpref + i);
i = fs->fs_frag - frags;
goto norot;
}
bpref &= ~(fs->fs_frag - 1);
goto norot;
}
bpref &= ~(fs->fs_frag - 1);
- bpref = dtogd(bpref, fs);
+ bpref = dtogd(fs, bpref);
/*
* if the requested block is available, use it
*/
/*
* if the requested block is available, use it
*/
if (fs->fs_cs(fs, cg).cs_nifree == 0)
return (0);
if (fs->fs_cs(fs, cg).cs_nifree == 0)
return (0);
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
fs = getfs(dev);
if ((unsigned)size > fs->fs_bsize || size % fs->fs_fsize != 0)
panic("free: bad size");
fs = getfs(dev);
if ((unsigned)size > fs->fs_bsize || size % fs->fs_fsize != 0)
panic("free: bad size");
if (badblock(fs, bno))
return;
if (badblock(fs, bno))
return;
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return;
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return;
cgp = bp->b_un.b_cg;
if (size == fs->fs_bsize) {
if (isblock(fs, cgp->cg_free, bno/fs->fs_frag))
panic("free: freeing free block");
if (size == fs->fs_bsize) {
if (isblock(fs, cgp->cg_free, bno/fs->fs_frag))
panic("free: freeing free block");
fs = getfs(dev);
if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg)
panic("ifree: range");
fs = getfs(dev);
if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg)
panic("ifree: range");
- cg = itog(ino, fs);
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ cg = itog(fs, ino);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return;
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return;
cgp = bp->b_un.b_cg;
* map for an appropriate bit pattern
*/
if (bpref)
* map for an appropriate bit pattern
*/
if (bpref)
- start = dtogd(bpref, fs) / NBBY;
+ start = dtogd(fs, bpref) / NBBY;
else
start = cgp->cg_frotor / NBBY;
len = roundup(fs->fs_fpg - 1, NBBY) / NBBY - start;
else
start = cgp->cg_frotor / NBBY;
len = roundup(fs->fs_fpg - 1, NBBY) / NBBY - start;
- if ((unsigned)bn >= fs->fs_size || bn < cgdmin(dtog(bn, fs), fs)) {
+ if ((unsigned)bn >= fs->fs_size || bn < cgdmin(fs, dtog(fs, bn))) {
fserr(fs, "bad block");
return (1);
}
fserr(fs, "bad block");
return (1);
}
/* Copyright (c) 1981 Regents of the University of California */
/* Copyright (c) 1981 Regents of the University of California */
/*
* Each disk drive contains some number of file systems.
/*
* Each disk drive contains some number of file systems.
* [fs->fs_iblkno] Inode blocks
* [fs->fs_dblkno] Data blocks
* The beginning of cylinder group cg in fs, is given by
* [fs->fs_iblkno] Inode blocks
* [fs->fs_dblkno] Data blocks
* The beginning of cylinder group cg in fs, is given by
- * the ``cgbase(cg, fs)'' macro.
+ * the ``cgbase(fs, cg)'' macro.
*
* The first boot and super blocks are given in absolute disk addresses.
*/
*
* The first boot and super blocks are given in absolute disk addresses.
*/
* Note that these are in absolute addresses, and can NOT
* in general be expressable in terms of file system addresses.
*/
* Note that these are in absolute addresses, and can NOT
* in general be expressable in terms of file system addresses.
*/
-#define cgbblock(c,fs) (fsbtodb(fs, cgbase(c,fs)) + (fs)->fs_bblkno)
-#define cgsblock(c,fs) (fsbtodb(fs, cgbase(c,fs)) + (fs)->fs_sblkno)
+#define cgbblock(fs, c) (fsbtodb(fs, cgbase(fs, c)) + (fs)->fs_bblkno)
+#define cgsblock(fs, c) (fsbtodb(fs, cgbase(fs, c)) + (fs)->fs_sblkno)
/*
* file system addresses of cylinder group data structures
*/
/*
* file system addresses of cylinder group data structures
*/
-#define cgbase(c,fs) ((daddr_t)((fs)->fs_fpg * (c))) /* base addr */
-#define cgtod(c,fs) (cgbase(c,fs) + (fs)->fs_cblkno) /* cg block */
-#define cgimin(c,fs) (cgbase(c,fs) + (fs)->fs_iblkno) /* inode blk */
-#define cgdmin(c,fs) (cgbase(c,fs) + (fs)->fs_dblkno) /* 1st data */
+#define cgbase(fs, c) ((daddr_t)((fs)->fs_fpg * (c))) /* base addr */
+#define cgtod(fs, c) (cgbase(fs, c) + (fs)->fs_cblkno) /* cg block */
+#define cgimin(fs, c) (cgbase(fs, c) + (fs)->fs_iblkno) /* inode blk */
+#define cgdmin(fs, c) (cgbase(fs, c) + (fs)->fs_dblkno) /* 1st data */
/*
* macros for handling inode numbers
/*
* macros for handling inode numbers
* inode number to cylinder group number
* inode number to file system block address
*/
* inode number to cylinder group number
* inode number to file system block address
*/
-#define itoo(x,fs) ((x) % INOPB(fs))
-#define itog(x,fs) ((x) / (fs)->fs_ipg)
-#define itod(x,fs) \
- ((daddr_t)(cgimin(itog(x,fs),fs) + \
+#define itoo(fs, x) ((x) % INOPB(fs))
+#define itog(fs, x) ((x) / (fs)->fs_ipg)
+#define itod(fs, x) \
+ ((daddr_t)(cgimin(fs, itog(fs, x)) + \
(x) % (fs)->fs_ipg / INOPB(fs) * (fs)->fs_frag))
/*
* give cylinder group number for a file system block
* give cylinder group block number for a file system block
*/
(x) % (fs)->fs_ipg / INOPB(fs) * (fs)->fs_frag))
/*
* give cylinder group number for a file system block
* give cylinder group block number for a file system block
*/
-#define dtog(d,fs) ((d) / (fs)->fs_fpg)
-#define dtogd(d,fs) ((d) % (fs)->fs_fpg)
+#define dtog(fs, d) ((d) / (fs)->fs_fpg)
+#define dtogd(fs, d) ((d) % (fs)->fs_fpg)
/*
* compute the cylinder and rotational position of a cyl block addr
/*
* compute the cylinder and rotational position of a cyl block addr
/* Copyright (c) 1981 Regents of the University of California */
/* Copyright (c) 1981 Regents of the University of California */
-static char vers[] = "@(#)lfs_alloc.c 1.14 %G%";
+static char vers[] = "@(#)lfs_alloc.c 1.15 %G%";
/* alloc.c 4.8 81/03/08 */
/* alloc.c 4.8 81/03/08 */
if (bpref >= fs->fs_size)
bpref = 0;
if (bpref == 0)
if (bpref >= fs->fs_size)
bpref = 0;
if (bpref == 0)
- cg = itog(ip->i_number, fs);
+ cg = itog(fs, ip->i_number);
bno = (daddr_t)hashalloc(dev, fs, cg, (long)bpref, size, alloccg);
if (bno == 0)
goto nospace;
bno = (daddr_t)hashalloc(dev, fs, cg, (long)bpref, size, alloccg);
if (bno == 0)
goto nospace;
fs->fs_dsize * fs->fs_minfree / 100)
goto nospace;
if (bprev != 0)
fs->fs_dsize * fs->fs_minfree / 100)
goto nospace;
if (bprev != 0)
else
panic("realloccg: bad bprev");
bno = fragextend(dev, fs, cg, (long)bprev, osize, nsize);
else
panic("realloccg: bad bprev");
bno = fragextend(dev, fs, cg, (long)bprev, osize, nsize);
goto noinodes;
if (ipref >= fs->fs_ncg * fs->fs_ipg)
ipref = 0;
goto noinodes;
if (ipref >= fs->fs_ncg * fs->fs_ipg)
ipref = 0;
ino = (ino_t)hashalloc(dev, fs, cg, (long)ipref, mode, ialloccg);
if (ino == 0)
goto noinodes;
ino = (ino_t)hashalloc(dev, fs, cg, (long)ipref, mode, ialloccg);
if (ino == 0)
goto noinodes;
/* cannot extend across a block boundry */
return (0);
}
/* cannot extend across a block boundry */
return (0);
}
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
- bno = dtogd(bprev, fs);
+ bno = dtogd(fs, bprev);
for (i = osize / fs->fs_fsize; i < frags; i++)
if (isclr(cgp->cg_free, bno + i)) {
brelse(bp);
for (i = osize / fs->fs_fsize; i < frags; i++)
if (isclr(cgp->cg_free, bno + i)) {
brelse(bp);
if (fs->fs_cs(fs, cg).cs_nbfree == 0 && size == fs->fs_bsize)
return (0);
if (fs->fs_cs(fs, cg).cs_nbfree == 0 && size == fs->fs_bsize)
return (0);
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
return (0);
}
bno = alloccgblk(fs, cgp, bpref);
return (0);
}
bno = alloccgblk(fs, cgp, bpref);
- bpref = dtogd(bno, fs);
+ bpref = dtogd(fs, bno);
for (i = frags; i < fs->fs_frag; i++)
setbit(cgp->cg_free, bpref + i);
i = fs->fs_frag - frags;
for (i = frags; i < fs->fs_frag; i++)
setbit(cgp->cg_free, bpref + i);
i = fs->fs_frag - frags;
goto norot;
}
bpref &= ~(fs->fs_frag - 1);
goto norot;
}
bpref &= ~(fs->fs_frag - 1);
- bpref = dtogd(bpref, fs);
+ bpref = dtogd(fs, bpref);
/*
* if the requested block is available, use it
*/
/*
* if the requested block is available, use it
*/
if (fs->fs_cs(fs, cg).cs_nifree == 0)
return (0);
if (fs->fs_cs(fs, cg).cs_nifree == 0)
return (0);
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return (0);
cgp = bp->b_un.b_cg;
fs = getfs(dev);
if ((unsigned)size > fs->fs_bsize || size % fs->fs_fsize != 0)
panic("free: bad size");
fs = getfs(dev);
if ((unsigned)size > fs->fs_bsize || size % fs->fs_fsize != 0)
panic("free: bad size");
if (badblock(fs, bno))
return;
if (badblock(fs, bno))
return;
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return;
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return;
cgp = bp->b_un.b_cg;
if (size == fs->fs_bsize) {
if (isblock(fs, cgp->cg_free, bno/fs->fs_frag))
panic("free: freeing free block");
if (size == fs->fs_bsize) {
if (isblock(fs, cgp->cg_free, bno/fs->fs_frag))
panic("free: freeing free block");
fs = getfs(dev);
if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg)
panic("ifree: range");
fs = getfs(dev);
if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg)
panic("ifree: range");
- cg = itog(ino, fs);
- bp = bread(dev, fsbtodb(fs, cgtod(cg, fs)), fs->fs_bsize);
+ cg = itog(fs, ino);
+ bp = bread(dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
if (bp->b_flags & B_ERROR)
return;
cgp = bp->b_un.b_cg;
if (bp->b_flags & B_ERROR)
return;
cgp = bp->b_un.b_cg;
* map for an appropriate bit pattern
*/
if (bpref)
* map for an appropriate bit pattern
*/
if (bpref)
- start = dtogd(bpref, fs) / NBBY;
+ start = dtogd(fs, bpref) / NBBY;
else
start = cgp->cg_frotor / NBBY;
len = roundup(fs->fs_fpg - 1, NBBY) / NBBY - start;
else
start = cgp->cg_frotor / NBBY;
len = roundup(fs->fs_fpg - 1, NBBY) / NBBY - start;
- if ((unsigned)bn >= fs->fs_size || bn < cgdmin(dtog(bn, fs), fs)) {
+ if ((unsigned)bn >= fs->fs_size || bn < cgdmin(fs, dtog(fs, bn))) {
fserr(fs, "bad block");
return (1);
}
fserr(fs, "bad block");
return (1);
}