summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2011-07-04 20:51:19 -0400
committerTheodore Ts'o <tytso@mit.edu>2011-07-04 20:51:19 -0400
commitf37901a22d618916b53105e39ff91a8bb84d67bc (patch)
tree8741e9ba9b26caa30c5e2687d131410d71fcbd5c
parentc0b3deb5f8574f0486a00e6adb1d685040f2fe16 (diff)
parent5b734a0e715ba6590624247b0866e4791f717981 (diff)
downloade2fsprogs-f37901a22d618916b53105e39ff91a8bb84d67bc.tar.gz
Merge branch 'maint' into next
Conflicts: misc/tune2fs.c
-rw-r--r--misc/mke2fs.c4
-rw-r--r--misc/tune2fs.c22
2 files changed, 18 insertions, 8 deletions
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index 05cbbce7..e062bda0 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -680,7 +680,7 @@ static void parse_extended_opts(struct ext2_super_block *param,
continue;
}
param->s_raid_stride = strtoul(arg, &p, 0);
- if (*p || (param->s_raid_stride == 0)) {
+ if (*p) {
fprintf(stderr,
_("Invalid stride parameter: %s\n"),
arg);
@@ -695,7 +695,7 @@ static void parse_extended_opts(struct ext2_super_block *param,
continue;
}
param->s_raid_stripe_width = strtoul(arg, &p, 0);
- if (*p || (param->s_raid_stripe_width == 0)) {
+ if (*p) {
fprintf(stderr,
_("Invalid stripe-width parameter: %s\n"),
arg);
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index d7cb124c..5bf51870 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -81,6 +81,7 @@ static int stride, stripe_width;
static int stride_set, stripe_width_set;
static char *extended_cmd;
static unsigned long new_inode_size;
+static char *ext_mount_opts;
int journal_size, journal_flags;
char *journal_device;
@@ -939,7 +940,7 @@ static void parse_extended_opts(ext2_filsys fs, const char *opts)
continue;
}
stride = strtoul(arg, &p, 0);
- if (*p || (stride == 0)) {
+ if (*p) {
fprintf(stderr,
_("Invalid RAID stride: %s\n"),
arg);
@@ -954,7 +955,7 @@ static void parse_extended_opts(ext2_filsys fs, const char *opts)
continue;
}
stripe_width = strtoul(arg, &p, 0);
- if (*p || (stripe_width == 0)) {
+ if (*p) {
fprintf(stderr,
_("Invalid RAID stripe-width: %s\n"),
arg);
@@ -981,7 +982,7 @@ static void parse_extended_opts(ext2_filsys fs, const char *opts)
"to %s (%d)\n"),
arg, hash_alg);
ext2fs_mark_super_dirty(fs);
- } else if (strcmp(token, "mount-options")) {
+ } else if (!strcmp(token, "mount_opts")) {
if (!arg) {
r_usage++;
continue;
@@ -991,8 +992,7 @@ static void parse_extended_opts(ext2_filsys fs, const char *opts)
"Extended mount options too long\n");
continue;
}
- strcpy((char *)fs->super->s_mount_opts, arg);
- ext2fs_mark_super_dirty(fs);
+ ext_mount_opts = strdup(arg);
} else
r_usage++;
}
@@ -1002,9 +1002,10 @@ static void parse_extended_opts(ext2_filsys fs, const char *opts)
"and may take an argument which\n"
"\tis set off by an equals ('=') sign.\n\n"
"Valid extended options are:\n"
+ "\thash_alg=<hash algorithm>\n"
+ "\tmount_opts=<extended default mount options>\n"
"\tstride=<RAID per-disk chunk size in blocks>\n"
"\tstripe_width=<RAID stride*data disks in blocks>\n"
- "\thash_alg=<hash algorithm>\n"
"\ttest_fs\n"
"\t^test_fs\n"));
free(buf);
@@ -1862,6 +1863,15 @@ retry_open:
ext2fs_mark_super_dirty(fs);
printf(_("Setting stripe width to %d\n"), stripe_width);
}
+ if (ext_mount_opts) {
+ strncpy(fs->super->s_mount_opts, ext_mount_opts,
+ sizeof(fs->super->s_mount_opts));
+ fs->super->s_mount_opts[sizeof(fs->super->s_mount_opts)-1] = 0;
+ ext2fs_mark_super_dirty(fs);
+ printf(_("Setting extended default mount options to '%s'\n"),
+ ext_mount_opts);
+ free(ext_mount_opts);
+ }
free(device_name);
remove_error_table(&et_ext2_error_table);
return (ext2fs_close(fs) ? 1 : 0);