Apply IINFO in the other userland tools.
This commit is contained in:
parent
c4e7149610
commit
7f7a5fa1e3
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: lfs.c,v 1.63 2015/09/01 06:15:02 dholland Exp $ */
|
||||
/* $NetBSD: lfs.c,v 1.64 2015/10/03 08:28:46 dholland Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 2003 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
|
@ -761,7 +761,7 @@ check_summary(struct lfs *fs, SEGSUM *sp, daddr_t pseg_addr, int debug,
|
|||
int bc; /* Bytes in partial segment */
|
||||
int nblocks;
|
||||
daddr_t daddr;
|
||||
uint32_t *dp, *idp; // XXX ondisk32
|
||||
IINFO *iibase, *iip;
|
||||
struct ubuf *bp;
|
||||
int i, j, k, datac, len;
|
||||
u_int32_t *datap;
|
||||
|
@ -787,26 +787,25 @@ check_summary(struct lfs *fs, SEGSUM *sp, daddr_t pseg_addr, int debug,
|
|||
datap = emalloc(nblocks * sizeof(*datap));
|
||||
datac = 0;
|
||||
|
||||
dp = (uint32_t *) sp; /* XXX ondisk32 */
|
||||
dp += lfs_sb_getsumsize(fs) / sizeof(*dp);
|
||||
dp--;
|
||||
iibase = SEGSUM_IINFOSTART(fs, sp);
|
||||
|
||||
idp = dp;
|
||||
iip = iibase;
|
||||
daddr = pseg_addr + lfs_btofsb(fs, lfs_sb_getsumsize(fs));
|
||||
fp = (FINFO *) (sp + 1);
|
||||
for (i = 0, j = 0;
|
||||
i < lfs_ss_getnfinfo(fs, sp) || j < howmany(lfs_ss_getninos(fs, sp), LFS_INOPB(fs)); i++) {
|
||||
if (i >= lfs_ss_getnfinfo(fs, sp) && *idp != daddr) {
|
||||
if (i >= lfs_ss_getnfinfo(fs, sp) && lfs_ii_getblock(fs, iip) != daddr) {
|
||||
pwarn("Not enough inode blocks in pseg at 0x%jx: "
|
||||
"found %d, wanted %d\n",
|
||||
pseg_addr, j, howmany(lfs_ss_getninos(fs, sp),
|
||||
LFS_INOPB(fs)));
|
||||
if (debug)
|
||||
pwarn("*idp=0x%jx, daddr=0x%jx\n",
|
||||
(uintmax_t)*idp, (intmax_t)daddr);
|
||||
pwarn("iip=0x%jx, daddr=0x%jx\n",
|
||||
(uintmax_t)lfs_ii_getblock(fs, iip),
|
||||
(intmax_t)daddr);
|
||||
break;
|
||||
}
|
||||
while (j < howmany(lfs_ss_getninos(fs, sp), LFS_INOPB(fs)) && *idp == daddr) {
|
||||
while (j < howmany(lfs_ss_getninos(fs, sp), LFS_INOPB(fs)) && lfs_ii_getblock(fs, iip) == daddr) {
|
||||
bread(devvp, LFS_FSBTODB(fs, daddr), lfs_sb_getibsize(fs),
|
||||
0, &bp);
|
||||
datap[datac++] = ((u_int32_t *) (bp->b_data))[0];
|
||||
|
@ -814,7 +813,7 @@ check_summary(struct lfs *fs, SEGSUM *sp, daddr_t pseg_addr, int debug,
|
|||
|
||||
++j;
|
||||
daddr += lfs_btofsb(fs, lfs_sb_getibsize(fs));
|
||||
--idp;
|
||||
iip = NEXTLOWER_IINFO(fs, iip);
|
||||
}
|
||||
if (i < lfs_ss_getnfinfo(fs, sp)) {
|
||||
if (func)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: dumplfs.c,v 1.57 2015/09/01 06:12:04 dholland Exp $ */
|
||||
/* $NetBSD: dumplfs.c,v 1.58 2015/10/03 08:28:46 dholland Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1991, 1993
|
||||
|
@ -40,7 +40,7 @@ __COPYRIGHT("@(#) Copyright (c) 1991, 1993\
|
|||
#if 0
|
||||
static char sccsid[] = "@(#)dumplfs.c 8.5 (Berkeley) 5/24/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: dumplfs.c,v 1.57 2015/09/01 06:12:04 dholland Exp $");
|
||||
__RCSID("$NetBSD: dumplfs.c,v 1.58 2015/10/03 08:28:46 dholland Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
|
@ -502,7 +502,7 @@ static int
|
|||
dump_sum(int fd, struct lfs *lfsp, SEGSUM *sp, int segnum, daddr_t addr)
|
||||
{
|
||||
FINFO *fp;
|
||||
int32_t *dp, *idp;
|
||||
IINFO *iip, *iip2;
|
||||
union lfs_blocks fipblocks;
|
||||
int i, j, acc;
|
||||
int ck;
|
||||
|
@ -560,18 +560,16 @@ dump_sum(int fd, struct lfs *lfsp, SEGSUM *sp, int segnum, daddr_t addr)
|
|||
}
|
||||
|
||||
/* Dump out inode disk addresses */
|
||||
/* XXX ondisk32 */
|
||||
dp = (int32_t *)sp;
|
||||
dp += lfs_sb_getsumsize(lfsp) / sizeof(int32_t);
|
||||
iip = SEGSUM_IINFOSTART(lfsp, sp);
|
||||
diblock = malloc(lfs_sb_getbsize(lfsp));
|
||||
printf(" Inode addresses:");
|
||||
numbytes = 0;
|
||||
numblocks = 0;
|
||||
for (dp--, i = 0; i < lfs_ss_getninos(lfsp, sp); dp--) {
|
||||
for (i = 0; i < lfs_ss_getninos(lfsp, sp); iip = NEXTLOWER_IINFO(lfsp, iip)) {
|
||||
++numblocks;
|
||||
numbytes += lfs_sb_getibsize(lfsp); /* add bytes for inode block */
|
||||
printf("\t0x%x {", *dp);
|
||||
get(fd, fsbtobyte(lfsp, *dp), diblock, lfs_sb_getibsize(lfsp));
|
||||
printf("\t0x%jx {", (intmax_t)lfs_ii_getblock(lfsp, iip));
|
||||
get(fd, fsbtobyte(lfsp, lfs_ii_getblock(lfsp, iip)), diblock, lfs_sb_getibsize(lfsp));
|
||||
for (j = 0; i < lfs_ss_getninos(lfsp, sp) && j < LFS_INOPB(lfsp); j++, i++) {
|
||||
if (j > 0)
|
||||
(void)printf(", ");
|
||||
|
@ -619,9 +617,7 @@ dump_sum(int fd, struct lfs *lfsp, SEGSUM *sp, int segnum, daddr_t addr)
|
|||
* compute the data checksum. (A bad data checksum is not enough
|
||||
* to prevent us from continuing, but it odes merit a warning.)
|
||||
*/
|
||||
idp = (int32_t *)sp;
|
||||
idp += lfs_sb_getsumsize(lfsp) / sizeof(int32_t);
|
||||
--idp;
|
||||
iip2 = SEGSUM_IINFOSTART(lfsp, sp);
|
||||
if (lfs_sb_getversion(lfsp) == 1) {
|
||||
fp = (FINFO *)((SEGSUM_V1 *)sp + 1);
|
||||
el_size = sizeof(unsigned long);
|
||||
|
@ -635,11 +631,11 @@ dump_sum(int fd, struct lfs *lfsp, SEGSUM *sp, int segnum, daddr_t addr)
|
|||
addr += lfs_btofsb(lfsp, lfs_sb_getsumsize(lfsp));
|
||||
buf = malloc(lfs_sb_getbsize(lfsp));
|
||||
for (i = 0; i < lfs_ss_getnfinfo(lfsp, sp); i++) {
|
||||
while (addr == *idp) {
|
||||
while (addr == lfs_ii_getblock(lfsp, iip2)) {
|
||||
get(fd, fsbtobyte(lfsp, addr), buf, lfs_sb_getibsize(lfsp));
|
||||
memcpy(datap + acc * el_size, buf, el_size);
|
||||
addr += lfs_btofsb(lfsp, lfs_sb_getibsize(lfsp));
|
||||
--idp;
|
||||
iip2 = NEXTLOWER_IINFO(lfsp, iip2);
|
||||
++acc;
|
||||
}
|
||||
for (j = 0; j < lfs_fi_getnblocks(lfsp, fp); j++) {
|
||||
|
@ -653,11 +649,11 @@ dump_sum(int fd, struct lfs *lfsp, SEGSUM *sp, int segnum, daddr_t addr)
|
|||
}
|
||||
fp = NEXT_FINFO(lfsp, fp);
|
||||
}
|
||||
while (addr == *idp) {
|
||||
while (addr == lfs_ii_getblock(lfsp, iip2)) {
|
||||
get(fd, fsbtobyte(lfsp, addr), buf, lfs_sb_getibsize(lfsp));
|
||||
memcpy(datap + acc * el_size, buf, el_size);
|
||||
addr += lfs_btofsb(lfsp, lfs_sb_getibsize(lfsp));
|
||||
--idp;
|
||||
iip2 = NEXTLOWER_IINFO(lfsp, iip2);
|
||||
++acc;
|
||||
}
|
||||
free(buf);
|
||||
|
|
Loading…
Reference in New Issue