60
/* *********************************************************** GLOBALS ***** */
61
static FILE *dbg_log=NULL;
62
static unsigned int indent=0;
59
static FILE *dbg_log = NULL;
60
static unsigned int indent = 0;
65
63
* prototypes not done here, as they come with debug.h
68
/* ********************************************************** dbg_open ***** */
70
67
* Open the filehandle where all debug output has to go.
76
73
if (strcmp(fn, "-") == 0)
77
dbg_log=fopen("/dev/stdout", "a");
74
dbg_log = fopen("/dev/stdout", "a");
79
dbg_log=fopen(fn, "a");
76
dbg_log = fopen(fn, "a");
84
/* ********************************************************* dbg_close ***** */
86
82
* Close the filehandle where all debug output went to.
112
107
fprintf(dbg_log, "===== START HEXDUMP =====\n");
113
108
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)mem, comment);
115
for (i=0; i<sb->fs_bsize; i+=24) {
116
for (j=0; j<3; j++) {
117
for (k=0; k<8; k++) {
110
for (i = 0; i < sb->fs_bsize; i += 24) {
111
for (j = 0; j < 3; j++) {
112
for (k = 0; k < 8; k++)
118
113
fprintf(dbg_log, "%02x ", *mem++);
120
114
fprintf(dbg_log, " ");
122
116
fprintf(dbg_log, "\n");
130
/* ******************************************************* dbg_dump_fs ***** */
132
125
* Dump the superblock.
135
128
dbg_dump_fs(struct fs *sb, const char *comment)
139
#endif /* FSMAXSNAP */
145
135
fprintf(dbg_log, "===== START SUPERBLOCK =====\n");
146
136
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)sb, comment);
282
272
fprintf(dbg_log, "maxbsize int32_t 0x%08x\n",
283
273
sb->fs_maxbsize);
284
fprintf(dbg_log, "unrefs int64_t 0x%08x\n",
274
fprintf(dbg_log, "unrefs int64_t 0x%08jx\n",
286
276
fprintf(dbg_log, "sblockloc int64_t 0x%08x%08x\n",
287
277
((unsigned int *)&(sb->fs_sblockloc))[1],
307
297
fprintf(dbg_log, "pendinginodes int32_t 0x%08x\n",
308
298
sb->fs_pendinginodes);
311
for(j=0; j<FSMAXSNAP; j++) {
300
for (j = 0; j < FSMAXSNAP; j++) {
312
301
fprintf(dbg_log, "snapinum int32_t[%2d] 0x%08x\n",
313
302
j, sb->fs_snapinum[j]);
314
if(!sb->fs_snapinum[j]) { /* list is dense */
303
if (!sb->fs_snapinum[j]) { /* list is dense */
318
#endif /* FSMAXSNAP */
319
307
fprintf(dbg_log, "avgfilesize int32_t 0x%08x\n",
320
308
sb->fs_avgfilesize);
321
309
fprintf(dbg_log, "avgfpdir int32_t 0x%08x\n",
372
358
fprintf(dbg_log, "===== START CYLINDER GROUP =====\n");
373
359
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)cgr, comment);
383
369
fprintf(dbg_log, "rotor int32_t 0x%08x\n", cgr->cg_rotor);
384
370
fprintf(dbg_log, "frotor int32_t 0x%08x\n", cgr->cg_frotor);
385
371
fprintf(dbg_log, "irotor int32_t 0x%08x\n", cgr->cg_irotor);
386
for(j=0; j<MAXFRAG; j++) {
372
for (j = 0; j < MAXFRAG; j++) {
387
373
fprintf(dbg_log, "frsum int32_t[%d] 0x%08x\n", j,
388
374
cgr->cg_frsum[j]);
419
404
dbg_dump_csum(const char *comment, struct csum *cs)
426
410
fprintf(dbg_log, "===== START CYLINDER SUMMARY =====\n");
427
411
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)cs, comment);
446
429
dbg_dump_csum_total(const char *comment, struct csum_total *cs)
453
435
fprintf(dbg_log, "===== START CYLINDER SUMMARY TOTAL =====\n");
454
436
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)cs, comment);
486
467
unsigned char *cp;
492
472
fprintf(dbg_log, "===== START INODE ALLOCATION MAP =====\n");
493
473
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)cgr, comment);
496
cp=(unsigned char *)cg_inosused(cgr);
498
for(j=0; j<e; j+=32) {
476
cp = (unsigned char *)cg_inosused(cgr);
478
for (j = 0; j < e; j += 32) {
499
479
fprintf(dbg_log, "%08x: ", j);
500
for(k=0; k<32; k+=8) {
480
for (k = 0; k < 32; k += 8) {
503
483
"%02x%02x%02x%02x%02x%02x%02x%02x ",
504
484
cp[0], cp[1], cp[2], cp[3],
505
485
cp[4], cp[5], cp[6], cp[7]);
507
for(l=0; (l<8)&&(j+k+l<e); l++) {
487
for (l = 0; (l < 8) && (j + k + l < e); l++) {
508
488
fprintf(dbg_log, "%02x", cp[l]);
513
493
fprintf(dbg_log, "\n");
531
510
unsigned char *cp;
537
515
fprintf(dbg_log, "===== START FRAGMENT ALLOCATION MAP =====\n");
538
516
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)cgr, comment);
541
cp=(unsigned char *)cg_blksfree(cgr);
519
cp = (unsigned char *)cg_blksfree(cgr);
542
520
if (sb->fs_old_nspf)
543
e=howmany((sb->fs_old_cpg * sb->fs_old_spc / sb->fs_old_nspf), CHAR_BIT);
521
e = howmany((sb->fs_old_cpg * sb->fs_old_spc / sb->fs_old_nspf), CHAR_BIT);
546
for(j=0; j<e; j+=32) {
524
for (j = 0; j < e; j += 32) {
547
525
fprintf(dbg_log, "%08x: ", j);
548
for(k=0; k<32; k+=8) {
526
for (k = 0; k < 32; k += 8) {
551
529
"%02x%02x%02x%02x%02x%02x%02x%02x ",
552
530
cp[0], cp[1], cp[2], cp[3],
553
531
cp[4], cp[5], cp[6], cp[7]);
555
for(l=0; (l<8)&&(j+k+l<e); l++) {
533
for (l = 0; (l < 8) && (j + k + l < e); l++) {
556
534
fprintf(dbg_log, "%02x", cp[l]);
561
539
fprintf(dbg_log, "\n");
578
555
unsigned char *cp;
584
560
fprintf(dbg_log, "===== START CLUSTER ALLOCATION MAP =====\n");
585
561
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)cgr, comment);
588
cp=(unsigned char *)cg_clustersfree(cgr);
564
cp = (unsigned char *)cg_clustersfree(cgr);
589
565
if (sb->fs_old_nspf)
590
e=howmany(sb->fs_old_cpg * sb->fs_old_spc / (sb->fs_old_nspf << sb->fs_fragshift), CHAR_BIT);
566
e = howmany(sb->fs_old_cpg * sb->fs_old_spc / (sb->fs_old_nspf << sb->fs_fragshift), CHAR_BIT);
593
for(j=0; j<e; j+=32) {
569
for (j = 0; j < e; j += 32) {
594
570
fprintf(dbg_log, "%08x: ", j);
595
for(k=0; k<32; k+=8) {
571
for (k = 0; k < 32; k += 8) {
598
574
"%02x%02x%02x%02x%02x%02x%02x%02x ",
599
575
cp[0], cp[1], cp[2], cp[3],
600
576
cp[4], cp[5], cp[6], cp[7]);
602
for(l=0; (l<8)&&(j+k+l<e); l++) {
578
for (l = 0; (l < 8) && (j + k + l <e); l++) {
603
579
fprintf(dbg_log, "%02x", cp[l]);
608
584
fprintf(dbg_log, "\n");
631
605
fprintf(dbg_log, "===== START CLUSTER SUMMARY =====\n");
632
606
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)cgr, comment);
635
ip=(int *)cg_clustersum(cgr);
636
for(j=0; j<=sb->fs_contigsumsize; j++) {
609
ip = (int *)cg_clustersum(cgr);
610
for (j = 0; j <= sb->fs_contigsumsize; j++) {
637
611
fprintf(dbg_log, "%02d: %8d\n", j, *ip++);
669
641
"===== START BLOCK SUMMARY AND POSITION TABLE =====\n");
670
642
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)cgr, comment);
673
ip=(int *)cg_blktot(cgr);
674
for(j=0; j<sb->fs_old_cpg; j++) {
645
ip = (int *)cg_blktot(cgr);
646
for (j = 0; j < sb->fs_old_cpg; j++) {
675
647
fprintf(dbg_log, "%2d: %5d = ", j, *ip++);
676
for(k=0; k<sb->fs_old_nrpos; k++) {
648
for (k = 0; k < sb->fs_old_nrpos; k++) {
677
649
fprintf(dbg_log, "%4d", cg_blks(sb, cgr, j)[k]);
678
if(k<sb->fs_old_nrpos-1) {
650
if (k < sb->fs_old_nrpos - 1)
679
651
fprintf(dbg_log, " + ");
682
653
fprintf(dbg_log, "\n");
700
670
int remaining_blocks;
706
675
fprintf(dbg_log, "===== START UFS1 INODE DUMP =====\n");
707
676
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)ino, comment);
723
692
fprintf(dbg_log, "ctimensec int32_t 0x%08x\n",
724
693
ino->di_ctimensec);
726
remaining_blocks=howmany(ino->di_size, sb->fs_bsize); /* XXX ts - +1? */
727
for(ictr=0; ictr < MIN(NDADDR, remaining_blocks); ictr++) {
695
remaining_blocks = howmany(ino->di_size, sb->fs_bsize); /* XXX ts - +1? */
696
for (ictr = 0; ictr < MIN(NDADDR, remaining_blocks); ictr++) {
728
697
fprintf(dbg_log, "db ufs_daddr_t[%x] 0x%08x\n", ictr,
729
698
ino->di_db[ictr]);
731
remaining_blocks-=NDADDR;
732
if(remaining_blocks>0) {
700
remaining_blocks -= NDADDR;
701
if (remaining_blocks > 0) {
733
702
fprintf(dbg_log, "ib ufs_daddr_t[0] 0x%08x\n",
736
remaining_blocks-=howmany(sb->fs_bsize, sizeof(ufs1_daddr_t));
737
if(remaining_blocks>0) {
705
remaining_blocks -= howmany(sb->fs_bsize, sizeof(ufs1_daddr_t));
706
if (remaining_blocks > 0) {
738
707
fprintf(dbg_log, "ib ufs_daddr_t[1] 0x%08x\n",
741
#define SQUARE(a) ((a)*(a))
742
remaining_blocks-=SQUARE(howmany(sb->fs_bsize, sizeof(ufs1_daddr_t)));
710
#define SQUARE(a) ((a) * (a))
711
remaining_blocks -= SQUARE(howmany(sb->fs_bsize, sizeof(ufs1_daddr_t)));
744
if(remaining_blocks>0) {
713
if (remaining_blocks > 0) {
745
714
fprintf(dbg_log, "ib ufs_daddr_t[2] 0x%08x\n",
769
737
int remaining_blocks;
775
742
fprintf(dbg_log, "===== START UFS2 INODE DUMP =====\n");
776
743
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)ino, comment);
785
752
((unsigned int *)&(ino->di_size))[1],
786
753
((unsigned int *)&(ino->di_size))[0]);
787
754
fprintf(dbg_log, "blocks u_int64_t 0x%08x%08x\n",
788
((unsigned int *)&(ino->di_blocks))[1],
789
((unsigned int *)&(ino->di_blocks))[0]);
755
((unsigned int *)&(ino->di_blocks))[1],
756
((unsigned int *)&(ino->di_blocks))[0]);
790
757
fprintf(dbg_log, "atime ufs_time_t %10jd\n", ino->di_atime);
791
758
fprintf(dbg_log, "mtime ufs_time_t %10jd\n", ino->di_mtime);
792
759
fprintf(dbg_log, "ctime ufs_time_t %10jd\n", ino->di_ctime);
803
770
/* XXX: What do we do with di_extb[NXADDR]? */
805
remaining_blocks=howmany(ino->di_size, sb->fs_bsize); /* XXX ts - +1? */
806
for(ictr=0; ictr < MIN(NDADDR, remaining_blocks); ictr++) {
772
remaining_blocks = howmany(ino->di_size, sb->fs_bsize); /* XXX ts - +1? */
773
for (ictr = 0; ictr < MIN(NDADDR, remaining_blocks); ictr++) {
807
774
fprintf(dbg_log, "db ufs2_daddr_t[%x] 0x%16jx\n", ictr,
808
775
ino->di_db[ictr]);
810
remaining_blocks-=NDADDR;
811
if(remaining_blocks>0) {
777
remaining_blocks -= NDADDR;
778
if (remaining_blocks > 0) {
812
779
fprintf(dbg_log, "ib ufs2_daddr_t[0] 0x%16jx\n",
815
remaining_blocks-=howmany(sb->fs_bsize, sizeof(ufs2_daddr_t));
816
if(remaining_blocks>0) {
782
remaining_blocks -= howmany(sb->fs_bsize, sizeof(ufs2_daddr_t));
783
if (remaining_blocks > 0) {
817
784
fprintf(dbg_log, "ib ufs2_daddr_t[1] 0x%16jx\n",
820
#define SQUARE(a) ((a)*(a))
821
remaining_blocks-=SQUARE(howmany(sb->fs_bsize, sizeof(ufs2_daddr_t)));
787
#define SQUARE(a) ((a) * (a))
788
remaining_blocks -= SQUARE(howmany(sb->fs_bsize, sizeof(ufs2_daddr_t)));
823
if(remaining_blocks>0) {
790
if (remaining_blocks > 0) {
824
791
fprintf(dbg_log, "ib ufs2_daddr_t[2] 0x%16jx\n",
842
808
unsigned int *mem, i, j, size;
848
813
fprintf(dbg_log, "===== START INDIRECT BLOCK DUMP =====\n");
849
814
fprintf(dbg_log, "# %d@%lx: %s\n", indent, (unsigned long)block,
856
821
size = sizeof(ufs2_daddr_t);
858
mem=(unsigned int *)block;
859
for (i=0; (size_t)i<MIN(howmany(sb->fs_bsize, size),
823
mem = (unsigned int *)block;
824
for (i = 0; (size_t)i < MIN(howmany(sb->fs_bsize, size), length);
861
826
fprintf(dbg_log, "%04x: ", i);
862
for (j=0; j<8; j++) {
863
if((size_t)(i+j)<length) {
827
for (j = 0; j < 8; j++) {
828
if ((size_t)(i + j) < length)
864
829
fprintf(dbg_log, "%08X ", *mem++);
867
831
fprintf(dbg_log, "\n");