- printf("cpg\t%d\nfpg\t%d\nipg\t%d\n",
- afs.fs_cpg, afs.fs_fpg, afs.fs_ipg);
- printf("nffree\t%d\nnbfree\t%d\nnifree\t%d\n",
- afs.fs_nffree, afs.fs_nbfree, afs.fs_nifree);
- printf("cs[].cs_(nbfree,ndir,nifree):\n\t");
- fscs = (struct csum *)calloc(afs.fs_ncg, sizeof (struct csum));
- lseek(0, csaddr(&afs)*FSIZE, 0);
- if (read(0, fscs, cssize(&afs)) != cssize(&afs))
- perror(argv[1]), exit(1);
+ printf("cpg\t%d\tbpg\t%d\tfpg\t%d\tipg\t%d\n",
+ afs.fs_cpg, afs.fs_fpg / afs.fs_frag, afs.fs_fpg, afs.fs_ipg);
+ printf("nbfree\t%d\tndir\t%d\tnifree\t%d\tnffree\t%d\n",
+ afs.fs_cstotal.cs_nbfree, afs.fs_cstotal.cs_ndir,
+ afs.fs_cstotal.cs_nifree, afs.fs_cstotal.cs_nffree);
+ printf("cgrotor\t%d\tfmod\t%d\tronly\t%d\n",
+ afs.fs_cgrotor, afs.fs_fmod, afs.fs_ronly);
+ if (afs.fs_cpc != 0)
+ printf("blocks available in each rotational position");
+ else
+ printf("insufficient space to maintain rotational tables\n");
+ for (c = 0; c < afs.fs_cpc; c++) {
+ printf("\ncylinder number %d:", c);
+ for (i = 0; i < NRPOS; i++) {
+ if (afs.fs_postbl[c][i] == -1)
+ continue;
+ printf("\n position %d:\t", i);
+ for (j = afs.fs_postbl[c][i], k = 1; ;
+ j += afs.fs_rotbl[j], k++) {
+ printf("%5d", j);
+ if (k % 12 == 0)
+ printf("\n\t\t");
+ if (afs.fs_rotbl[j] == 0)
+ break;
+ }
+ }
+ }
+ printf("\ncs[].cs_(nbfree,ndir,nifree,nffree):\n\t");
+ for (i = 0, j = 0; i < afs.fs_cssize; i += afs.fs_bsize, j++) {
+ size = afs.fs_cssize - i < afs.fs_bsize ?
+ afs.fs_cssize - i : afs.fs_bsize;
+ afs.fs_csp[j] = (struct csum *)calloc(1, size);
+ lseek(0, fsbtodb(&afs, (afs.fs_csaddr + j * afs.fs_frag)) *
+ DEV_BSIZE, 0);
+ if (read(0, afs.fs_csp[j], size) != size)
+ perror(argv[1]), exit(1);
+ }