|
|
@@ -1000,36 +1000,6 @@ static void ocfs2_disable_quotas(struct ocfs2_super *osb)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/* Handle quota on quotactl */
|
|
|
-static int ocfs2_quota_on(struct super_block *sb, int type, int format_id)
|
|
|
-{
|
|
|
- unsigned int feature[OCFS2_MAXQUOTAS] = {
|
|
|
- OCFS2_FEATURE_RO_COMPAT_USRQUOTA,
|
|
|
- OCFS2_FEATURE_RO_COMPAT_GRPQUOTA};
|
|
|
-
|
|
|
- if (!OCFS2_HAS_RO_COMPAT_FEATURE(sb, feature[type]))
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- return dquot_enable(sb_dqopt(sb)->files[type], type,
|
|
|
- format_id, DQUOT_LIMITS_ENABLED);
|
|
|
-}
|
|
|
-
|
|
|
-/* Handle quota off quotactl */
|
|
|
-static int ocfs2_quota_off(struct super_block *sb, int type)
|
|
|
-{
|
|
|
- return dquot_disable(sb, type, DQUOT_LIMITS_ENABLED);
|
|
|
-}
|
|
|
-
|
|
|
-static const struct quotactl_ops ocfs2_quotactl_ops = {
|
|
|
- .quota_on_meta = ocfs2_quota_on,
|
|
|
- .quota_off = ocfs2_quota_off,
|
|
|
- .quota_sync = dquot_quota_sync,
|
|
|
- .get_info = dquot_get_dqinfo,
|
|
|
- .set_info = dquot_set_dqinfo,
|
|
|
- .get_dqblk = dquot_get_dqblk,
|
|
|
- .set_dqblk = dquot_set_dqblk,
|
|
|
-};
|
|
|
-
|
|
|
static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)
|
|
|
{
|
|
|
struct dentry *root;
|
|
|
@@ -2079,7 +2049,7 @@ static int ocfs2_initialize_super(struct super_block *sb,
|
|
|
sb->s_op = &ocfs2_sops;
|
|
|
sb->s_d_op = &ocfs2_dentry_ops;
|
|
|
sb->s_export_op = &ocfs2_export_ops;
|
|
|
- sb->s_qcop = &ocfs2_quotactl_ops;
|
|
|
+ sb->s_qcop = &dquot_quotactl_sysfile_ops;
|
|
|
sb->dq_op = &ocfs2_quota_operations;
|
|
|
sb->s_quota_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
|
|
|
sb->s_xattr = ocfs2_xattr_handlers;
|