Re: [PATCH 09/12] ocfs2: Convert to private i_dquot field

Joel Becker <[email protected]>
Newsgroups gmane.comp.file-systems.jfs.general
Message-ID <20141023102554.GB5238__14612.0045953014$1414069790$gmane$org@localhost>
On Tue, Oct 21, 2014 at 04:38:33PM +0200, Jan Kara wrote:
> CC: Mark Fasheh <[email protected]>
> CC: Joel Becker <[email protected]>
> CC: [email protected]
> Signed-off-by: Jan Kara <[email protected]>
> ---
>  fs/ocfs2/inode.h |  4 ++++
>  fs/ocfs2/super.c | 10 ++++++++++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/fs/ocfs2/inode.h b/fs/ocfs2/inode.h
> index a9b76de46047..1bb2e27eaad7 100644
> --- a/fs/ocfs2/inode.h
> +++ b/fs/ocfs2/inode.h
> @@ -80,6 +80,10 @@ struct ocfs2_inode_info
>  	 */
>  	tid_t i_sync_tid;
>  	tid_t i_datasync_tid;
> +
> +#ifdef CONFIG_QUOTA
> +	struct dquot *i_dquot[MAXQUOTAS];
> +#endif
>  };
>  
>  /*
> diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
> index 93c85bc745e1..9a97986d54f5 100644
> --- a/fs/ocfs2/super.c
> +++ b/fs/ocfs2/super.c
> @@ -143,6 +143,11 @@ static int ocfs2_susp_quotas(struct ocfs2_super *osb, int unsuspend);
>  static int ocfs2_enable_quotas(struct ocfs2_super *osb);
>  static void ocfs2_disable_quotas(struct ocfs2_super *osb);
>  
> +static struct dquot **ocfs2_get_dquots(struct inode *inode)
> +{
> +	return OCFS2_I(inode)->i_dquot;
> +}

Call me silly, but given that ocfs2_inode_info->i_dquot; is wrapped in
CONFIG_QUOTA, shouldn't this accessor be as well?  Is GCC really smart
enough to ignore the undefined member because ocfs2_get_dquots() isn't
called?

Joel

> +
>  static const struct super_operations ocfs2_sops = {
>  	.statfs		= ocfs2_statfs,
>  	.alloc_inode	= ocfs2_alloc_inode,
> @@ -155,6 +160,7 @@ static const struct super_operations ocfs2_sops = {
>  	.show_options   = ocfs2_show_options,
>  	.quota_read	= ocfs2_quota_read,
>  	.quota_write	= ocfs2_quota_write,
> +	.get_dquots	= ocfs2_get_dquots,
>  };
>  
>  enum {
> @@ -563,6 +569,9 @@ static struct inode *ocfs2_alloc_inode(struct super_block *sb)
>  
>  	oi->i_sync_tid = 0;
>  	oi->i_datasync_tid = 0;
> +#ifdef CONFIG_QUOTA
> +	memset(&oi->i_dquot, 0, sizeof(oi->i_dquot));
> +#endif
>  
>  	jbd2_journal_init_jbd_inode(&oi->ip_jinode, &oi->vfs_inode);
>  	return &oi->vfs_inode;
> @@ -2073,6 +2082,7 @@ static int ocfs2_initialize_super(struct super_block *sb,
>  	sb->s_export_op = &ocfs2_export_ops;
>  	sb->s_qcop = &ocfs2_quotactl_ops;
>  	sb->dq_op = &ocfs2_quota_operations;
> +	sb_dqopt(sb)->allowed_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
>  	sb->s_xattr = ocfs2_xattr_handlers;
>  	sb->s_time_gran = 1;
>  	sb->s_flags |= MS_NOATIME;
> -- 
> 1.8.1.4
> 

-- 

"I'm so tired of being tired,
 Sure as night will follow day.
 Most things I worry about
 Never happen anyway."

			http://www.jlbec.org/
			[email protected]

------------------------------------------------------------------------------
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.