2009-12-14 14:12:01

by Jerome Marchand

[permalink] [raw]
Subject: [PATCH RHEL6 4/4] ext4: Support for 64-bit quota format

Bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=546311

Description:
Add support for new 64-bit quota format. It is enough to add proper
mount options handling. The rest is done by the generic code.

CC: [email protected]
CC: [email protected]
Signed-off-by: Jan Kara <[email protected]>
---
fs/ext4/super.c | 30 ++++++++++++++++++++++++------
1 file changed, 24 insertions(+), 6 deletions(-)

Index: rhel6/fs/ext4/super.c
===================================================================
--- rhel6.orig/fs/ext4/super.c
+++ rhel6/fs/ext4/super.c
@@ -743,9 +743,22 @@ static inline void ext4_show_quota_optio
#if defined(CONFIG_QUOTA)
struct ext4_sb_info *sbi = EXT4_SB(sb);

- if (sbi->s_jquota_fmt)
- seq_printf(seq, ",jqfmt=%s",
- (sbi->s_jquota_fmt == QFMT_VFS_OLD) ? "vfsold" : "vfsv0");
+ if (sbi->s_jquota_fmt) {
+ char *fmtname = "";
+
+ switch (sbi->s_jquota_fmt) {
+ case QFMT_VFS_OLD:
+ fmtname = "vfsold";
+ break;
+ case QFMT_VFS_V0:
+ fmtname = "vfsv0";
+ break;
+ case QFMT_VFS_V1:
+ fmtname = "vfsv1";
+ break;
+ }
+ seq_printf(seq, ",jqfmt=%s", fmtname);
+ }

