Lines Matching refs:TT

254   uint32_t dblocks = (uint32_t)((size+(TT.blocksize-1))/TT.blocksize);
255 uint32_t idx=TT.blocksize/4, iblocks=0, diblocks=0, tiblocks=0;
298 // Writes total block count to TT.treeblocks and inode count to TT.treeinodes.
311 TT.treeblocks += that->st.st_blocks;
315 TT.treeblocks += blocks = file_blocks_used(*size, 0);
316 TT.treeinodes++;
364 temp = (inodes + TT.groups - 1) / TT.groups;
365 inodes = TT.blocksize/sizeof(struct ext2_inode);
369 // Fill out superblock and TT structures.
377 for (temp = 0; temp < 4; temp++) if (TT.blocksize == 1024<<temp) break;
383 sb->blocks_count = SWAP_LE32(TT.blocks);
384 sb->free_blocks_count = SWAP_LE32(TT.freeblocks);
385 temp = (TT.blocks * (uint64_t)TT.reserved_percent) / 100;
388 sb->first_data_block = SWAP_LE32(TT.blocksize == 1024 ? 1 : 0);
393 sb->blocks_per_group = sb->frags_per_group = SWAP_LE32(TT.blockbits);
396 sb->inodes_per_group = SWAP_LE32(TT.inodespg);
397 sb->inodes_count = SWAP_LE32(TT.inodespg * TT.groups);
400 temp = TT.inodespg*TT.groups - INODES_RESERVED;
401 if (temp < TT.treeinodes) error_exit("Not enough inodes.\n");
402 sb->free_inodes_count = SWAP_LE32(temp - TT.treeinodes);
448 used = TT.groups * sizeof(struct ext2_group);
449 used += TT.blocksize - 1;
450 used /= TT.blocksize;
454 if (!group && TT.blocksize == 1024) used++;
464 return group_superblock_overhead(group) + 2 + get_inodespg(TT.inodespg)
465 / (TT.blocksize/sizeof(struct ext2_inode));
488 if(-1 == lseek(TT.fsfd, len, SEEK_SET)) {
492 xwrite(TT.fsfd, toybuf, out);
508 int i, group = TT.nextblock/TT.blockbits;
513 while (group >= TT.nextgroup)
514 TT.nextblock += group_overhead(TT.nextgroup++);
556 sscanf(toys.optargs[1], "%u", &TT.blocks);
559 if (!TT.reserved_percent) TT.reserved_percent = 5;
564 TT.fsfd = xcreate(*toys.optargs, temp, 0777);
569 length = fdlength(TT.fsfd);
570 if (!TT.blocksize) TT.blocksize = (length && length < 1<<29) ? 1024 : 4096;
571 TT.blockbits = 8*TT.blocksize;
572 if (!TT.blocks) TT.blocks = length/TT.blocksize;
576 if (TT.gendir) {
577 strncpy(toybuf, TT.gendir, sizeof(toybuf));
601 if (!TT.inodes) {
602 if (!TT.bytes_per_inode) TT.bytes_per_inode = 8192;
603 TT.inodes = (TT.blocks * (uint64_t)TT.blocksize) / TT.bytes_per_inode;
609 if (!TT.blocks) TT.groups = (TT.treeblocks/TT.blockbits)+1;
610 else TT.groups = div_round_up(TT.blocks, TT.blockbits);
613 temp = TT.treeblocks;
615 for (i = 0; i<TT.groups; i++) temp += group_overhead(i);
617 if (TT.blocks) {
618 if (TT.blocks < temp) error_exit("Not enough space.\n");
621 if (temp <= TT.groups * TT.blockbits) {
622 TT.blocks = temp;
625 TT.groups++;
627 TT.freeblocks = TT.blocks - temp;
629 // Now we know all the TT data, initialize superblock structure.
638 for (i=0; i<TT.groups; i++) {
644 end = TT.blockbits;
645 if ((i+1)*TT.blockbits > TT.blocks) end = TT.blocks & (TT.blockbits-1);
648 itable = (TT.inodespg*sizeof(struct ext2_inode))/TT.blocksize;
654 int treeblocks = TT.treeblocks, treeinodes = TT.treeinodes;
659 xwrite(TT.fsfd, &sb, sizeof(struct ext2_superblock));
660 temp = TT.blocksize - sizeof(struct ext2_superblock);
661 if (!i && TT.blocksize > 1024) temp -= 1024;
662 memset(toybuf, 0, TT.blocksize);
663 xwrite(TT.fsfd, toybuf, temp);
666 for(j=0; j<TT.groups; j++) {
672 slot = j % (TT.blocksize/sizeof(struct ext2_group));
674 if (j) xwrite(TT.fsfd, bg, TT.blocksize);
675 memset(bg, 0, TT.blocksize);
679 temp = TT.inodespg;
691 temp = TT.inodespg/(TT.blocksize/sizeof(struct ext2_inode)) + 2;
703 used += j*TT.blockbits;
709 xwrite(TT.fsfd, bg, TT.blocksize);
717 memset(toybuf, 0, TT.blocksize);
719 bits_set(toybuf, end, TT.blockbits-end);
720 temp = TT.treeblocks - usedblocks;
725 xwrite(TT.fsfd, toybuf, TT.blocksize);
728 memset(toybuf, 0, TT.blocksize);
731 bits_set(toybuf, TT.inodespg, slot = TT.blockbits-TT.inodespg);
732 temp = TT.treeinodes - usedinodes;
737 xwrite(TT.fsfd, toybuf, TT.blocksize);
740 for (j = 0; j<TT.inodespg; j++) {
741 slot = j % (TT.blocksize/sizeof(struct ext2_inode));
743 if (j) xwrite(TT.fsfd, in, TT.blocksize);
744 memset(in, 0, TT.blocksize);
754 xwrite(TT.fsfd, in, TT.blocksize);
761 put_zeroes(TT.blocksize);
766 put_zeroes((end-start) * TT.blocksize);