Apply IINFO in the other userland tools.

This commit is contained in:
dholland 2015-10-03 08:28:46 +00:00
parent c4e7149610
commit 7f7a5fa1e3
2 changed files with 22 additions and 27 deletions

View File

@ -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)

View File

@ -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);