OSDN Git Service

mke2fs: enforce that the cluster size must be greater that the block size
authorTheodore Ts'o <tytso@mit.edu>
Mon, 14 Jan 2013 22:28:00 +0000 (17:28 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 15 Jan 2013 19:03:53 +0000 (14:03 -0500)
In addition, do not allow a cluster size of 1024, since that will be
interpreted by ext2fs_initialize() as requesting the default cluster
size.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
Reported-by: Zheng Liu <wenqing.lz@taobao.com>
misc/mke2fs.c

index 4748f4a..98c2035 100644 (file)
@@ -1346,7 +1346,7 @@ profile_error:
                        break;
                case 'C':
                        cluster_size = strtoul(optarg, &tmp, 0);
-                       if (cluster_size < EXT2_MIN_CLUSTER_SIZE ||
+                       if (cluster_size <= EXT2_MIN_CLUSTER_SIZE ||
                            cluster_size > EXT2_MAX_CLUSTER_SIZE || *tmp) {
                                com_err(program_name, 0,
                                        _("invalid cluster size - %s"),
@@ -1847,6 +1847,13 @@ profile_error:
                                                            blocksize*16);
                fs_param.s_log_cluster_size =
                        int_log2(cluster_size >> EXT2_MIN_CLUSTER_LOG_SIZE);
+               if (fs_param.s_log_cluster_size &&
+                   fs_param.s_log_cluster_size < fs_param.s_log_block_size) {
+                       com_err(program_name, 0,
+                               _("The cluster size may not be "
+                                 "smaller than the block size.\n"));
+                       exit(1);
+               }
        } else if (cluster_size) {
                com_err(program_name, 0,
                        _("specifying a cluster size requires the "