pass4.c (7585) | pass4.c (23675) |
---|---|
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 |
35static const char sccsid[] = "@(#)pass4.c 8.1 (Berkeley) 6/5/93"; | 35static const char sccsid[] = "@(#)pass4.c 8.4 (Berkeley) 4/28/95"; |
36#endif /* not lint */ 37 38#include <sys/param.h> 39#include <sys/time.h> | 36#endif /* not lint */ 37 38#include <sys/param.h> 39#include <sys/time.h> |
40 |
|
40#include <ufs/ufs/dinode.h> 41#include <ufs/ffs/fs.h> | 41#include <ufs/ufs/dinode.h> 42#include <ufs/ffs/fs.h> |
42#include <stdlib.h> | 43 44#include <err.h> |
43#include <string.h> | 45#include <string.h> |
46 |
|
44#include "fsck.h" 45 | 47#include "fsck.h" 48 |
46int pass4check(); 47 | |
48void 49pass4() 50{ 51 register ino_t inumber; 52 register struct zlncnt *zlnp; 53 struct dinode *dp; 54 struct inodesc idesc; 55 int n; 56 | 49void 50pass4() 51{ 52 register ino_t inumber; 53 register struct zlncnt *zlnp; 54 struct dinode *dp; 55 struct inodesc idesc; 56 int n; 57 |
57 bzero((char *)&idesc, sizeof(struct inodesc)); | 58 memset(&idesc, 0, sizeof(struct inodesc)); |
58 idesc.id_type = ADDR; 59 idesc.id_func = pass4check; 60 for (inumber = ROOTINO; inumber <= lastino; inumber++) { 61 idesc.id_number = inumber; 62 switch (statemap[inumber]) { 63 64 case FSTATE: 65 case DFOUND: --- 27 unchanged lines hidden (view full) --- 93 case FCLEAR: 94 clri(&idesc, "BAD/DUP", 1); 95 break; 96 97 case USTATE: 98 break; 99 100 default: | 59 idesc.id_type = ADDR; 60 idesc.id_func = pass4check; 61 for (inumber = ROOTINO; inumber <= lastino; inumber++) { 62 idesc.id_number = inumber; 63 switch (statemap[inumber]) { 64 65 case FSTATE: 66 case DFOUND: --- 27 unchanged lines hidden (view full) --- 94 case FCLEAR: 95 clri(&idesc, "BAD/DUP", 1); 96 break; 97 98 case USTATE: 99 break; 100 101 default: |
101 errexit("BAD STATE %d FOR INODE I=%d", | 102 errx(EEXIT, "BAD STATE %d FOR INODE I=%d", |
102 statemap[inumber], inumber); 103 } 104 } 105} 106 107int 108pass4check(idesc) 109 register struct inodesc *idesc; 110{ 111 register struct dups *dlp; 112 int nfrags, res = KEEPON; | 103 statemap[inumber], inumber); 104 } 105 } 106} 107 108int 109pass4check(idesc) 110 register struct inodesc *idesc; 111{ 112 register struct dups *dlp; 113 int nfrags, res = KEEPON; |
113 daddr_t blkno = idesc->id_blkno; | 114 ufs_daddr_t blkno = idesc->id_blkno; |
114 115 for (nfrags = idesc->id_numfrags; nfrags > 0; blkno++, nfrags--) { 116 if (chkrange(blkno, 1)) { 117 res = SKIP; 118 } else if (testbmap(blkno)) { 119 for (dlp = duplist; dlp; dlp = dlp->next) { 120 if (dlp->dup != blkno) 121 continue; --- 14 unchanged lines hidden --- | 115 116 for (nfrags = idesc->id_numfrags; nfrags > 0; blkno++, nfrags--) { 117 if (chkrange(blkno, 1)) { 118 res = SKIP; 119 } else if (testbmap(blkno)) { 120 for (dlp = duplist; dlp; dlp = dlp->next) { 121 if (dlp->dup != blkno) 122 continue; --- 14 unchanged lines hidden --- |