1*4253Smckusic static char *sccsid = "@(#)dumpfs.c 1.2 (Berkeley) 08/28/81"; 24244Smckusick #include "../h/param.h" 34244Smckusick #include "../h/fs.h" 4*4253Smckusic #include "../h/inode.h" 54244Smckusick 64244Smckusick /* 74244Smckusick * dumpfs 84244Smckusick */ 94244Smckusick 104244Smckusick union { 114244Smckusick struct fs fs; 124244Smckusick char pad[BSIZE]; 134244Smckusick } fsun; 144244Smckusick #define afs fsun.fs 154244Smckusick 164244Smckusick struct csum *fscs; 174244Smckusick 184244Smckusick union { 194244Smckusick struct cg cg; 204244Smckusick char pad[BSIZE]; 214244Smckusick } cgun; 224244Smckusick #define acg cgun.cg 234244Smckusick 244244Smckusick main(argc, argv) 254244Smckusick char **argv; 264244Smckusick { 274244Smckusick int i; 284244Smckusick 294244Smckusick close(0); 304244Smckusick if (open(argv[1], 0) != 0) 314244Smckusick perror(argv[1]), exit(1); 324244Smckusick lseek(0, SBLOCK*FSIZE, 0); 334244Smckusick if (read(0, &afs, BSIZE) != BSIZE) 344244Smckusick perror(argv[1]), exit(1); 354244Smckusick printf("magic\t%x\n", afs.fs_magic); 364244Smckusick printf("sblkno\t%d\n", afs.fs_sblkno); 374244Smckusick printf("time\t%s", ctime(&afs.fs_time)); 384244Smckusick printf("size\t%d\n", afs.fs_size); 394244Smckusick printf("ncg\t%d\n", afs.fs_ncg); 404244Smckusick printf("cssize\t%d\n", afs.fs_cssize); 414244Smckusick printf("cgsize\t%d\n", afs.fs_cgsize); 424244Smckusick printf("ntrak\t%d\nnsect\t%d\nspc\t%d\nncyl\t%d\n", 434244Smckusick afs.fs_ntrak, afs.fs_nsect, afs.fs_spc, afs.fs_ncyl); 444244Smckusick printf("cpg\t%d\nfpg\t%d\nipg\t%d\n", 454244Smckusick afs.fs_cpg, afs.fs_fpg, afs.fs_ipg); 464244Smckusick printf("nffree\t%d\nnbfree\t%d\nnifree\t%d\n", 474244Smckusick afs.fs_nffree, afs.fs_nbfree, afs.fs_nifree); 484244Smckusick printf("cs[].cs_(nbfree,ndir,nifree):\n\t"); 494244Smckusick fscs = (struct csum *)calloc(afs.fs_ncg, sizeof (struct csum)); 504244Smckusick lseek(0, csaddr(&afs)*FSIZE, 0); 514244Smckusick if (read(0, fscs, cssize(&afs)) != cssize(&afs)) 524244Smckusick perror(argv[1]), exit(1); 534244Smckusick for (i = 0; i < afs.fs_ncg; i++) { 544244Smckusick struct csum *cs = fscs+i; 554244Smckusick if (i && i % 5 == 0) 564244Smckusick printf("\n\t"); 574244Smckusick printf("(%d,%d,%d) ", 584244Smckusick cs->cs_nbfree, cs->cs_ndir, cs->cs_nifree); 594244Smckusick } 604244Smckusick printf("\n"); 614244Smckusick printf("fmod\t%d\n", afs.fs_fmod); 624244Smckusick printf("ronly\t%d\n", afs.fs_ronly); 634244Smckusick printf("\n"); 644244Smckusick for (i = 0; i < afs.fs_ncg; i++) 654244Smckusick dumpcg(i); 664244Smckusick }; 674244Smckusick 684244Smckusick dumpcg(c) 694244Smckusick int c; 704244Smckusick { 714244Smckusick int i,j; 724244Smckusick 734244Smckusick printf("\ncg %d:\n", c); 744244Smckusick lseek(0, cgtod(c,&afs)*FSIZE, 0); 754244Smckusick printf("tell\t%x\n", tell(0)); 764244Smckusick if (read(0, (char *)&acg, afs.fs_cgsize) != afs.fs_cgsize) { 774244Smckusick printf("\terror reading cg\n"); 784244Smckusick return; 794244Smckusick } 804244Smckusick printf("magic\t%x\ntime\t%s", acg.cg_magic, ctime(&acg.cg_time)); 814244Smckusick printf("cgx\t%d\nncyl\t%d\nniblk\t%d\nndblk\t%d\n", 824244Smckusick acg.cg_cgx, acg.cg_ncyl, acg.cg_niblk, acg.cg_ndblk); 834244Smckusick printf("nifree\t%d\nndir\t%d\nnffree\t%d\nnbfree\t%d\n", 844244Smckusick acg.cg_nifree, acg.cg_ndir, acg.cg_nffree, acg.cg_nbfree); 854244Smckusick printf("iused:\t"); 864244Smckusick pbits(acg.cg_iused, afs.fs_ipg); 874244Smckusick printf("free:\t"); 884244Smckusick pbits(acg.cg_free, afs.fs_fpg); 894244Smckusick printf("b:\n"); 904244Smckusick for (i = 0; i < afs.fs_cpg; i++) { 914244Smckusick printf(" c%d:\t", i); 924244Smckusick for (j = 0; j < NRPOS; j++) 934244Smckusick printf(" %d", acg.cg_b[i][j]); 944244Smckusick printf("\n"); 954244Smckusick } 964244Smckusick }; 974244Smckusick 984244Smckusick #define isset(cp,i) (cp)[(i)/NBBY]&(1<<((i)%NBBY)) 994244Smckusick 1004244Smckusick pbits(cp, max) 1014244Smckusick register char *cp; 1024244Smckusick int max; 1034244Smckusick { 1044244Smckusick register int i; 1054244Smckusick int count = 0, j; 1064244Smckusick 1074244Smckusick for (i = 0; i < max; i++) 1084244Smckusick if (isset(cp, i)) { 1094244Smckusick if (count) 1104244Smckusick printf(",%s", count %10 == 9 ? "\n\t" : " "); 1114244Smckusick count++; 1124244Smckusick printf("%d", i); 1134244Smckusick j = i; 1144244Smckusick while ((i+1)<max && isset(cp, i+1)) 1154244Smckusick i++; 1164244Smckusick if (i != j) 1174244Smckusick printf("-%d", i); 1184244Smckusick } 1194244Smckusick printf("\n"); 1204244Smckusick } 121