Re: [PATCH 11/12] jfs: Convert to private i_dquot field

Dave Kleikamp <[email protected]>
Newsgroups gmane.comp.file-systems.jfs.general
Message-ID <5437FC2E.6020000__26666.6658026681$1412955247$gmane$org@oracle.com>
On 10/10/2014 09:55 AM, Jan Kara wrote:
> CC: Dave Kleikamp <[email protected]>
> CC: [email protected]
> Signed-off-by: Jan Kara <[email protected]>
> ---
>  fs/jfs/jfs_incore.h |  3 +++
>  fs/jfs/super.c      | 13 +++++++++++++
>  2 files changed, 16 insertions(+)
> 
> diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
> index cf47f09e8ac8..fa7e795bd8ae 100644
> --- a/fs/jfs/jfs_incore.h
> +++ b/fs/jfs/jfs_incore.h
> @@ -94,6 +94,9 @@ struct jfs_inode_info {
>  			unchar _inline_ea[128];	/* 128: inline extended attr */
>  		} link;
>  	} u;
> +#ifdef CONFIG_QUOTA
> +	struct dquot *i_dquot[MAXQUOTAS];
> +#endif
>  	u32 dev;	/* will die when we get wide dev_t */
>  	struct inode	vfs_inode;
>  };
> diff --git a/fs/jfs/super.c b/fs/jfs/super.c
> index adf8cb045b9e..a13727dd3826 100644
> --- a/fs/jfs/super.c
> +++ b/fs/jfs/super.c
> @@ -54,6 +54,7 @@ static struct kmem_cache *jfs_inode_cachep;
>  
>  static const struct super_operations jfs_super_operations;
>  static const struct export_operations jfs_export_operations;
> +static const int jfs_inode_fields[IF_FIELD_NR];

see below

>  static struct file_system_type jfs_fs_type;
>  
>  #define MAX_COMMIT_THREADS 64
> @@ -117,6 +118,9 @@ static struct inode *jfs_alloc_inode(struct super_block *sb)
>  	jfs_inode = kmem_cache_alloc(jfs_inode_cachep, GFP_NOFS);
>  	if (!jfs_inode)
>  		return NULL;
> +#ifdef CONFIG_QUOTA
> +	memset(&jfs_inode->i_dquot, 0, sizeof(jfs_inode->i_dquot));
> +#endif
>  	return &jfs_inode->vfs_inode;
>  }
>  
> @@ -537,7 +541,9 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
>  #ifdef CONFIG_QUOTA
>  	sb->dq_op = &dquot_operations;
>  	sb->s_qcop = &dquot_quotactl_ops;
> +	sb_dqopt(sb)->allowed_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
>  #endif
> +	sb_init_inode_fields(sb, jfs_inode_fields);
>  
>  	/*
>  	 * Initialize direct-mapping inode/address-space
> @@ -857,6 +863,13 @@ static const struct super_operations jfs_super_operations = {
>  #endif
>  };
>  
> +static const int jfs_inode_fields[IF_FIELD_NR] = {
> +#ifdef CONFIG_QUOTA
> +	[IF_DQUOTS] = (int)offsetof(struct jfs_inode_info, i_dquot) -
> +		      (int)offsetof(struct jfs_inode_info, vfs_inode),
> +#endif
> +};

Why isn't the initialization done up above where jfs_inode_fields is
first defined?

> +
>  static const struct export_operations jfs_export_operations = {
>  	.fh_to_dentry	= jfs_fh_to_dentry,
>  	.fh_to_parent	= jfs_fh_to_parent,
> 

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.