116263Smckusick #ifndef lint 2*20847Smckusick static char version[] = "@(#)pass1b.c 3.2 (Berkeley) 05/16/85"; 316263Smckusick #endif 416263Smckusick 516263Smckusick #include <sys/param.h> 616263Smckusick #include <sys/inode.h> 716263Smckusick #include <sys/fs.h> 816263Smckusick #include "fsck.h" 916263Smckusick 1016263Smckusick int pass1bcheck(); 1116263Smckusick 1216263Smckusick pass1b() 1316263Smckusick { 1416263Smckusick register int c, i; 1516263Smckusick register DINODE *dp; 1616263Smckusick struct inodesc idesc; 1716263Smckusick ino_t inumber; 1816263Smckusick 1916263Smckusick bzero((char *)&idesc, sizeof(struct inodesc)); 2016263Smckusick idesc.id_type = ADDR; 2116263Smckusick idesc.id_func = pass1bcheck; 2216263Smckusick inumber = 0; 2316263Smckusick for (c = 0; c < sblock.fs_ncg; c++) { 2416263Smckusick for (i = 0; i < sblock.fs_ipg; i++, inumber++) { 25*20847Smckusick if (inumber < ROOTINO) 26*20847Smckusick continue; 2716263Smckusick dp = ginode(inumber); 2816263Smckusick if (dp == NULL) 2916263Smckusick continue; 3016263Smckusick idesc.id_number = inumber; 3116263Smckusick if (statemap[inumber] != USTATE && 3216263Smckusick (ckinode(dp, &idesc) & STOP)) 3316263Smckusick goto out1b; 3416263Smckusick } 3516263Smckusick } 3616263Smckusick out1b: 3716263Smckusick flush(&dfile, &inoblk); 3816263Smckusick } 3916263Smckusick 4016263Smckusick pass1bcheck(idesc) 4116263Smckusick register struct inodesc *idesc; 4216263Smckusick { 4316263Smckusick register daddr_t *dlp; 4416263Smckusick int nfrags, res = KEEPON; 4516263Smckusick daddr_t blkno = idesc->id_blkno; 4616263Smckusick 4716263Smckusick for (nfrags = idesc->id_numfrags; nfrags > 0; blkno++, nfrags--) { 4816263Smckusick if (outrange(blkno, 1)) 4916263Smckusick res = SKIP; 5016263Smckusick for (dlp = duplist; dlp < muldup; dlp++) 5116263Smckusick if (*dlp == blkno) { 5216263Smckusick blkerr(idesc->id_number, "DUP", blkno); 5316263Smckusick *dlp = *--muldup; 5416263Smckusick *muldup = blkno; 5516263Smckusick if (muldup == duplist) 5616263Smckusick return (STOP); 5716263Smckusick } 5816263Smckusick } 5916263Smckusick return (res); 6016263Smckusick } 61