Lines Matching refs:sblock
93 #define sblock fsun.fs macro
170 strlcpy((char *)sblock.fs_volname, ffs_opts->label, in ffs_mkfs()
171 sizeof(sblock.fs_volname)); in ffs_mkfs()
174 sblock.fs_old_inodefmt = FS_42INODEFMT; in ffs_mkfs()
175 sblock.fs_maxsymlinklen = 0; in ffs_mkfs()
176 sblock.fs_old_flags = 0; in ffs_mkfs()
178 sblock.fs_old_inodefmt = FS_44INODEFMT; in ffs_mkfs()
179 sblock.fs_maxsymlinklen = (Oflag == 1 ? UFS1_MAXSYMLINKLEN : in ffs_mkfs()
181 sblock.fs_old_flags = FS_FLAGS_UPDATED; in ffs_mkfs()
182 sblock.fs_flags = 0; in ffs_mkfs()
193 ffs_wtfs(fssize - 1, sectorsize, (char *)&sblock, fsopts); in ffs_mkfs()
198 sblock.fs_avgfilesize = avgfilesize; in ffs_mkfs()
199 sblock.fs_avgfpdir = avgfpdir; in ffs_mkfs()
200 if (sblock.fs_avgfilesize <= 0) in ffs_mkfs()
202 sblock.fs_avgfilesize), exit(14); in ffs_mkfs()
203 if (sblock.fs_avgfpdir <= 0) in ffs_mkfs()
205 sblock.fs_avgfpdir), exit(15); in ffs_mkfs()
209 sblock.fs_bsize = bsize; in ffs_mkfs()
210 sblock.fs_fsize = fsize; in ffs_mkfs()
211 if (!POWEROF2(sblock.fs_bsize)) { in ffs_mkfs()
213 sblock.fs_bsize); in ffs_mkfs()
216 if (!POWEROF2(sblock.fs_fsize)) { in ffs_mkfs()
218 sblock.fs_fsize); in ffs_mkfs()
221 if (sblock.fs_fsize < sectorsize) { in ffs_mkfs()
223 sblock.fs_fsize, sectorsize); in ffs_mkfs()
226 if (sblock.fs_bsize < MINBSIZE) { in ffs_mkfs()
228 sblock.fs_bsize, MINBSIZE); in ffs_mkfs()
231 if (sblock.fs_bsize > FFS_MAXBSIZE) { in ffs_mkfs()
233 sblock.fs_bsize, FFS_MAXBSIZE); in ffs_mkfs()
236 if (sblock.fs_bsize < sblock.fs_fsize) { in ffs_mkfs()
238 sblock.fs_bsize, sblock.fs_fsize); in ffs_mkfs()
243 sblock.fs_maxbsize = sblock.fs_bsize; in ffs_mkfs()
244 printf("Extent size set to %d\n", sblock.fs_maxbsize); in ffs_mkfs()
245 } else if (sblock.fs_maxbsize > FS_MAXCONTIG * sblock.fs_bsize) { in ffs_mkfs()
246 sblock.fs_maxbsize = FS_MAXCONTIG * sblock.fs_bsize; in ffs_mkfs()
247 printf("Extent size reduced to %d\n", sblock.fs_maxbsize); in ffs_mkfs()
249 sblock.fs_maxbsize = maxbsize; in ffs_mkfs()
251 sblock.fs_maxcontig = maxcontig; in ffs_mkfs()
252 if (sblock.fs_maxcontig < sblock.fs_maxbsize / sblock.fs_bsize) { in ffs_mkfs()
253 sblock.fs_maxcontig = sblock.fs_maxbsize / sblock.fs_bsize; in ffs_mkfs()
254 printf("Maxcontig raised to %d\n", sblock.fs_maxbsize); in ffs_mkfs()
257 if (sblock.fs_maxcontig > 1) in ffs_mkfs()
258 sblock.fs_contigsumsize = MIN(sblock.fs_maxcontig,FS_MAXCONTIG); in ffs_mkfs()
260 sblock.fs_bmask = ~(sblock.fs_bsize - 1); in ffs_mkfs()
261 sblock.fs_fmask = ~(sblock.fs_fsize - 1); in ffs_mkfs()
262 sblock.fs_qbmask = ~sblock.fs_bmask; in ffs_mkfs()
263 sblock.fs_qfmask = ~sblock.fs_fmask; in ffs_mkfs()
264 for (sblock.fs_bshift = 0, i = sblock.fs_bsize; i > 1; i >>= 1) in ffs_mkfs()
265 sblock.fs_bshift++; in ffs_mkfs()
266 for (sblock.fs_fshift = 0, i = sblock.fs_fsize; i > 1; i >>= 1) in ffs_mkfs()
267 sblock.fs_fshift++; in ffs_mkfs()
268 sblock.fs_frag = ffs_numfrags(&sblock, sblock.fs_bsize); in ffs_mkfs()
269 for (sblock.fs_fragshift = 0, i = sblock.fs_frag; i > 1; i >>= 1) in ffs_mkfs()
270 sblock.fs_fragshift++; in ffs_mkfs()
271 if (sblock.fs_frag > MAXFRAG) { in ffs_mkfs()
274 sblock.fs_fsize, sblock.fs_bsize, in ffs_mkfs()
275 sblock.fs_bsize / MAXFRAG); in ffs_mkfs()
278 sblock.fs_fsbtodb = ilog2(sblock.fs_fsize / sectorsize); in ffs_mkfs()
279 sblock.fs_size = fssize = FFS_DBTOFSB(&sblock, fssize); in ffs_mkfs()
282 sblock.fs_magic = FS_UFS1_MAGIC; in ffs_mkfs()
283 sblock.fs_sblockloc = SBLOCK_UFS1; in ffs_mkfs()
284 sblock.fs_nindir = sblock.fs_bsize / sizeof(int32_t); in ffs_mkfs()
285 sblock.fs_inopb = sblock.fs_bsize / sizeof(struct ufs1_dinode); in ffs_mkfs()
286 sblock.fs_maxsymlinklen = ((UFS_NDADDR + UFS_NIADDR) * in ffs_mkfs()
288 sblock.fs_old_inodefmt = FS_44INODEFMT; in ffs_mkfs()
289 sblock.fs_old_cgoffset = 0; in ffs_mkfs()
290 sblock.fs_old_cgmask = 0xffffffff; in ffs_mkfs()
291 sblock.fs_old_size = sblock.fs_size; in ffs_mkfs()
292 sblock.fs_old_rotdelay = 0; in ffs_mkfs()
293 sblock.fs_old_rps = 60; in ffs_mkfs()
294 sblock.fs_old_nspf = sblock.fs_fsize / sectorsize; in ffs_mkfs()
295 sblock.fs_old_cpg = 1; in ffs_mkfs()
296 sblock.fs_old_interleave = 1; in ffs_mkfs()
297 sblock.fs_old_trackskew = 0; in ffs_mkfs()
298 sblock.fs_old_cpc = 0; in ffs_mkfs()
299 sblock.fs_old_postblformat = 1; in ffs_mkfs()
300 sblock.fs_old_nrpos = 1; in ffs_mkfs()
303 sblock.fs_magic = FS_UFS2EA_MAGIC; in ffs_mkfs()
305 sblock.fs_magic = FS_UFS2_MAGIC; in ffs_mkfs()
307 sblock.fs_sblockloc = SBLOCK_UFS2; in ffs_mkfs()
309 sblock.fs_sblockloc = SBLOCK_UFS1; in ffs_mkfs()
311 sblock.fs_nindir = sblock.fs_bsize / sizeof(int64_t); in ffs_mkfs()
312 sblock.fs_inopb = sblock.fs_bsize / sizeof(struct ufs2_dinode); in ffs_mkfs()
313 sblock.fs_maxsymlinklen = ((UFS_NDADDR + UFS_NIADDR) * in ffs_mkfs()
317 sblock.fs_sblkno = in ffs_mkfs()
318 roundup(howmany(sblock.fs_sblockloc + SBLOCKSIZE, sblock.fs_fsize), in ffs_mkfs()
319 sblock.fs_frag); in ffs_mkfs()
320 sblock.fs_cblkno = (daddr_t)(sblock.fs_sblkno + in ffs_mkfs()
321 roundup(howmany(SBLOCKSIZE, sblock.fs_fsize), sblock.fs_frag)); in ffs_mkfs()
322 sblock.fs_iblkno = sblock.fs_cblkno + sblock.fs_frag; in ffs_mkfs()
323 sblock.fs_maxfilesize = sblock.fs_bsize * UFS_NDADDR - 1; in ffs_mkfs()
324 for (sizepb = sblock.fs_bsize, i = 0; i < UFS_NIADDR; i++) { in ffs_mkfs()
325 sizepb *= FFS_NINDIR(&sblock); in ffs_mkfs()
326 sblock.fs_maxfilesize += sizepb; in ffs_mkfs()
345 fragsperinode = MAX(ffs_numfrags(&sblock, density), 1); in ffs_mkfs()
346 minfpg = fragsperinode * FFS_INOPB(&sblock); in ffs_mkfs()
347 if (minfpg > sblock.fs_size) in ffs_mkfs()
348 minfpg = sblock.fs_size; in ffs_mkfs()
349 sblock.fs_ipg = FFS_INOPB(&sblock); in ffs_mkfs()
350 sblock.fs_fpg = roundup(sblock.fs_iblkno + in ffs_mkfs()
351 sblock.fs_ipg / FFS_INOPF(&sblock), sblock.fs_frag); in ffs_mkfs()
352 if (sblock.fs_fpg < minfpg) in ffs_mkfs()
353 sblock.fs_fpg = minfpg; in ffs_mkfs()
354 sblock.fs_ipg = roundup(howmany(sblock.fs_fpg, fragsperinode), in ffs_mkfs()
355 FFS_INOPB(&sblock)); in ffs_mkfs()
356 sblock.fs_fpg = roundup(sblock.fs_iblkno + in ffs_mkfs()
357 sblock.fs_ipg / FFS_INOPF(&sblock), sblock.fs_frag); in ffs_mkfs()
358 if (sblock.fs_fpg < minfpg) in ffs_mkfs()
359 sblock.fs_fpg = minfpg; in ffs_mkfs()
360 sblock.fs_ipg = roundup(howmany(sblock.fs_fpg, fragsperinode), in ffs_mkfs()
361 FFS_INOPB(&sblock)); in ffs_mkfs()
362 if (CGSIZE(&sblock) < (unsigned long)sblock.fs_bsize) in ffs_mkfs()
364 density -= sblock.fs_fsize; in ffs_mkfs()
376 for ( ; sblock.fs_fpg < maxblkspercg; sblock.fs_fpg += sblock.fs_frag) { in ffs_mkfs()
377 sblock.fs_ipg = roundup(howmany(sblock.fs_fpg, fragsperinode), in ffs_mkfs()
378 FFS_INOPB(&sblock)); in ffs_mkfs()
379 if (sblock.fs_size / sblock.fs_fpg < 1) in ffs_mkfs()
381 if (CGSIZE(&sblock) < (unsigned long)sblock.fs_bsize) in ffs_mkfs()
383 if (CGSIZE(&sblock) == (unsigned long)sblock.fs_bsize) in ffs_mkfs()
385 sblock.fs_fpg -= sblock.fs_frag; in ffs_mkfs()
386 sblock.fs_ipg = roundup(howmany(sblock.fs_fpg, fragsperinode), in ffs_mkfs()
387 FFS_INOPB(&sblock)); in ffs_mkfs()
396 optimalfpg = sblock.fs_fpg; in ffs_mkfs()
398 sblock.fs_ncg = howmany(sblock.fs_size, sblock.fs_fpg); in ffs_mkfs()
399 lastminfpg = roundup(sblock.fs_iblkno + in ffs_mkfs()
400 sblock.fs_ipg / FFS_INOPF(&sblock), sblock.fs_frag); in ffs_mkfs()
401 if (sblock.fs_size < lastminfpg) { in ffs_mkfs()
403 (long long)sblock.fs_size, lastminfpg); in ffs_mkfs()
406 if (sblock.fs_size % sblock.fs_fpg >= lastminfpg || in ffs_mkfs()
407 sblock.fs_size % sblock.fs_fpg == 0) in ffs_mkfs()
409 sblock.fs_fpg -= sblock.fs_frag; in ffs_mkfs()
410 sblock.fs_ipg = roundup(howmany(sblock.fs_fpg, fragsperinode), in ffs_mkfs()
411 FFS_INOPB(&sblock)); in ffs_mkfs()
413 if (optimalfpg != sblock.fs_fpg) in ffs_mkfs()
415 optimalfpg, sblock.fs_fpg, "to enlarge last cyl group"); in ffs_mkfs()
416 sblock.fs_cgsize = ffs_fragroundup(&sblock, CGSIZE(&sblock)); in ffs_mkfs()
417 sblock.fs_dblkno = sblock.fs_iblkno + sblock.fs_ipg / FFS_INOPF(&sblock); in ffs_mkfs()
419 sblock.fs_old_spc = sblock.fs_fpg * sblock.fs_old_nspf; in ffs_mkfs()
420 sblock.fs_old_nsect = sblock.fs_old_spc; in ffs_mkfs()
421 sblock.fs_old_npsect = sblock.fs_old_spc; in ffs_mkfs()
422 sblock.fs_old_ncyl = sblock.fs_ncg; in ffs_mkfs()
428 sblock.fs_csaddr = cgdmin(&sblock, 0); in ffs_mkfs()
429 sblock.fs_cssize = in ffs_mkfs()
430 ffs_fragroundup(&sblock, sblock.fs_ncg * sizeof(struct csum)); in ffs_mkfs()
436 size = sblock.fs_cssize; in ffs_mkfs()
437 if (sblock.fs_contigsumsize > 0) in ffs_mkfs()
438 size += sblock.fs_ncg * sizeof(int32_t); in ffs_mkfs()
440 sblock.fs_csp = space; in ffs_mkfs()
441 space = (char *)space + sblock.fs_cssize; in ffs_mkfs()
442 if (sblock.fs_contigsumsize > 0) { in ffs_mkfs()
445 sblock.fs_maxcluster = lp = space; in ffs_mkfs()
446 for (i = 0; i < sblock.fs_ncg; i++) in ffs_mkfs()
447 *lp++ = sblock.fs_contigsumsize; in ffs_mkfs()
450 sblock.fs_sbsize = ffs_fragroundup(&sblock, sizeof(struct fs)); in ffs_mkfs()
451 if (sblock.fs_sbsize > SBLOCKSIZE) in ffs_mkfs()
452 sblock.fs_sbsize = SBLOCKSIZE; in ffs_mkfs()
453 sblock.fs_minfree = minfree; in ffs_mkfs()
454 sblock.fs_maxcontig = maxcontig; in ffs_mkfs()
455 sblock.fs_maxbpg = maxbpg; in ffs_mkfs()
456 sblock.fs_optim = opt; in ffs_mkfs()
457 sblock.fs_cgrotor = 0; in ffs_mkfs()
458 sblock.fs_pendingblocks = 0; in ffs_mkfs()
459 sblock.fs_pendinginodes = 0; in ffs_mkfs()
460 sblock.fs_cstotal.cs_ndir = 0; in ffs_mkfs()
461 sblock.fs_cstotal.cs_nbfree = 0; in ffs_mkfs()
462 sblock.fs_cstotal.cs_nifree = 0; in ffs_mkfs()
463 sblock.fs_cstotal.cs_nffree = 0; in ffs_mkfs()
464 sblock.fs_fmod = 0; in ffs_mkfs()
465 sblock.fs_ronly = 0; in ffs_mkfs()
466 sblock.fs_state = 0; in ffs_mkfs()
467 sblock.fs_clean = FS_ISCLEAN; in ffs_mkfs()
468 sblock.fs_ronly = 0; in ffs_mkfs()
469 sblock.fs_id[0] = tstamp; in ffs_mkfs()
470 sblock.fs_id[1] = random(); in ffs_mkfs()
471 sblock.fs_fsmnt[0] = '\0'; in ffs_mkfs()
472 csfrags = howmany(sblock.fs_cssize, sblock.fs_fsize); in ffs_mkfs()
473 sblock.fs_dsize = sblock.fs_size - sblock.fs_sblkno - in ffs_mkfs()
474 sblock.fs_ncg * (sblock.fs_dblkno - sblock.fs_sblkno); in ffs_mkfs()
475 sblock.fs_cstotal.cs_nbfree = in ffs_mkfs()
476 ffs_fragstoblks(&sblock, sblock.fs_dsize) - in ffs_mkfs()
477 howmany(csfrags, sblock.fs_frag); in ffs_mkfs()
478 sblock.fs_cstotal.cs_nffree = in ffs_mkfs()
479 ffs_fragnum(&sblock, sblock.fs_size) + in ffs_mkfs()
480 (ffs_fragnum(&sblock, csfrags) > 0 ? in ffs_mkfs()
481 sblock.fs_frag - ffs_fragnum(&sblock, csfrags) : 0); in ffs_mkfs()
482 sblock.fs_cstotal.cs_nifree = sblock.fs_ncg * sblock.fs_ipg - UFS_ROOTINO; in ffs_mkfs()
483 sblock.fs_cstotal.cs_ndir = 0; in ffs_mkfs()
484 sblock.fs_dsize -= csfrags; in ffs_mkfs()
485 sblock.fs_time = tstamp; in ffs_mkfs()
487 sblock.fs_old_time = tstamp; in ffs_mkfs()
488 sblock.fs_old_dsize = sblock.fs_dsize; in ffs_mkfs()
489 sblock.fs_old_csaddr = sblock.fs_csaddr; in ffs_mkfs()
490 sblock.fs_old_cstotal.cs_ndir = sblock.fs_cstotal.cs_ndir; in ffs_mkfs()
491 sblock.fs_old_cstotal.cs_nbfree = sblock.fs_cstotal.cs_nbfree; in ffs_mkfs()
492 sblock.fs_old_cstotal.cs_nifree = sblock.fs_cstotal.cs_nifree; in ffs_mkfs()
493 sblock.fs_old_cstotal.cs_nffree = sblock.fs_cstotal.cs_nffree; in ffs_mkfs()
501 fsys, (float)sblock.fs_size * sblock.fs_fsize * B2MBFACTOR, in ffs_mkfs()
502 (long long)FFS_FSBTODB(&sblock, sblock.fs_size), in ffs_mkfs()
503 sblock.fs_bsize, sblock.fs_fsize); in ffs_mkfs()
506 sblock.fs_ncg, in ffs_mkfs()
507 (float)sblock.fs_fpg * sblock.fs_fsize * B2MBFACTOR, in ffs_mkfs()
508 sblock.fs_fpg / sblock.fs_frag, sblock.fs_ipg); in ffs_mkfs()
516 FFS_FSBTODB(&sblock, cgsblock(&sblock, sblock.fs_ncg -1))); in ffs_mkfs()
523 if (sblock.fs_bsize < SBLOCKSIZE) in ffs_mkfs()
524 iobufsize = SBLOCKSIZE + 3 * sblock.fs_bsize; in ffs_mkfs()
526 iobufsize = 4 * sblock.fs_bsize; in ffs_mkfs()
532 ffs_sb_copy(&wb.fs, &sblock, sbsize, fsopts); in ffs_mkfs()
536 for (cylno = 0; cylno < sblock.fs_ncg; cylno++) { in ffs_mkfs()
541 (long long)FFS_FSBTODB(&sblock, cgsblock(&sblock, cylno))); in ffs_mkfs()
550 sblock.fs_time = tstamp; in ffs_mkfs()
552 sblock.fs_old_cstotal.cs_ndir = sblock.fs_cstotal.cs_ndir; in ffs_mkfs()
553 sblock.fs_old_cstotal.cs_nbfree = sblock.fs_cstotal.cs_nbfree; in ffs_mkfs()
554 sblock.fs_old_cstotal.cs_nifree = sblock.fs_cstotal.cs_nifree; in ffs_mkfs()
555 sblock.fs_old_cstotal.cs_nffree = sblock.fs_cstotal.cs_nffree; in ffs_mkfs()
558 sblock.fs_flags |= FS_SWAPPED; in ffs_mkfs()
559 ffs_write_superblock(&sblock, fsopts); in ffs_mkfs()
560 return (&sblock); in ffs_mkfs()
578 ffs_sb_copy(&wb.fs, &sblock, sbsize, fsopts); in ffs_write_superblock()
624 cbase = cgbase(&sblock, cylno); in initcg()
625 dmax = cbase + sblock.fs_fpg; in initcg()
626 if (dmax > sblock.fs_size) in initcg()
627 dmax = sblock.fs_size; in initcg()
628 dlower = cgsblock(&sblock, cylno) - cbase; in initcg()
629 dupper = cgdmin(&sblock, cylno) - cbase; in initcg()
631 dupper += howmany(sblock.fs_cssize, sblock.fs_fsize); in initcg()
632 memset(&acg, 0, sblock.fs_cgsize); in initcg()
636 acg.cg_niblk = sblock.fs_ipg; in initcg()
637 acg.cg_initediblk = sblock.fs_ipg < 2 * FFS_INOPB(&sblock) ? in initcg()
638 sblock.fs_ipg : 2 * FFS_INOPB(&sblock); in initcg()
640 if (sblock.fs_contigsumsize > 0) in initcg()
641 acg.cg_nclusterblks = acg.cg_ndblk >> sblock.fs_fragshift; in initcg()
646 if (cylno == sblock.fs_ncg - 1) in initcg()
648 sblock.fs_fpg / sblock.fs_old_cpg); in initcg()
650 acg.cg_old_ncyl = sblock.fs_old_cpg; in initcg()
658 sblock.fs_old_cpg * sizeof(int32_t); in initcg()
660 sblock.fs_old_cpg * sizeof(u_int16_t); in initcg()
662 acg.cg_freeoff = acg.cg_iusedoff + howmany(sblock.fs_ipg, CHAR_BIT); in initcg()
663 if (sblock.fs_contigsumsize <= 0) { in initcg()
665 howmany(sblock.fs_fpg, CHAR_BIT); in initcg()
668 howmany(sblock.fs_fpg, CHAR_BIT) - sizeof(int32_t); in initcg()
672 (sblock.fs_contigsumsize + 1) * sizeof(int32_t); in initcg()
674 howmany(ffs_fragstoblks(&sblock, sblock.fs_fpg), CHAR_BIT); in initcg()
676 if (acg.cg_nextfreeoff > (unsigned)sblock.fs_cgsize) { in initcg()
680 acg.cg_cs.cs_nifree += sblock.fs_ipg; in initcg()
695 ffs_setblock(&sblock, cg_blksfree(&acg, 0), blkno); in initcg()
696 if (sblock.fs_contigsumsize > 0) in initcg()
699 d += sblock.fs_frag; in initcg()
703 if ((i = (dupper & (sblock.fs_frag - 1))) != 0) { in initcg()
704 acg.cg_frsum[sblock.fs_frag - i]++; in initcg()
705 for (d = dupper + sblock.fs_frag - i; dupper < d; dupper++) { in initcg()
710 for (d = dupper, blkno = dupper >> sblock.fs_fragshift; in initcg()
711 d + sblock.fs_frag <= acg.cg_ndblk; ) { in initcg()
712 ffs_setblock(&sblock, cg_blksfree(&acg, 0), blkno); in initcg()
713 if (sblock.fs_contigsumsize > 0) in initcg()
716 d += sblock.fs_frag; in initcg()
726 if (sblock.fs_contigsumsize > 0) { in initcg()
737 if (run > sblock.fs_contigsumsize) in initcg()
738 run = sblock.fs_contigsumsize; in initcg()
750 if (run > sblock.fs_contigsumsize) in initcg()
751 run = sblock.fs_contigsumsize; in initcg()
755 sblock.fs_cs(&sblock, cylno) = acg.cg_cs; in initcg()
760 start = sblock.fs_bsize > SBLOCKSIZE ? sblock.fs_bsize : SBLOCKSIZE; in initcg()
761 memcpy(&iobuf[start], &acg, sblock.fs_cgsize); in initcg()
763 ffs_cg_swap(&acg, (struct cg*)&iobuf[start], &sblock); in initcg()
764 start += sblock.fs_bsize; in initcg()
768 if (sblock.fs_magic == FS_UFS1_MAGIC) { in initcg()
777 ffs_wtfs(FFS_FSBTODB(&sblock, cgsblock(&sblock, cylno)), iobufsize, iobuf, in initcg()
783 for (i = 2 * sblock.fs_frag; in initcg()
784 i < sblock.fs_ipg / FFS_INOPF(&sblock); in initcg()
785 i += sblock.fs_frag) { in initcg()
787 for (j = 0; j < FFS_INOPB(&sblock); j++) { in initcg()
791 ffs_wtfs(FFS_FSBTODB(&sblock, cgimin(&sblock, cylno) + i), in initcg()
792 sblock.fs_bsize, &iobuf[start], fsopts); in initcg()