1*16263Smckusick #ifndef lint 2*16263Smckusick static char version[] = "@(#)pass1b.c 3.1 (Berkeley) 03/31/84"; 3*16263Smckusick #endif 4*16263Smckusick 5*16263Smckusick #include <sys/param.h> 6*16263Smckusick #include <sys/inode.h> 7*16263Smckusick #include <sys/fs.h> 8*16263Smckusick #include "fsck.h" 9*16263Smckusick 10*16263Smckusick int pass1bcheck(); 11*16263Smckusick 12*16263Smckusick pass1b() 13*16263Smckusick { 14*16263Smckusick register int c, i; 15*16263Smckusick register DINODE *dp; 16*16263Smckusick struct inodesc idesc; 17*16263Smckusick ino_t inumber; 18*16263Smckusick 19*16263Smckusick bzero((char *)&idesc, sizeof(struct inodesc)); 20*16263Smckusick idesc.id_type = ADDR; 21*16263Smckusick idesc.id_func = pass1bcheck; 22*16263Smckusick inumber = 0; 23*16263Smckusick for (c = 0; c < sblock.fs_ncg; c++) { 24*16263Smckusick for (i = 0; i < sblock.fs_ipg; i++, inumber++) { 25*16263Smckusick dp = ginode(inumber); 26*16263Smckusick if (dp == NULL) 27*16263Smckusick continue; 28*16263Smckusick idesc.id_number = inumber; 29*16263Smckusick if (statemap[inumber] != USTATE && 30*16263Smckusick (ckinode(dp, &idesc) & STOP)) 31*16263Smckusick goto out1b; 32*16263Smckusick } 33*16263Smckusick } 34*16263Smckusick out1b: 35*16263Smckusick flush(&dfile, &inoblk); 36*16263Smckusick } 37*16263Smckusick 38*16263Smckusick pass1bcheck(idesc) 39*16263Smckusick register struct inodesc *idesc; 40*16263Smckusick { 41*16263Smckusick register daddr_t *dlp; 42*16263Smckusick int nfrags, res = KEEPON; 43*16263Smckusick daddr_t blkno = idesc->id_blkno; 44*16263Smckusick 45*16263Smckusick for (nfrags = idesc->id_numfrags; nfrags > 0; blkno++, nfrags--) { 46*16263Smckusick if (outrange(blkno, 1)) 47*16263Smckusick res = SKIP; 48*16263Smckusick for (dlp = duplist; dlp < muldup; dlp++) 49*16263Smckusick if (*dlp == blkno) { 50*16263Smckusick blkerr(idesc->id_number, "DUP", blkno); 51*16263Smckusick *dlp = *--muldup; 52*16263Smckusick *muldup = blkno; 53*16263Smckusick if (muldup == duplist) 54*16263Smckusick return (STOP); 55*16263Smckusick } 56*16263Smckusick } 57*16263Smckusick return (res); 58*16263Smckusick } 59