numbers for inodes in a partial segment
SCCS-vsn: sbin/dumplfs/dumplfs.c 5.7
#endif /* not lint */
#ifndef lint
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)dumplfs.c 5.6 (Berkeley) %G%";
+static char sccsid[] = "@(#)dumplfs.c 5.7 (Berkeley) %G%";
#endif /* not lint */
#include <sys/param.h>
#endif /* not lint */
#include <sys/param.h>
static int dump_ipage_ifile __P((int, IFILE *, int));
static int dump_ipage_segusage __P((struct lfs *, int, IFILE *, int));
static void dump_segment __P((int, int, daddr_t, struct lfs *, int));
static int dump_ipage_ifile __P((int, IFILE *, int));
static int dump_ipage_segusage __P((struct lfs *, int, IFILE *, int));
static void dump_segment __P((int, int, daddr_t, struct lfs *, int));
-static int dump_sum __P((struct lfs *, SEGSUM *, int, daddr_t));
+static int dump_sum __P((int, struct lfs *, SEGSUM *, int, daddr_t));
static void dump_super __P((struct lfs *));
static void usage __P((void));
static void dump_super __P((struct lfs *));
static void usage __P((void));
-dump_sum(lfsp, sp, segnum, addr)
+dump_sum(fd, lfsp, sp, segnum, addr)
struct lfs *lfsp;
SEGSUM *sp;
struct lfs *lfsp;
SEGSUM *sp;
daddr_t addr;
{
FINFO *fp;
daddr_t addr;
{
FINFO *fp;
int i, j;
int ck;
int numblocks;
int i, j;
int ck;
int numblocks;
if (sp->ss_sumsum != (ck = cksum(&sp->ss_datasum,
LFS_SUMMARY_SIZE - sizeof(sp->ss_sumsum))))
if (sp->ss_sumsum != (ck = cksum(&sp->ss_datasum,
LFS_SUMMARY_SIZE - sizeof(sp->ss_sumsum))))
/* Dump out inode disk addresses */
dp = (daddr_t *)sp;
dp += LFS_SUMMARY_SIZE / sizeof(daddr_t);
/* Dump out inode disk addresses */
dp = (daddr_t *)sp;
dp += LFS_SUMMARY_SIZE / sizeof(daddr_t);
+ inop = malloc(1 << lfsp->lfs_bshift);
printf("\tInode addresses:");
printf("\tInode addresses:");
- for (dp--, i = 0; i < numblocks; i += INOPB(lfsp))
- printf("\t%X", *dp--);
+ for (dp--, i = 0; i < sp->ss_ninos; dp--) {
+ printf("\t%X {", *dp);
+ get(fd, *dp << (lfsp->lfs_bshift - lfsp->lfs_fsbtodb), inop,
+ (1 << lfsp->lfs_bshift));
+ for (j = 0; i < sp->ss_ninos && j < INOPB(lfsp); j++, i++) {
+ if (j > 0)
+ (void)printf(", ");
+ (void)printf("%d", inop[j].di_inum);
+ }
+ (void)printf("}");
+ if (((i/INOPB(lfsp)) % 4) == 3)
+ (void)printf("\n");
+ }
+ free(inop);
printf("\n");
for (fp = (FINFO *)(sp + 1), i = 0; i < sp->ss_nfinfo; i++) {
printf("\n");
for (fp = (FINFO *)(sp + 1), i = 0; i < sp->ss_nfinfo; i++) {
- nblocks = dump_sum(lfsp, sump, segnum, addr);
+ nblocks = dump_sum(fd, lfsp, sump, segnum, addr);
- sum_offset += (nblocks << lfsp->lfs_bshift);
+ sum_offset += LFS_SUMMARY_SIZE +
+ (nblocks << lfsp->lfs_bshift);
else
sum_offset = 0;
did_one = 1;
else
sum_offset = 0;
did_one = 1;