1/* 2 * Copyright (c) 2002 Networks Associates Technology, Inc. 3 * All rights reserved. 4 * 5 * This software was developed for the FreeBSD Project by Marshall 6 * Kirk McKusick and Network Associates Laboratories, the Security 7 * Research Division of Network Associates, Inc. under DARPA/SPAWAR 8 * contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA CHATS --- 40 unchanged lines hidden (view full) --- 49 The Regents of the University of California. All rights reserved.\n"; 50#endif /* not lint */ 51 52#ifndef lint 53#if 0 54static char sccsid[] = "@(#)dumpfs.c 8.5 (Berkeley) 4/29/95"; 55#endif 56static const char rcsid[] = |
57 "$FreeBSD: head/sbin/dumpfs/dumpfs.c 109532 2003-01-19 12:13:47Z jmallett $"; |
58#endif /* not lint */ 59 60#include <sys/param.h> 61#include <sys/time.h> 62#include <sys/disklabel.h> 63 64#include <ufs/ufs/dinode.h> 65#include <ufs/ffs/fs.h> --- 57 unchanged lines hidden (view full) --- 123 ufs_disk_close(&disk); 124 } 125 exit(eval); 126} 127 128int 129dumpfs(const char *name) 130{ |
131 time_t fstime; |
132 int64_t fssize; 133 int i; 134 135 switch (disk.d_ufs) { 136 case 2: 137 fssize = afs.fs_size; |
138 fstime = afs.fs_time; |
139 printf("magic\t%x (UFS2)\ttime\t%s", |
140 afs.fs_magic, ctime(&fstime)); |
141 printf("superblock location\t%qd\tid\t[ %x %x ]\n", 142 afs.fs_sblockloc, afs.fs_id[0], afs.fs_id[1]); |
143 printf("ncg\t%d\tsize\t%qd\tblocks\t%jd\n", 144 afs.fs_ncg, fssize, (intmax_t)afs.fs_dsize); |
145 break; 146 case 1: 147 fssize = afs.fs_old_size; |
148 fstime = afs.fs_old_time; |
149 printf("magic\t%x (UFS1)\ttime\t%s", |
150 afs.fs_magic, ctime(&fstime)); |
151 printf("id\t[ %x %x ]\n", afs.fs_id[0], afs.fs_id[1]); |
152 printf("ncg\t%d\tsize\t%qd\tblocks\t%jd\n", 153 afs.fs_ncg, fssize, (intmax_t)afs.fs_dsize); |
154 break; 155 default: |
156 goto err; |
157 } 158 printf("bsize\t%d\tshift\t%d\tmask\t0x%08x\n", 159 afs.fs_bsize, afs.fs_bshift, afs.fs_bmask); 160 printf("fsize\t%d\tshift\t%d\tmask\t0x%08x\n", 161 afs.fs_fsize, afs.fs_fshift, afs.fs_fmask); 162 printf("frag\t%d\tshift\t%d\tfsbtodb\t%d\n", 163 afs.fs_frag, afs.fs_fragshift, afs.fs_fsbtodb); 164 printf("minfree\t%d%%\toptim\t%s\tsymlinklen %d\n", --- 6 unchanged lines hidden (view full) --- 171 afs.fs_maxcontig, afs.fs_contigsumsize); 172 printf("nbfree\t%qd\tndir\t%qd\tnifree\t%qd\tnffree\t%qd\n", 173 afs.fs_cstotal.cs_nbfree, afs.fs_cstotal.cs_ndir, 174 afs.fs_cstotal.cs_nifree, afs.fs_cstotal.cs_nffree); 175 printf("bpg\t%d\tfpg\t%d\tipg\t%d\n", 176 afs.fs_fpg / afs.fs_frag, afs.fs_fpg, afs.fs_ipg); 177 printf("nindir\t%d\tinopb\t%d\tmaxfilesize\t%qu\n", 178 afs.fs_nindir, afs.fs_inopb, afs.fs_maxfilesize); |
179 printf("sbsize\t%d\tcgsize\t%d\tcsaddr\t%jd\tcssize\t%d\n", 180 afs.fs_sbsize, afs.fs_cgsize, (intmax_t)afs.fs_csaddr, 181 afs.fs_cssize); |
182 break; 183 case 1: 184 printf("maxbpg\t%d\tmaxcontig %d\tcontigsumsize %d\n", 185 afs.fs_maxbpg, afs.fs_maxcontig, afs.fs_contigsumsize); 186 printf("nbfree\t%d\tndir\t%d\tnifree\t%d\tnffree\t%d\n", 187 afs.fs_old_cstotal.cs_nbfree, afs.fs_old_cstotal.cs_ndir, 188 afs.fs_old_cstotal.cs_nifree, afs.fs_old_cstotal.cs_nffree); 189 printf("cpg\t%d\tbpg\t%d\tfpg\t%d\tipg\t%d\n", --- 9 unchanged lines hidden (view full) --- 199 afs.fs_old_csaddr, afs.fs_cssize); 200 printf("rotdelay %dms\trps\t%d\ttrackskew %d\tinterleave %d\n", 201 afs.fs_old_rotdelay, afs.fs_old_rps, afs.fs_old_trackskew, 202 afs.fs_old_interleave); 203 printf("nsect\t%d\tnpsect\t%d\tspc\t%d\n", 204 afs.fs_old_nsect, afs.fs_old_npsect, afs.fs_old_spc); 205 break; 206 default: |
207 goto err; |
208 } 209 printf("sblkno\t%d\tcblkno\t%d\tiblkno\t%d\tdblkno\t%d\n", 210 afs.fs_sblkno, afs.fs_cblkno, afs.fs_iblkno, afs.fs_dblkno); 211 printf("cgrotor\t%d\tfmod\t%d\tronly\t%d\tclean\t%d\n", 212 afs.fs_cgrotor, afs.fs_fmod, afs.fs_ronly, afs.fs_clean); 213 printf("flags\t"); 214 if (afs.fs_flags == 0) 215 printf("none"); --- 23 unchanged lines hidden (view full) --- 239 cs->cs_nbfree, cs->cs_ndir, cs->cs_nifree, cs->cs_nffree); 240 } 241 printf("\n"); 242 if (fssize % afs.fs_fpg) { 243 if (disk.d_ufs == 1) 244 printf("cylinders in last group %d\n", 245 howmany(afs.fs_old_size % afs.fs_fpg, 246 afs.fs_old_spc / afs.fs_old_nspf)); |
247 printf("blocks in last group %ld\n\n", 248 (long)((fssize % afs.fs_fpg) / afs.fs_frag)); |
249 } 250 while ((i = cgread(&disk)) != 0) { 251 if (i == -1 || dumpcg()) 252 goto err; 253 } 254 return (0); 255 256err: ufserr(name); 257 return (1); 258} 259 260int 261dumpcg(void) 262{ |
263 time_t cgtime; |
264 off_t cur; 265 int i, j; 266 267 printf("\ncg %d:\n", disk.d_lcg); 268 cur = fsbtodb(&afs, cgtod(&afs, disk.d_lcg)) * disk.d_bsize; 269 switch (disk.d_ufs) { 270 case 2: |
271 cgtime = acg.cg_time; |
272 printf("magic\t%x\ttell\t%qx\ttime\t%s", |
273 acg.cg_magic, cur, ctime(&cgtime)); |
274 printf("cgx\t%d\tndblk\t%d\tniblk\t%d\tinitiblk %d\n", 275 acg.cg_cgx, acg.cg_ndblk, acg.cg_niblk, acg.cg_initediblk); 276 break; 277 case 1: |
278 cgtime = acg.cg_old_time; |
279 printf("magic\t%x\ttell\t%qx\ttime\t%s", |
280 acg.cg_magic, cur, ctime(&cgtime)); |
281 printf("cgx\t%d\tncyl\t%d\tniblk\t%d\tndblk\t%d\n", 282 acg.cg_cgx, acg.cg_old_ncyl, acg.cg_old_niblk, 283 acg.cg_ndblk); 284 break; 285 default: 286 break; 287 } 288 printf("nbfree\t%d\tndir\t%d\tnifree\t%d\tnffree\t%d\n", --- 112 unchanged lines hidden --- |