summaryrefslogtreecommitdiff
path: root/misc/mke2fs.c
diff options
context:
space:
mode:
authorAditya Kali <adityakali@google.com>2011-11-14 10:55:54 -0500
committerTheodore Ts'o <tytso@mit.edu>2011-11-14 10:55:54 -0500
commitd678fef0d78fb3c5546cd9398698ddc0106618f6 (patch)
tree8b9f7382db070bae4d545dd33ccc07ef2978ae0b /misc/mke2fs.c
parentd7c6f4e6d067a3547379acb0d7ef9e95038bef28 (diff)
downloade2fsprogs-d678fef0d78fb3c5546cd9398698ddc0106618f6.tar.gz
mke2fs: Add extended option to select quota type
mke2fs was creating both user and group quota inodes on enabling the quota feature. This patch adds the extended option 'quotatype' that can be used to exclusively specify the quota type that the user wants to initialize. # Ex: Default behavior without extended option creates both # user and group quota inodes: $ mke2fs -t ext4 -O quota /dev/ram1 # To enable only user quotas: $ mke2fs -t ext4 -O quota -E quotatype=usr /dev/ram1 # To enable only group quotas: $ mke2fs -t ext4 -O quota -E quotatype=grp /dev/ram1 Signed-off-by: Aditya Kali <adityakali@google.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'misc/mke2fs.c')
-rw-r--r--misc/mke2fs.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index 0801c6e6..0ef25317 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -95,6 +95,7 @@ int journal_flags;
int lazy_itable_init;
char *bad_blocks_filename;
__u32 fs_stride;
+int quotatype = -1; /* Initialize both user and group quotas by default */
struct ext2_super_block fs_param;
char *fs_uuid = NULL;
@@ -793,6 +794,23 @@ static void parse_extended_opts(struct ext2_super_block *param,
discard = 1;
} else if (!strcmp(token, "nodiscard")) {
discard = 0;
+ } else if (!strcmp(token, "quotatype")) {
+ if (!arg) {
+ r_usage++;
+ badopt = token;
+ continue;
+ }
+ if (!strncmp(arg, "usr", 3)) {
+ quotatype = 0;
+ } else if (!strncmp(arg, "grp", 3)) {
+ quotatype = 1;
+ } else {
+ fprintf(stderr,
+ _("Invalid quotatype parameter: %s\n"),
+ arg);
+ r_usage++;
+ continue;
+ }
} else {
r_usage++;
badopt = token;
@@ -811,7 +829,8 @@ static void parse_extended_opts(struct ext2_super_block *param,
"\tlazy_journal_init=<0 to disable, 1 to enable>\n"
"\ttest_fs\n"
"\tdiscard\n"
- "\tnodiscard\n\n"),
+ "\tnodiscard\n"
+ "\tquotatype=<usr OR grp>\n\n"),
badopt ? badopt : "");
free(buf);
exit(1);
@@ -2186,8 +2205,7 @@ static int create_quota_inodes(ext2_filsys fs)
quota_init_context(&qctx, fs, -1);
quota_compute_usage(qctx);
- quota_write_inode(qctx, USRQUOTA);
- quota_write_inode(qctx, GRPQUOTA);
+ quota_write_inode(qctx, quotatype);
quota_release_context(&qctx);
return 0;