static char *sccsid
= "@(#)traverse.c 1.8 (Berkeley) %G%";
maxino
= sblock
->fs_ipg
* sblock
->fs_ncg
- 1;
for (ino
= 0; ino
< maxino
; ) {
if ((ip
->di_mtime
>= spcl
.c_ddate
|| ip
->di_ctime
>= spcl
.c_ddate
) &&
if (f
!= IFREG
&& f
!= IFDIR
&& f
!= IFLNK
) {
register struct dinode
*ip
;
for (i
= 0; i
< NDADDR
; i
++) {
dsrch(ip
->di_db
[i
], dblksize(sblock
, ip
, i
));
for (i
= 0; i
< NIADDR
; i
++) {
daddr_t idblk
[MAXNINDIR
];
bread(fsbtodb(sblock
, d
), (char *)idblk
, sblock
->fs_bsize
);
for(i
=0; i
< NINDIR(sblock
); i
++) {
dsrch(d
, sblock
->fs_bsize
);
for(i
=0; i
< NINDIR(sblock
); i
++) {
if ((i
!= IFDIR
&& i
!= IFREG
&& i
!= IFLNK
) || ip
->di_size
== 0) {
if (ip
->di_size
> NDADDR
* sblock
->fs_bsize
)
i
= NDADDR
* sblock
->fs_frag
;
i
= howmany(ip
->di_size
, sblock
->fs_fsize
);
blksout(&ip
->di_db
[0], i
);
size
= ip
->di_size
- NDADDR
* sblock
->fs_bsize
;
for (i
= 0; i
< NIADDR
; i
++) {
dmpindir(ip
->di_ib
[i
], i
, &size
);
daddr_t idblk
[MAXNINDIR
];
bread(fsbtodb(sblock
, blk
), (char *)idblk
, sblock
->fs_bsize
);
blkclr(idblk
, sblock
->fs_bsize
);
if (*size
< NINDIR(sblock
) * sblock
->fs_bsize
)
cnt
= howmany(*size
, sblock
->fs_fsize
);
cnt
= NINDIR(sblock
) * sblock
->fs_frag
;
*size
-= NINDIR(sblock
) * sblock
->fs_bsize
;
for (i
= 0; i
< NINDIR(sblock
); i
++) {
dmpindir(idblk
[i
], lvl
, size
);
int i
, j
, count
, blks
, tbperdb
;
blks
= frags
* BLKING(sblock
);
tbperdb
= BLKING(sblock
) * sblock
->fs_frag
;
for (i
= 0; i
< blks
; i
+= TP_NINDIR
) {
if (i
+ TP_NINDIR
> blks
)
for (j
= i
; j
< count
; j
++)
if (blkp
[j
/ tbperdb
] != 0)
spcl
.c_count
= count
- i
;
for (j
= i
; j
< count
; j
+= tbperdb
)
if (blkp
[j
/ tbperdb
] != 0)
if (j
+ tbperdb
<= count
)
dmpblk(blkp
[j
/ tbperdb
],
dmpblk(blkp
[j
/ tbperdb
],
for (i
= 0; i
< msiz
; i
++)
spcl
.c_count
= howmany(n
* sizeof(map
[0]), TP_BSIZE
);
for (i
= 0, cp
= map
; i
< spcl
.c_count
; i
++, cp
+= TP_BSIZE
)
for(i
= 0; i
< sizeof(union u_spcl
)/sizeof(int); i
++)
spcl
.c_checksum
= CHECKSUM
- s
;
register struct direct
*dp
;
bread(fsbtodb(sblock
, d
), dblk
, size
);
for (loc
= 0; loc
< size
; ) {
dp
= (struct direct
*)(dblk
+ loc
);
if(dp
->d_name
[0] == '.') {
if(dp
->d_name
[1] == '\0')
if(dp
->d_name
[1] == '.' && dp
->d_name
[2] == '\0')
if(BIT(dp
->d_ino
, nodmap
)) {
if(BIT(dp
->d_ino
, dirmap
))
static daddr_t minino
, maxino
;
static struct dinode itab
[MAXINOPB
];
if (ino
>= minino
&& ino
< maxino
) {
return (&itab
[ino
- minino
]);
bread(fsbtodb(sblock
, itod(sblock
, ino
)), itab
, sblock
->fs_bsize
);
minino
= ino
- (ino
% INOPB(sblock
));
maxino
= minino
+ INOPB(sblock
);
return (&itab
[ino
- minino
]);
if (lseek(fi
, (long)(da
* DEV_BSIZE
), 0) < 0){
msg("bread: lseek fails\n");
regc
= c
; /* put c someplace safe; it gets clobbered */
if (n
!= c
|| regc
!= c
) {
msg("(This should not happen)bread from %s [block %d]: c=0x%x, regc=0x%x, &c=0x%x, n=0x%x\n",
disk
, da
, c
, regc
, &c
, n
);
msg("Notify Robert Henry of this error.\n");
if (++breaderrors
> BREADEMAX
){
msg("More than %d block read errors from %d\n",
broadcast("DUMP IS AILING!\n");
msg("This is an unrecoverable error.\n");
if (!query("Do you want to attempt to continue?")){
asm("movc5 $0,(r0),$0,8(ap),*4(ap)");