if (sbi->s_qf_names[USRQUOTA])
seq_printf(seq, ",usrjquota=%s", sbi->s_qf_names[USRQUOTA]);
@@ -1052,9 +1065,9 @@ enum {
Opt_abort, Opt_data_journal, Opt_data_ordered, Opt_data_writeback,
Opt_data_err_abort, Opt_data_err_ignore, Opt_mb_history_length,
Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
- Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
- Opt_ignore, Opt_barrier, Opt_nobarrier, Opt_err, Opt_resize,
- Opt_usrquota, Opt_grpquota, Opt_i_version,
+ Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_jqfmt_vfsv1, Opt_quota,
+ Opt_noquota, Opt_ignore, Opt_barrier, Opt_nobarrier, Opt_err,
+ Opt_resize, Opt_usrquota, Opt_grpquota, Opt_i_version,
Opt_stripe, Opt_delalloc, Opt_nodelalloc,
Opt_block_validity, Opt_noblock_validity,
Opt_inode_readahead_blks, Opt_journal_ioprio
@@ -1104,6 +1117,7 @@ static const match_table_t tokens = {
{Opt_grpjquota, "grpjquota=%s"},
{Opt_jqfmt_vfsold, "jqfmt=vfsold"},
{Opt_jqfmt_vfsv0, "jqfmt=vfsv0"},
+ {Opt_jqfmt_vfsv1, "jqfmt=vfsv1"},
{Opt_grpquota, "grpquota"},
{Opt_noquota, "noquota"},
{Opt_quota, "quota"},
@@ -1411,6 +1425,9 @@ clear_qf_name:
goto set_qf_format;
case Opt_jqfmt_vfsv0:
qfmt = QFMT_VFS_V0;
+ goto set_qf_format;
+ case Opt_jqfmt_vfsv1:
+ qfmt = QFMT_VFS_V1;
set_qf_format:
if (sb_any_quota_loaded(sb) &&
sbi->s_jquota_fmt != qfmt) {
@@ -1453,6 +1470,7 @@ set_qf_format:
case Opt_offgrpjquota:
case Opt_jqfmt_vfsold:
case Opt_jqfmt_vfsv0:
+ case Opt_jqfmt_vfsv1:
ext4_msg(sb, KERN_ERR,
"journaled quota options not supported");
break;



2009-12-14 14:22:47

by Jerome Marchand

[permalink] [raw]
Subject: Re: [PATCH RHEL6 4/4] ext4: Support for 64-bit quota format

Please disregard that email. I just made a "quilt mail" mistake.

Sorry for the noise,
Jerome

On 12/14/2009 03:11 PM, [email protected] wrote:
> Bugzilla:
> https://bugzilla.redhat.com/show_bug.cgi?id=546311
>
> Description:
> Add support for new 64-bit quota format. It is enough to add proper
> mount options handling. The rest is done by the generic code.
>
> CC: [email protected]
> CC: [email protected]
> Signed-off-by: Jan Kara <[email protected]>
> ---
> fs/ext4/super.c | 30 ++++++++++++++++++++++++------
> 1 file changed, 24 insertions(+), 6 deletions(-)
>
> Index: rhel6/fs/ext4/super.c
> ===================================================================
> --- rhel6.orig/fs/ext4/super.c
> +++ rhel6/fs/ext4/super.c
> @@ -743,9 +743,22 @@ static inline void ext4_show_quota_optio
> #if defined(CONFIG_QUOTA)
> struct ext4_sb_info *sbi = EXT4_SB(sb);
>
> - if (sbi->s_jquota_fmt)
> - seq_printf(seq, ",jqfmt=%s",
> - (sbi->s_jquota_fmt == QFMT_VFS_OLD) ? "vfsold" : "vfsv0");
> + if (sbi->s_jquota_fmt) {
> + char *fmtname = "";
> +
> + switch (sbi->s_jquota_fmt) {
> + case QFMT_VFS_OLD:
> + fmtname = "vfsold";
> + break;
> + case QFMT_VFS_V0:
> + fmtname = "vfsv0";
> + break;
> + case QFMT_VFS_V1:
> + fmtname = "vfsv1";
> + break;
> + }
> + seq_printf(seq, ",jqfmt=%s", fmtname);
> + }
>
> if (sbi->s_qf_names[USRQUOTA])
> seq_printf(seq, ",usrjquota=%s", sbi->s_qf_names[USRQUOTA]);
> @@ -1052,9 +1065,9 @@ enum {
> Opt_abort, Opt_data_journal, Opt_data_ordered, Opt_data_writeback,
> Opt_data_err_abort, Opt_data_err_ignore, Opt_mb_history_length,
> Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
> - Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
> - Opt_ignore, Opt_barrier, Opt_nobarrier, Opt_err, Opt_resize,
> - Opt_usrquota, Opt_grpquota, Opt_i_version,
> + Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_jqfmt_vfsv1, Opt_quota,
> + Opt_noquota, Opt_ignore, Opt_barrier, Opt_nobarrier, Opt_err,
> + Opt_resize, Opt_usrquota, Opt_grpquota, Opt_i_version,
> Opt_stripe, Opt_delalloc, Opt_nodelalloc,
> Opt_block_validity, Opt_noblock_validity,
> Opt_inode_readahead_blks, Opt_journal_ioprio
> @@ -1104,6 +1117,7 @@ static const match_table_t tokens = {
> {Opt_grpjquota, "grpjquota=%s"},
> {Opt_jqfmt_vfsold, "jqfmt=vfsold"},
> {Opt_jqfmt_vfsv0, "jqfmt=vfsv0"},
> + {Opt_jqfmt_vfsv1, "jqfmt=vfsv1"},
> {Opt_grpquota, "grpquota"},
> {Opt_noquota, "noquota"},
> {Opt_quota, "quota"},
> @@ -1411,6 +1425,9 @@ clear_qf_name:
> goto set_qf_format;
> case Opt_jqfmt_vfsv0:
> qfmt = QFMT_VFS_V0;
> + goto set_qf_format;
> + case Opt_jqfmt_vfsv1:
> + qfmt = QFMT_VFS_V1;
> set_qf_format:
> if (sb_any_quota_loaded(sb) &&
> sbi->s_jquota_fmt != qfmt) {
> @@ -1453,6 +1470,7 @@ set_qf_format:
> case Opt_offgrpjquota:
> case Opt_jqfmt_vfsold:
> case Opt_jqfmt_vfsv0:
> + case Opt_jqfmt_vfsv1:
> ext4_msg(sb, KERN_ERR,
> "journaled quota options not supported");
> break;
>