Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ocfs2: Move OLQF_CLEAN flag out of generic quota flags

OLQF_CLEAN flag is used by OCFS2 on disk to recognize whether quota
recovery is needed or not. We also somewhat abuse mem_dqinfo->dqi_flags
to pass this flag around. Use private flags for this to avoid clashes
with other quota flags / not pollute generic quota flag namespace.

Signed-off-by: Jan Kara <jack@suse.cz>

Jan Kara 96827adc c119c5b9

+6 -5
+1
fs/ocfs2/quota.h
··· 48 48 /* In-memory structure with quota header information */ 49 49 struct ocfs2_mem_dqinfo { 50 50 unsigned int dqi_type; /* Quota type this structure describes */ 51 + unsigned int dqi_flags; /* Flags OLQF_* */ 51 52 unsigned int dqi_chunks; /* Number of chunks in local quota file */ 52 53 unsigned int dqi_blocks; /* Number of blocks allocated for local quota file */ 53 54 unsigned int dqi_syncms; /* How often should we sync with other nodes */
+5 -5
fs/ocfs2/quota_local.c
··· 292 292 ldinfo = (struct ocfs2_local_disk_dqinfo *)(bh->b_data + 293 293 OCFS2_LOCAL_INFO_OFF); 294 294 spin_lock(&dq_data_lock); 295 - ldinfo->dqi_flags = cpu_to_le32(info->dqi_flags & DQF_MASK); 295 + ldinfo->dqi_flags = cpu_to_le32(oinfo->dqi_flags); 296 296 ldinfo->dqi_chunks = cpu_to_le32(oinfo->dqi_chunks); 297 297 ldinfo->dqi_blocks = cpu_to_le32(oinfo->dqi_blocks); 298 298 spin_unlock(&dq_data_lock); ··· 737 737 } 738 738 ldinfo = (struct ocfs2_local_disk_dqinfo *)(bh->b_data + 739 739 OCFS2_LOCAL_INFO_OFF); 740 - info->dqi_flags = le32_to_cpu(ldinfo->dqi_flags); 740 + oinfo->dqi_flags = le32_to_cpu(ldinfo->dqi_flags); 741 741 oinfo->dqi_chunks = le32_to_cpu(ldinfo->dqi_chunks); 742 742 oinfo->dqi_blocks = le32_to_cpu(ldinfo->dqi_blocks); 743 743 oinfo->dqi_libh = bh; 744 744 745 745 /* We crashed when using local quota file? */ 746 - if (!(info->dqi_flags & OLQF_CLEAN)) { 746 + if (!(oinfo->dqi_flags & OLQF_CLEAN)) { 747 747 rec = OCFS2_SB(sb)->quota_rec; 748 748 if (!rec) { 749 749 rec = ocfs2_alloc_quota_recovery(); ··· 772 772 } 773 773 774 774 /* Now mark quota file as used */ 775 - info->dqi_flags &= ~OLQF_CLEAN; 775 + oinfo->dqi_flags &= ~OLQF_CLEAN; 776 776 status = ocfs2_modify_bh(lqinode, bh, olq_update_info, info); 777 777 if (status < 0) { 778 778 mlog_errno(status); ··· 857 857 goto out; 858 858 859 859 /* Mark local file as clean */ 860 - info->dqi_flags |= OLQF_CLEAN; 860 + oinfo->dqi_flags |= OLQF_CLEAN; 861 861 status = ocfs2_modify_bh(sb_dqopt(sb)->files[type], 862 862 oinfo->dqi_libh, 863 863 olq_update_info,