Deleted Added
full compact
pass4.c (37000) pass4.c (41474)
1/*
2 * Copyright (c) 1980, 1986, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 18 unchanged lines hidden (view full) ---

27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34#ifndef lint
1/*
2 * Copyright (c) 1980, 1986, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 18 unchanged lines hidden (view full) ---

27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34#ifndef lint
35#if 0
36static const char sccsid[] = "@(#)pass4.c 8.4 (Berkeley) 4/28/95";
35static const char sccsid[] = "@(#)pass4.c 8.4 (Berkeley) 4/28/95";
37#endif
38static const char rcsid[] =
39 "$Id$";
40#endif /* not lint */
41
42#include <sys/param.h>
36#endif /* not lint */
37
38#include <sys/param.h>
39#include <sys/time.h>
43
44#include <ufs/ufs/dinode.h>
40
41#include <ufs/ufs/dinode.h>
42#include <ufs/ffs/fs.h>
45
46#include <err.h>
47#include <string.h>
48
49#include "fsck.h"
50
51void
52pass4()
53{
54 register ino_t inumber;
55 register struct zlncnt *zlnp;
56 struct dinode *dp;
57 struct inodesc idesc;
43
44#include <err.h>
45#include <string.h>
46
47#include "fsck.h"
48
49void
50pass4()
51{
52 register ino_t inumber;
53 register struct zlncnt *zlnp;
54 struct dinode *dp;
55 struct inodesc idesc;
58 int n;
56 int i, n, cg;
59
60 memset(&idesc, 0, sizeof(struct inodesc));
61 idesc.id_type = ADDR;
62 idesc.id_func = pass4check;
57
58 memset(&idesc, 0, sizeof(struct inodesc));
59 idesc.id_type = ADDR;
60 idesc.id_func = pass4check;
63 for (inumber = ROOTINO; inumber <= lastino; inumber++) {
64 idesc.id_number = inumber;
65 switch (statemap[inumber]) {
61 for (cg = 0; cg < sblock.fs_ncg; cg++) {
62 inumber = cg * sblock.fs_ipg;
63 for (i = 0; i < inostathead[cg].il_numalloced; i++, inumber++) {
64 if (inumber < ROOTINO)
65 continue;
66 idesc.id_number = inumber;
67 switch (inoinfo(inumber)->ino_state) {
66
68
67 case FSTATE:
68 case DFOUND:
69 n = lncntp[inumber];
70 if (n)
71 adjust(&idesc, (short)n);
72 else {
73 for (zlnp = zlnhead; zlnp; zlnp = zlnp->next)
69 case FSTATE:
70 case DFOUND:
71 n = inoinfo(inumber)->ino_linkcnt;
72 if (n) {
73 adjust(&idesc, (short)n);
74 break;
75 }
76 for (zlnp = zlnhead; zlnp; zlnp = zlnp->next) {
74 if (zlnp->zlncnt == inumber) {
75 zlnp->zlncnt = zlnhead->zlncnt;
76 zlnp = zlnhead;
77 zlnhead = zlnhead->next;
78 free((char *)zlnp);
79 clri(&idesc, "UNREF", 1);
80 break;
81 }
77 if (zlnp->zlncnt == inumber) {
78 zlnp->zlncnt = zlnhead->zlncnt;
79 zlnp = zlnhead;
80 zlnhead = zlnhead->next;
81 free((char *)zlnp);
82 clri(&idesc, "UNREF", 1);
83 break;
84 }
82 }
83 break;
85 }
86 break;
84
87
85 case DSTATE:
86 clri(&idesc, "UNREF", 1);
87 break;
88 case DSTATE:
89 clri(&idesc, "UNREF", 1);
90 break;
88
91
89 case DCLEAR:
90 dp = ginode(inumber);
91 if (dp->di_size == 0) {
92 clri(&idesc, "ZERO LENGTH", 1);
92 case DCLEAR:
93 dp = ginode(inumber);
94 if (dp->di_size == 0) {
95 clri(&idesc, "ZERO LENGTH", 1);
96 break;
97 }
98 /* fall through */
99 case FCLEAR:
100 clri(&idesc, "BAD/DUP", 1);
93 break;
101 break;
94 }
95 /* fall through */
96 case FCLEAR:
97 clri(&idesc, "BAD/DUP", 1);
98 break;
99
102
100 case USTATE:
101 break;
103 case USTATE:
104 break;
102
105
103 default:
104 errx(EEXIT, "BAD STATE %d FOR INODE I=%d",
105 statemap[inumber], inumber);
106 default:
107 errx(EEXIT, "BAD STATE %d FOR INODE I=%d",
108 inoinfo(inumber)->ino_state, inumber);
109 }
106 }
107 }
108}
109
110int
111pass4check(idesc)
112 register struct inodesc *idesc;
113{

--- 25 unchanged lines hidden ---
110 }
111 }
112}
113
114int
115pass4check(idesc)
116 register struct inodesc *idesc;
117{

--- 25 unchanged lines hidden ---