diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-10 18:43:30 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-10 18:43:30 -0500 |
commit | 1366f5d3129f2abde606214de7afc3dd61781fa3 (patch) | |
tree | b275b18e90bd24d64e09894a812bbd7dd1c424f5 /fs/ocfs2 | |
parent | 4b0a268eeccae14d42ff5fb9f19b612913c0007c (diff) | |
parent | fdf2657bc81b10dee856ec9f8fe5b201c0561e9d (diff) |
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
Pull quota updates from Jan Kara:
"Quota improvements and some minor cleanups.
The main portion in the pull request are changes which move i_dquot
array from struct inode into fs-private part of an inode which saves
memory for filesystems which don't use VFS quotas"
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
udf: One function call less in udf_fill_super() after error detection
udf: Deletion of unnecessary checks before the function call "iput"
jbd: Deletion of an unnecessary check before the function call "iput"
vfs: Remove i_dquot field from inode
jfs: Convert to private i_dquot field
reiserfs: Convert to private i_dquot field
ocfs2: Convert to private i_dquot field
ext4: Convert to private i_dquot field
ext3: Convert to private i_dquot field
ext2: Convert to private i_dquot field
quota: Use function to provide i_dquot pointers
xfs: Set allowed quota types
gfs2: Set allowed quota types
quota: Allow each filesystem to specify which quota types it supports
quota: Remove const from function declarations
quota: Add log level to printk
Diffstat (limited to 'fs/ocfs2')
-rw-r--r-- | fs/ocfs2/inode.h | 2 | ||||
-rw-r--r-- | fs/ocfs2/super.c | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/fs/ocfs2/inode.h b/fs/ocfs2/inode.h index a9b76de46047..ca3431ee7f24 100644 --- a/fs/ocfs2/inode.h +++ b/fs/ocfs2/inode.h | |||
@@ -80,6 +80,8 @@ struct ocfs2_inode_info | |||
80 | */ | 80 | */ |
81 | tid_t i_sync_tid; | 81 | tid_t i_sync_tid; |
82 | tid_t i_datasync_tid; | 82 | tid_t i_datasync_tid; |
83 | |||
84 | struct dquot *i_dquot[MAXQUOTAS]; | ||
83 | }; | 85 | }; |
84 | 86 | ||
85 | /* | 87 | /* |
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 93c85bc745e1..0945814ddb7b 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); | |||
143 | static int ocfs2_enable_quotas(struct ocfs2_super *osb); | 143 | static int ocfs2_enable_quotas(struct ocfs2_super *osb); |
144 | static void ocfs2_disable_quotas(struct ocfs2_super *osb); | 144 | static void ocfs2_disable_quotas(struct ocfs2_super *osb); |
145 | 145 | ||
146 | static struct dquot **ocfs2_get_dquots(struct inode *inode) | ||
147 | { | ||
148 | return OCFS2_I(inode)->i_dquot; | ||
149 | } | ||
150 | |||
146 | static const struct super_operations ocfs2_sops = { | 151 | static const struct super_operations ocfs2_sops = { |
147 | .statfs = ocfs2_statfs, | 152 | .statfs = ocfs2_statfs, |
148 | .alloc_inode = ocfs2_alloc_inode, | 153 | .alloc_inode = ocfs2_alloc_inode, |
@@ -155,6 +160,7 @@ static const struct super_operations ocfs2_sops = { | |||
155 | .show_options = ocfs2_show_options, | 160 | .show_options = ocfs2_show_options, |
156 | .quota_read = ocfs2_quota_read, | 161 | .quota_read = ocfs2_quota_read, |
157 | .quota_write = ocfs2_quota_write, | 162 | .quota_write = ocfs2_quota_write, |
163 | .get_dquots = ocfs2_get_dquots, | ||
158 | }; | 164 | }; |
159 | 165 | ||
160 | enum { | 166 | enum { |
@@ -563,6 +569,7 @@ static struct inode *ocfs2_alloc_inode(struct super_block *sb) | |||
563 | 569 | ||
564 | oi->i_sync_tid = 0; | 570 | oi->i_sync_tid = 0; |
565 | oi->i_datasync_tid = 0; | 571 | oi->i_datasync_tid = 0; |
572 | memset(&oi->i_dquot, 0, sizeof(oi->i_dquot)); | ||
566 | 573 | ||
567 | jbd2_journal_init_jbd_inode(&oi->ip_jinode, &oi->vfs_inode); | 574 | jbd2_journal_init_jbd_inode(&oi->ip_jinode, &oi->vfs_inode); |
568 | return &oi->vfs_inode; | 575 | return &oi->vfs_inode; |
@@ -2073,6 +2080,7 @@ static int ocfs2_initialize_super(struct super_block *sb, | |||
2073 | sb->s_export_op = &ocfs2_export_ops; | 2080 | sb->s_export_op = &ocfs2_export_ops; |
2074 | sb->s_qcop = &ocfs2_quotactl_ops; | 2081 | sb->s_qcop = &ocfs2_quotactl_ops; |
2075 | sb->dq_op = &ocfs2_quota_operations; | 2082 | sb->dq_op = &ocfs2_quota_operations; |
2083 | sb->s_quota_types = QTYPE_MASK_USR | QTYPE_MASK_GRP; | ||
2076 | sb->s_xattr = ocfs2_xattr_handlers; | 2084 | sb->s_xattr = ocfs2_xattr_handlers; |
2077 | sb->s_time_gran = 1; | 2085 | sb->s_time_gran = 1; |
2078 | sb->s_flags |= MS_NOATIME; | 2086 | sb->s_flags |= MS_NOATIME; |