# 2.11BSD#431 - /usr/src/sbin/fsck/pass4.c

##### Functions

    pass4             X
    pass4check        X

       1: /*
       2:  * Copyright (c) 1980 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #if !defined(lint) && defined(DOSCCS)
       8: static char sccsid[] = "@(#)pass4.c	5.3 (Berkeley) 3/5/86";
       9: #endif not lint
      10:
      11: #include <sys/param.h>
      12: #include <sys/inode.h>
      13: #include <sys/fs.h>
      14: #include "fsck.h"
      15:
      16: int pass4check();
      17:
      18: pass4()
      19: {
      20:     register ino_t inumber, *zp;
      21:     struct inodesc idesc;
      22:     int n;
      23:
      24:     bzero((char *)&idesc, sizeof(struct inodesc));
      25:     idesc.id_type = ADDR;
      26:     idesc.id_func = pass4check;
      27:     for (inumber = ROOTINO; inumber <= lastino; inumber++) {
      28:         idesc.id_number = inumber;
      29:         switch (getstate(inumber)) {
      30:
      31:         case FSTATE:
      32:         case DFOUND:
      33:             n = getlncnt(inumber);
      34:             if (n)
      35:                 adjust(&idesc, (short)n);
      36:             else {
      37:                 zp = zlnlist;
      38:                 for (zp = zlnlist; zp < zlnp; zp++) {
      39:                     if (*zp == 0) continue;
      40:                     if (*zp == inumber) {
      41:                         clri(&idesc, "UNREF", 1);
      42:                         *zp = 0;
      43:                         break;
      44:                     }
      45:                 }
      46:             }
      47:             break;
      48:
      49:         case DSTATE:
      50:             clri(&idesc, "UNREF", 1);
      51:             break;
      52:
      53:         case DCLEAR:
      54:         case FCLEAR:
      55:             clri(&idesc, "BAD/DUP", 1);
      56:             break;
      57:
      58:         case USTATE:
      59:             break;
      60:
      61:         default:
      62:             errexit("BAD STATE %d FOR INODE I=%u",
      63:                 getstate(inumber), inumber);
      64:         }
      65:     }
      66: }
      67:
      68: pass4check(idesc)
      69:     register struct inodesc *idesc;
      70: {
      71:     register daddr_t *dlp;
      72:     daddr_t blkno = idesc->id_blkno;
      73:
      74:     if (outrange(blkno))
      75:         return (SKIP);
      76:     if (getbmap(blkno)) {
      77:         for (dlp = duplist; dlp < enddup; dlp++)
      78:             if (*dlp == blkno) {
      79:                 *dlp = *--enddup;
      80:                 return (KEEPON);
      81:             }
      82:         clrbmap(blkno);
      83:         n_blks--;
      84:     }
      85:     return (KEEPON);
      86: }

#### Defined functions

pass4 defined in line 18; used 1 times

- in /usr/src/sbin/fsck/main.c line 218

pass4check defined in line 68; used 7 times

- in line 16, 26
- in /usr/src/sbin/fsck/dir.c line 288, 357
- in /usr/src/sbin/fsck/inode.c line 292-297(2)
- in /usr/src/sbin/fsck/utilities.c line 242

#### Defined variables

sccsid defined in line 8; never used

Last modified: 1990-09-16 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 711 |