aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext3
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2009-11-30 16:22:41 -0500
committerJan Kara <jack@suse.cz>2009-12-10 09:02:54 -0500
commit1aeec43432d6bfb7a300bb0363f2723b8c4c706d (patch)
tree082a2dde06351428ba09b6de57e0178ab282e56d /fs/ext3
parent498c60153ebb8889d8944591383c5c12af1127d4 (diff)
ext3: Support for vfsv1 quota format
We just have to add proper mount options handling. The rest is handled by the generic quota code. CC: linux-ext4@vger.kernel.org Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/ext3')
-rw-r--r--fs/ext3/super.c30
1 files changed, 24 insertions, 6 deletions
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 46433b30e45f..7ad1e8c30bd0 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -539,9 +539,22 @@ static inline void ext3_show_quota_options(struct seq_file *seq, struct super_bl
539#if defined(CONFIG_QUOTA) 539#if defined(CONFIG_QUOTA)
540 struct ext3_sb_info *sbi = EXT3_SB(sb); 540 struct ext3_sb_info *sbi = EXT3_SB(sb);
541 541
542 if (sbi->s_jquota_fmt) 542 if (sbi->s_jquota_fmt) {
543 seq_printf(seq, ",jqfmt=%s", 543 char *fmtname = "";
544 (sbi->s_jquota_fmt == QFMT_VFS_OLD) ? "vfsold": "vfsv0"); 544
545 switch (sbi->s_jquota_fmt) {
546 case QFMT_VFS_OLD:
547 fmtname = "vfsold";
548 break;
549 case QFMT_VFS_V0:
550 fmtname = "vfsv0";
551 break;
552 case QFMT_VFS_V1:
553 fmtname = "vfsv1";
554 break;
555 }
556 seq_printf(seq, ",jqfmt=%s", fmtname);
557 }
545 558
546 if (sbi->s_qf_names[USRQUOTA]) 559 if (sbi->s_qf_names[USRQUOTA])
547 seq_printf(seq, ",usrjquota=%s", sbi->s_qf_names[USRQUOTA]); 560 seq_printf(seq, ",usrjquota=%s", sbi->s_qf_names[USRQUOTA]);
@@ -802,9 +815,9 @@ enum {
802 Opt_abort, Opt_data_journal, Opt_data_ordered, Opt_data_writeback, 815 Opt_abort, Opt_data_journal, Opt_data_ordered, Opt_data_writeback,
803 Opt_data_err_abort, Opt_data_err_ignore, 816 Opt_data_err_abort, Opt_data_err_ignore,
804 Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota, 817 Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
805 Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota, 818 Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_jqfmt_vfsv1, Opt_quota,
806 Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota, 819 Opt_noquota, Opt_ignore, Opt_barrier, Opt_err, Opt_resize,
807 Opt_grpquota 820 Opt_usrquota, Opt_grpquota
808}; 821};
809 822
810static const match_table_t tokens = { 823static const match_table_t tokens = {
@@ -852,6 +865,7 @@ static const match_table_t tokens = {
852 {Opt_grpjquota, "grpjquota=%s"}, 865 {Opt_grpjquota, "grpjquota=%s"},
853 {Opt_jqfmt_vfsold, "jqfmt=vfsold"}, 866 {Opt_jqfmt_vfsold, "jqfmt=vfsold"},
854 {Opt_jqfmt_vfsv0, "jqfmt=vfsv0"}, 867 {Opt_jqfmt_vfsv0, "jqfmt=vfsv0"},
868 {Opt_jqfmt_vfsv1, "jqfmt=vfsv1"},
855 {Opt_grpquota, "grpquota"}, 869 {Opt_grpquota, "grpquota"},
856 {Opt_noquota, "noquota"}, 870 {Opt_noquota, "noquota"},
857 {Opt_quota, "quota"}, 871 {Opt_quota, "quota"},
@@ -1138,6 +1152,9 @@ clear_qf_name:
1138 goto set_qf_format; 1152 goto set_qf_format;
1139 case Opt_jqfmt_vfsv0: 1153 case Opt_jqfmt_vfsv0:
1140 qfmt = QFMT_VFS_V0; 1154 qfmt = QFMT_VFS_V0;
1155 goto set_qf_format;
1156 case Opt_jqfmt_vfsv1:
1157 qfmt = QFMT_VFS_V1;
1141set_qf_format: 1158set_qf_format:
1142 if (sb_any_quota_loaded(sb) && 1159 if (sb_any_quota_loaded(sb) &&
1143 sbi->s_jquota_fmt != qfmt) { 1160 sbi->s_jquota_fmt != qfmt) {
@@ -1180,6 +1197,7 @@ set_qf_format:
1180 case Opt_offgrpjquota: 1197 case Opt_offgrpjquota:
1181 case Opt_jqfmt_vfsold: 1198 case Opt_jqfmt_vfsold:
1182 case Opt_jqfmt_vfsv0: 1199 case Opt_jqfmt_vfsv0:
1200 case Opt_jqfmt_vfsv1:
1183 ext3_msg(sb, KERN_ERR, 1201 ext3_msg(sb, KERN_ERR,
1184 "error: journaled quota options not " 1202 "error: journaled quota options not "
1185 "supported."); 1203 "supported.");