Lines Matching refs:sblock

172 #define sblock	ext2fsun.m_ext2fs
246 sblock.e2fs.e2fs_log_bsize = ilog2(bsize) - LOG_MINBSIZE;
248 sblock.e2fs.e2fs_fsize = ilog2(fsize) - LOG_MINBSIZE;
250 sblock.e2fs_bsize = bsize;
251 sblock.e2fs_bshift = sblock.e2fs.e2fs_log_bsize + LOG_MINBSIZE;
252 sblock.e2fs_qbmask = sblock.e2fs_bsize - 1;
253 sblock.e2fs_bmask = ~sblock.e2fs_qbmask;
254 sblock.e2fs_fsbtodb = ilog2(sblock.e2fs_bsize) - ilog2(sectorsize);
255 sblock.e2fs_ipb = sblock.e2fs_bsize / inodesize;
265 sblock.e2fs.e2fs_first_dblock = (sblock.e2fs_bsize > BBSIZE) ? 0 : 1;
266 minfssize = EXT2_FSBTODB(&sblock,
267 sblock.e2fs.e2fs_first_dblock +
281 bcount = EXT2_DBTOFSB(&sblock, fssize);
292 blocks_per_cg = sblock.e2fs_bsize * NBBY;
294 ncg = howmany(bcount - sblock.e2fs.e2fs_first_dblock, blocks_per_cg);
315 blocks_lastcg = bcount - sblock.e2fs.e2fs_first_dblock -
333 inodes_per_cg = roundup(inodes_per_cg, sblock.e2fs_ipb);
335 iblocks_per_cg = inodes_per_cg / sblock.e2fs_ipb;
339 sblock.e2fs.e2fs_bcount = bcount;
340 sblock.e2fs.e2fs_icount = num_inodes;
342 sblock.e2fs_ncg = ncg;
343 sblock.e2fs_ngdb = blocks_gd;
344 sblock.e2fs_itpg = iblocks_per_cg;
346 sblock.e2fs.e2fs_rbcount = sblock.e2fs.e2fs_bcount * minfree / 100;
350 sblock.e2fs.e2fs_bpg = blocks_per_cg;
351 sblock.e2fs.e2fs_fpg = blocks_per_cg;
353 sblock.e2fs.e2fs_ipg = inodes_per_cg;
355 sblock.e2fs.e2fs_mtime = 0;
356 sblock.e2fs.e2fs_wtime = tv.tv_sec;
357 sblock.e2fs.e2fs_mnt_count = 0;
359 sblock.e2fs.e2fs_max_mnt_count = EXT2_DEF_MAX_MNT_COUNT;
361 sblock.e2fs.e2fs_magic = E2FS_MAGIC;
362 sblock.e2fs.e2fs_state = E2FS_ISCLEAN;
363 sblock.e2fs.e2fs_beh = E2FS_BEH_DEFAULT;
364 sblock.e2fs.e2fs_minrev = 0;
365 sblock.e2fs.e2fs_lastfsck = tv.tv_sec;
366 sblock.e2fs.e2fs_fsckintv = EXT2_DEF_FSCKINTV;
379 sblock.e2fs.e2fs_creator = E2FS_OS_LINUX;
382 sblock.e2fs.e2fs_rev = E2FS_REV0;
383 sblock.e2fs.e2fs_features_compat = 0;
384 sblock.e2fs.e2fs_features_incompat = 0;
385 sblock.e2fs.e2fs_features_rocompat = 0;
387 sblock.e2fs.e2fs_rev = E2FS_REV1;
397 sblock.e2fs.e2fs_features_compat = EXT2F_COMPAT_RESIZE;
398 sblock.e2fs.e2fs_features_incompat = EXT2F_INCOMPAT_FTYPE;
399 sblock.e2fs.e2fs_features_rocompat =
403 sblock.e2fs.e2fs_ruid = geteuid();
404 sblock.e2fs.e2fs_rgid = getegid();
406 sblock.e2fs.e2fs_first_ino = EXT2_FIRSTINO;
407 sblock.e2fs.e2fs_inode_size = inodesize;
414 uuid_enc_le(sblock.e2fs.e2fs_uuid, &uuid);
416 if (strlen(volname) > sizeof(sblock.e2fs.e2fs_vname))
418 strlcpy(sblock.e2fs.e2fs_vname, volname,
419 sizeof(sblock.e2fs.e2fs_vname));
422 sblock.e2fs.e2fs_fsmnt[0] = '\0';
423 sblock.e2fs_fsmnt[0] = '\0';
425 sblock.e2fs.e2fs_algo = 0; /* XXX unsupported? */
426 sblock.e2fs.e2fs_prealloc = 0; /* XXX unsupported? */
427 sblock.e2fs.e2fs_dir_prealloc = 0; /* XXX unsupported? */
430 sblock.e2fs.e2fs_reserved_ngdb = 0;
431 if (sblock.e2fs.e2fs_rev > E2FS_REV0 &&
432 (sblock.e2fs.e2fs_features_compat & EXT2F_COMPAT_RESIZE) != 0) {
438 (sblock.e2fs.e2fs_bcount - sblock.e2fs.e2fs_first_dblock)
443 target_ncg = howmany(target_blocks, sblock.e2fs.e2fs_bpg);
445 sblock.e2fs_bsize);
458 if (target_ngdb > EXT2_NINDIR(&sblock))
459 target_ngdb = EXT2_NINDIR(&sblock);
461 reserved_ngdb = target_ngdb - sblock.e2fs_ngdb;
468 sblock.e2fs.e2fs_features_compat &=
471 sblock.e2fs.e2fs_reserved_ngdb = reserved_ngdb;
477 gd = malloc(sblock.e2fs_ngdb * bsize);
480 memset(gd, 0, sblock.e2fs_ngdb * bsize);
487 boffset = cgbase(&sblock, cylno);
488 if (sblock.e2fs.e2fs_rev == E2FS_REV0 ||
489 (sblock.e2fs.e2fs_features_rocompat &
492 boffset += NBLOCK_SUPERBLOCK + sblock.e2fs_ngdb;
493 if (sblock.e2fs.e2fs_rev > E2FS_REV0 &&
494 (sblock.e2fs.e2fs_features_compat &
496 boffset += sblock.e2fs.e2fs_reserved_ngdb;
508 sblock.e2fs.e2fs_bpg - cgoverhead(cylno));
513 sblock.e2fs.e2fs_ipg-EXT2_RESERVED_INODES);
516 h2fs16(sblock.e2fs.e2fs_ipg);
521 sblock.e2fs.e2fs_fbcount = fbcount;
522 sblock.e2fs.e2fs_ficount = ficount;
538 ncg, bsize * sblock.e2fs.e2fs_bpg / (1024 * 1024),
539 sblock.e2fs.e2fs_bpg, sblock.e2fs.e2fs_ipg);
545 iobufsize = (NBLOCK_SUPERBLOCK + sblock.e2fs_ngdb) * sblock.e2fs_bsize;
595 (uint64_t)cgbase(&sblock, ncg - 1));
617 if (sblock.e2fs.e2fs_rev > E2FS_REV0 &&
618 (sblock.e2fs.e2fs_features_rocompat &
634 (uint64_t)cgbase(&sblock, cylno));
642 delta = sblock.e2fs_ncg - cylno - 1;
668 sblock.e2fs.e2fs_block_group_nr = 0;
670 if (cgbase(&sblock, 0) == 0) {
673 * (i.e. in case of sblock.e2fs.e2fs_bsize > BBSIZE)
678 e2fs_sbsave(&sblock.e2fs, (struct ext2fs *)(iobuf + sboff));
679 e2fs_cgsave(gd, (struct ext2_gd *)(iobuf + sblock.e2fs_bsize),
680 sizeof(struct ext2_gd) * sblock.e2fs_ncg);
681 wtfs(EXT2_FSBTODB(&sblock, cgbase(&sblock, 0)) + sboff / sectorsize,
699 if (sblock.e2fs.e2fs_rev == E2FS_REV0 ||
700 (sblock.e2fs.e2fs_features_rocompat &
703 sblock.e2fs.e2fs_block_group_nr = cylno;
705 if (cgbase(&sblock, cylno) == 0) {
709 e2fs_sbsave(&sblock.e2fs, (struct ext2fs *)(iobuf + sboff));
711 sblock.e2fs_bsize * NBLOCK_SUPERBLOCK),
712 sizeof(struct ext2_gd) * sblock.e2fs_ncg);
714 wtfs(EXT2_FSBTODB(&sblock, cgbase(&sblock, cylno)) +
721 memset(buf, 0, sblock.e2fs_bsize);
722 if (cylno == (sblock.e2fs_ncg - 1)) {
724 nblcg = sblock.e2fs.e2fs_bcount -
725 cgbase(&sblock, sblock.e2fs_ncg - 1);
728 memset(&buf[i / NBBY], ~0U, sblock.e2fs.e2fs_bpg - i);
736 wtfs(EXT2_FSBTODB(&sblock, fs2h32(gd[cylno].ext2bgd_b_bitmap)),
737 sblock.e2fs_bsize, buf);
746 i = sblock.e2fs.e2fs_ipg / NBBY;
748 memset(buf + i, ~0U, sblock.e2fs_bsize - i);
754 wtfs(EXT2_FSBTODB(&sblock, fs2h32(gd[cylno].ext2bgd_i_bitmap)),
755 sblock.e2fs_bsize, buf);
764 memset(buf, 0, sblock.e2fs_bsize);
765 for (i = 0; i < sblock.e2fs_itpg; i++) {
766 for (j = 0; j < sblock.e2fs_ipb; j++) {
771 wtfs(EXT2_FSBTODB(&sblock, fs2h32(gd[cylno].ext2bgd_i_tables) + i),
772 sblock.e2fs_bsize, buf);
809 ((daddr_t)sblock.e2fs.e2fs_first_dblock + cgoverhead(0)) *
810 sblock.e2fs_bsize;
817 if (sblkoff >= sblock.e2fs.e2fs_first_dblock * bsize) {
859 overh = NBLOCK_BLOCK_BITMAP + NBLOCK_INODE_BITMAP + sblock.e2fs_itpg;
861 if (sblock.e2fs.e2fs_rev == E2FS_REV0 ||
862 (sblock.e2fs.e2fs_features_rocompat &
865 overh += NBLOCK_SUPERBLOCK + sblock.e2fs_ngdb;
867 if (sblock.e2fs.e2fs_rev > E2FS_REV0 &&
868 (sblock.e2fs.e2fs_features_compat &
870 overh += sblock.e2fs.e2fs_reserved_ngdb;
917 if (sblock.e2fs.e2fs_rev > E2FS_REV0 &&
918 (sblock.e2fs.e2fs_features_compat & EXT2F_COMPAT_RESIZE) != 0)
929 if (sblock.e2fs.e2fs_rev > E2FS_REV0 &&
930 sblock.e2fs.e2fs_features_incompat & EXT2F_INCOMPAT_FTYPE) {
937 nblks_lostfound = EXT2_LOSTFOUNDSIZE / sblock.e2fs_bsize;
945 node.e2di_size = sblock.e2fs_bsize * nblks_lostfound;
952 node.e2di_nblock = EXT2_FSBTODB(&sblock, nblks_lostfound);
953 node.e2di_blocks[0] = alloc(sblock.e2fs_bsize, node.e2di_mode);
959 blk = alloc(sblock.e2fs_bsize, 0);
967 wtfs(EXT2_FSBTODB(&sblock, node.e2di_blocks[0]),
968 sblock.e2fs_bsize, buf);
969 pad_dir.e2d_reclen = sblock.e2fs_bsize;
971 memset(buf, 0, sblock.e2fs_bsize);
973 wtfs(EXT2_FSBTODB(&sblock, node.e2di_blocks[i]),
974 sblock.e2fs_bsize, buf);
982 if (sblock.e2fs.e2fs_rev > E2FS_REV0 &&
983 sblock.e2fs.e2fs_features_incompat & EXT2F_INCOMPAT_FTYPE) {
999 node.e2di_nblock = EXT2_FSBTODB(&sblock, 1);
1005 wtfs(EXT2_FSBTODB(&sblock, node.e2di_blocks[0]),
1006 sblock.e2fs_bsize, buf);
1022 dirblksiz = sblock.e2fs_bsize;
1128 isize = (uint64_t)sblock.e2fs_bsize * EXT2FS_NDADDR +
1129 (uint64_t)sblock.e2fs_bsize * EXT2_NINDIR(&sblock) +
1130 (uint64_t)sblock.e2fs_bsize * EXT2_NINDIR(&sblock) *
1131 EXT2_NINDIR(&sblock);
1133 (sblock.e2fs.e2fs_features_rocompat &
1157 alloc(sblock.e2fs_bsize, node.e2di_mode);
1163 nblock = EXT2_FSBTODB(&sblock, 1);
1166 dindir_block = malloc(sblock.e2fs_bsize);
1173 reserved_gdb = malloc(sblock.e2fs_bsize);
1182 for (i = 0; i < sblock.e2fs_ngdb; i++) {
1186 for (; i < sblock.e2fs_ngdb + sblock.e2fs.e2fs_reserved_ngdb; i++) {
1191 * XXX: e2fsprogs seem to use "(i % EXT2_NINDIR(&sblock))" here
1192 * to store maximum EXT2_NINDIR(&sblock) reserved gdbs.
1196 if (i >= EXT2_NINDIR(&sblock))
1199 __func__, sblock.e2fs.e2fs_reserved_ngdb);
1201 h2fs32(cgbase(&sblock, 0) + NBLOCK_SUPERBLOCK + i);
1208 for (n = 0, cylno = 1; cylno < sblock.e2fs_ncg; cylno++) {
1210 if ((sblock.e2fs.e2fs_features_rocompat &
1215 if (n >= EXT2_NINDIR(&sblock))
1222 reserved_gdb[n++] = h2fs32(cgbase(&sblock, cylno) +
1224 nblock += EXT2_FSBTODB(&sblock, 1);
1226 for (; n < EXT2_NINDIR(&sblock); n++)
1230 wtfs(EXT2_FSBTODB(&sblock, fs2h32(dindir_block[i])),
1231 sblock.e2fs_bsize, reserved_gdb);
1232 nblock += EXT2_FSBTODB(&sblock, 1);
1234 for (; i < EXT2_NINDIR(&sblock); i++) {
1241 wtfs(EXT2_FSBTODB(&sblock, node.e2di_blocks[EXT2FS_NDADDR + DOUBLE]),
1242 sblock.e2fs_bsize, dindir_block);
1265 if (size > sblock.e2fs_bsize)
1268 bbp = malloc(sblock.e2fs_bsize);
1271 rdfs(EXT2_FSBTODB(&sblock, fs2h32(gd[0].ext2bgd_b_bitmap)),
1272 sblock.e2fs_bsize, bbp);
1275 len = sblock.e2fs.e2fs_bpg / NBBY;
1306 wtfs(EXT2_FSBTODB(&sblock, fs2h32(gd[0].ext2bgd_b_bitmap)),
1307 sblock.e2fs_bsize, bbp);
1313 sblock.e2fs.e2fs_fbcount--;
1315 return sblock.e2fs.e2fs_first_dblock + bno;
1331 bp = malloc(sblock.e2fs_bsize);
1341 c = ino_to_cg(&sblock, ino);
1350 rdfs(EXT2_FSBTODB(&sblock, fs2h32(gd[0].ext2bgd_i_bitmap)),
1351 sblock.e2fs_bsize, bp);
1358 wtfs(EXT2_FSBTODB(&sblock, fs2h32(gd[0].ext2bgd_i_bitmap)),
1359 sblock.e2fs_bsize, bp);
1361 sblock.e2fs.e2fs_ficount--;
1364 if (ino >= sblock.e2fs.e2fs_ipg * sblock.e2fs_ncg)
1369 d = EXT2_FSBTODB(&sblock, ino_to_fsba(&sblock, ino));
1370 rdfs(d, sblock.e2fs_bsize, bp);
1373 inodesize * ino_to_fsbo(&sblock, ino));
1374 e2fs_isave(ip, dp, EXT2_DINODE_SIZE(&sblock));
1383 wtfs(d, sblock.e2fs_bsize, bp);