Allow specifying reserved blocks percentage
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
This commit is contained in:
parent
67cbf164c7
commit
828ec043d2
@ -39,6 +39,7 @@ struct fs_info {
|
||||
uint16_t feat_compat;
|
||||
uint16_t feat_incompat;
|
||||
uint32_t bg_desc_reserve_blocks;
|
||||
uint32_t reserve_pcnt;
|
||||
const char *label;
|
||||
uint8_t no_journal;
|
||||
};
|
||||
|
@ -191,7 +191,7 @@ void ext4_fill_in_sb()
|
||||
|
||||
sb->s_inodes_count = info.inodes_per_group * aux_info.groups;
|
||||
sb->s_blocks_count_lo = aux_info.len_blocks;
|
||||
sb->s_r_blocks_count_lo = 0;
|
||||
sb->s_r_blocks_count_lo = (aux_info.len_blocks / 100) * info.reserve_pcnt;
|
||||
sb->s_free_blocks_count_lo = 0;
|
||||
sb->s_free_inodes_count = 0;
|
||||
sb->s_first_data_block = aux_info.first_data_block;
|
||||
@ -533,4 +533,3 @@ int read_ext(int fd, int verbose)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -456,6 +456,7 @@ int make_ext4fs_internal(int fd, const char *_directory,
|
||||
|
||||
printf(" Blocks: %"PRIu64"\n", aux_info.len_blocks);
|
||||
printf(" Block groups: %d\n", aux_info.groups);
|
||||
printf(" Reserved blocks: %"PRIu64"\n", (aux_info.len_blocks / 100) * info.reserve_pcnt);
|
||||
printf(" Reserved block group size: %d\n", info.bg_desc_reserve_blocks);
|
||||
|
||||
ext4_sparse_file = sparse_file_new(info.block_size, info.len);
|
||||
|
@ -35,7 +35,7 @@ static void usage(char *path)
|
||||
{
|
||||
fprintf(stderr, "%s [ -l <len> ] [ -j <journal size> ] [ -b <block_size> ]\n", basename(path));
|
||||
fprintf(stderr, " [ -g <blocks per group> ] [ -i <inodes> ] [ -I <inode size> ]\n");
|
||||
fprintf(stderr, " [ -L <label> ] [ -f ]\n");
|
||||
fprintf(stderr, " [ -m <reserved blocks percent> ] [ -L <label> ] [ -f ]\n");
|
||||
fprintf(stderr, " [ -S file_contexts ] [ -C fs_config ] [ -T timestamp ]\n");
|
||||
fprintf(stderr, " [ -z | -s ] [ -w ] [ -c ] [ -J ] [ -v ] [ -B <block_list_file> ]\n");
|
||||
fprintf(stderr, " <filename> [<directory>]\n");
|
||||
@ -58,7 +58,7 @@ int main(int argc, char **argv)
|
||||
time_t fixed_time = -1;
|
||||
FILE* block_list_file = NULL;
|
||||
|
||||
while ((opt = getopt(argc, argv, "l:j:b:g:i:I:L:T:C:B:fwzJsctv")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "l:j:b:g:i:I:L:T:C:B:m:fwzJsctv")) != -1) {
|
||||
switch (opt) {
|
||||
case 'l':
|
||||
info.len = parse_num(optarg);
|
||||
@ -118,6 +118,9 @@ int main(int argc, char **argv)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
case 'm':
|
||||
info.reserve_pcnt = strtoul(optarg, NULL, 0);
|
||||
break;
|
||||
default: /* '?' */
|
||||
usage(argv[0]);
|
||||
exit(EXIT_FAILURE);
|
||||
|
Reference in New Issue
Block a user