Re: [RFC][PATCH 1/11][take 2] add new mkfs option to create ext4 filesystems

Aneesh Kumar K.V
2007-06-25T14:55:09Z

Valerie Clement wrote:
> This patch adds a new option '-D' to mkfs to allow creating ext4
> filesystem.
>
> lib/ext2fs/ext2_fs.h | 7 +++++++
> lib/ext2fs/initialize.c | 1 +
> misc/mke2fs.c | 18 ++++++++++++++++--
> 3 files changed, 24 insertions(+), 2 deletions(-)
>
>
>
>
>
> ------------------------------------------------------------------------
>
> Index: e2fsprogs-1.39-tyt3-v7/misc/mke2fs.c
> ===================================================================
> --- e2fsprogs-1.39-tyt3-v7.orig/misc/mke2fs.c 2007-04-30 07:10:05.000000000 +0200
> +++ e2fsprogs-1.39-tyt3-v7/misc/mke2fs.c 2007-06-14 12:03:48.000000000 +0200
> @@ -96,7 +96,7 @@ static void usage(void)
> {
> fprintf(stderr, _("Usage: %s [-c|-t|-l filename] [-b block-size] "
> "[-f fragment-size]\n\t[-i bytes-per-inode] [-I inode-size] "
> - "[-j] [-J journal-options]\n"
> + "[-D descriptor-size] [-j] [-J journal-options]\n"
> "\t[-N number-of-inodes] [-m reserved-blocks-percentage] "
> "[-o creator-os]\n\t[-g blocks-per-group] [-L volume-label] "
> "[-M last-mounted-directory]\n\t[-O feature[,...]] "
> @@ -899,6 +899,7 @@ static void PRS(int argc, char *argv[])
> int blocksize = 0;
> int inode_ratio = 0;
> int inode_size = 0;
> + int desc_size = 0;
> double reserved_ratio = 5.0;
> int sector_size = 0;
> int show_version_only = 0;
> @@ -977,7 +978,7 @@ static void PRS(int argc, char *argv[])
> }
>
> while ((c = getopt (argc, argv,
> - "b:cf:g:i:jl:m:no:qr:s:tvE:FI:J:L:M:N:O:R:ST:V")) != EOF) {
> + "b:cf:g:i:jl:m:no:qr:s:tvD:E:FI:J:L:M:N:O:R:ST:V")) != EOF) {
> switch (c) {
> case 'b':
> blocksize = strtol(optarg, &tmp, 0);
> @@ -1094,6 +1095,14 @@ static void PRS(int argc, char *argv[])
> exit(1);
> }
> break;
> + case 'D':
> + desc_size = strtoul(optarg, &tmp, 0);
> + if (*tmp) {
> + com_err(program_name, 0,
> + _("invalid descriptor size - %s"), optarg);
> + exit(1);
> + }
> + break;
> case 'v':
> verbose = 1;
> break;
> @@ -1422,6 +1431,11 @@ static void PRS(int argc, char *argv[])
> }
> }
>
> + if (desc_size >= EXT2_MIN_DESC_SIZE_64BIT) {
> + fs_param.s_feature_incompat |= EXT4_FEATURE_INCOMPAT_64BIT;
> + fs_param.s_desc_size = EXT2_MIN_DESC_SIZE_64BIT;
> + }
> +
> if (!force && fs_param.s_blocks_count >= ((unsigned) 1 << 31)) {
>

Why would one need variable descriptor size. Right now we have only two descriptor sizes right (32 and 64 ). Can't we figure out
the descriptor size we should use by looking at the partition size ? What is that i am missing ?.

-aneesh