All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: linux-fsdevel@vger.kernel.org
Cc: cluster-devel@redhat.com, Jan Kara <jack@suse.cz>,
	ocfs2-devel@oss.oracle.com, xfs@oss.sgi.com
Subject: [PATCH 03/17] quota: Add ->quota_{enable, disable} callbacks for VFS quotas
Date: Fri, 16 Jan 2015 13:47:37 +0100	[thread overview]
Message-ID: <1421412471-4747-4-git-send-email-jack@suse.cz> (raw)
In-Reply-To: <1421412471-4747-1-git-send-email-jack@suse.cz>

Add functions which translate ->quota_enable / ->quota_disable calls
into appropriate changes in VFS quota. This will enable filesystems
supporting VFS quota files in system inodes to be controlled via
Q_XQUOTA[ON|OFF] quotactls for better userspace compatibility.

Also provide a vector for quotactl using these functions which can be
used by filesystems with quota files stored in hidden system files.

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/quota/dquot.c         | 93 ++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/quotaops.h |  3 ++
 2 files changed, 96 insertions(+)

diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index d25c3243c196..e8300d927eb7 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -2385,6 +2385,88 @@ out:
 }
 EXPORT_SYMBOL(dquot_quota_on_mount);
 
+int dquot_quota_enable(struct super_block *sb, unsigned int flags)
+{
+	int ret;
+	int type;
+	struct quota_info *dqopt = sb_dqopt(sb);
+
+	if (!(dqopt->flags & DQUOT_QUOTA_SYS_FILE))
+		return -ENOSYS;
+	/* Accounting cannot be turned on while fs is mounted */
+	flags &= ~(FS_QUOTA_UDQ_ACCT | FS_QUOTA_GDQ_ACCT | FS_QUOTA_PDQ_ACCT);
+	if (!flags)
+		return -EINVAL;
+	for (type = 0; type < MAXQUOTAS; type++) {
+		if (!(flags & qtype_limit_flag(type)))
+			continue;
+		/* Can't enforce without accounting */
+		if (!sb_has_quota_usage_enabled(sb, type))
+			return -EINVAL;
+		ret = dquot_enable(dqopt->files[type], type,
+				   dqopt->info[type].dqi_fmt_id,
+				   DQUOT_LIMITS_ENABLED);
+		if (ret < 0)
+			goto out_err;
+	}
+	return 0;
+out_err:
+	/* Backout enforcement enablement we already did */
+	for (type--; type >= 0; type--)  {
+		if (flags & qtype_limit_flag(type))
+			dquot_disable(sb, type, DQUOT_LIMITS_ENABLED);
+	}
+	/* Error code translation for better compatibility with XFS */
+	if (ret == -EBUSY)
+		ret = -EEXIST;
+	return ret;
+}
+EXPORT_SYMBOL(dquot_quota_enable);
+
+int dquot_quota_disable(struct super_block *sb, unsigned int flags)
+{
+	int ret;
+	int type;
+	struct quota_info *dqopt = sb_dqopt(sb);
+
+	if (!(dqopt->flags & DQUOT_QUOTA_SYS_FILE))
+		return -ENOSYS;
+	/*
+	 * We don't support turning off accounting via quotactl. In principle
+	 * quota infrastructure can do this but filesystems don't expect
+	 * userspace to be able to do it.
+	 */
+	if (flags &
+		  (FS_QUOTA_UDQ_ACCT | FS_QUOTA_GDQ_ACCT | FS_QUOTA_PDQ_ACCT))
+		return -EOPNOTSUPP;
+
+	/* Filter out limits not enabled */
+	for (type = 0; type < MAXQUOTAS; type++)
+		if (!sb_has_quota_limits_enabled(sb, type))
+			flags &= ~qtype_limit_flag(type);
+	/* Nothing left? */
+	if (!flags)
+		return -EEXIST;
+	for (type = 0; type < MAXQUOTAS; type++) {
+		if (flags & qtype_limit_flag(type)) {
+			ret = dquot_disable(sb, type, DQUOT_LIMITS_ENABLED);
+			if (ret < 0)
+				goto out_err;
+		}
+	}
+	return 0;
+out_err:
+	/* Backout enforcement disabling we already did */
+	for (type--; type >= 0; type--)  {
+		if (flags & qtype_limit_flag(type))
+			dquot_enable(dqopt->files[type], type,
+				     dqopt->info[type].dqi_fmt_id,
+				     DQUOT_LIMITS_ENABLED);
+	}
+	return ret;
+}
+EXPORT_SYMBOL(dquot_quota_disable);
+
 static inline qsize_t qbtos(qsize_t blocks)
 {
 	return blocks << QIF_DQBLKSIZE_BITS;
@@ -2619,6 +2701,17 @@ const struct quotactl_ops dquot_quotactl_ops = {
 };
 EXPORT_SYMBOL(dquot_quotactl_ops);
 
+const struct quotactl_ops dquot_quotactl_sysfile_ops = {
+	.quota_enable	= dquot_quota_enable,
+	.quota_disable	= dquot_quota_disable,
+	.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
+};
+EXPORT_SYMBOL(dquot_quotactl_sysfile_ops);
+
 static int do_proc_dqstats(struct ctl_table *table, int write,
 		     void __user *buffer, size_t *lenp, loff_t *ppos)
 {
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
index 20b77d115551..5dd75e16b2c1 100644
--- a/include/linux/quotaops.h
+++ b/include/linux/quotaops.h
@@ -93,6 +93,8 @@ int dquot_quota_on(struct super_block *sb, int type, int format_id,
 int dquot_quota_on_mount(struct super_block *sb, char *qf_name,
  	int format_id, int type);
 int dquot_quota_off(struct super_block *sb, int type);
+int dquot_quota_enable(struct super_block *sb, unsigned int flags);
+int dquot_quota_disable(struct super_block *sb, unsigned int flags);
 int dquot_writeback_dquots(struct super_block *sb, int type);
 int dquot_quota_sync(struct super_block *sb, int type);
 int dquot_get_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii);
@@ -166,6 +168,7 @@ static inline bool sb_has_quota_active(struct super_block *sb, int type)
  */
 extern const struct dquot_operations dquot_operations;
 extern const struct quotactl_ops dquot_quotactl_ops;
+extern const struct quotactl_ops dquot_quotactl_sysfile_ops;
 
 #else
 
-- 
2.1.2

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: linux-fsdevel@vger.kernel.org
Cc: cluster-devel@redhat.com, Jan Kara <jack@suse.cz>,
	ocfs2-devel@oss.oracle.com, xfs@oss.sgi.com
Subject: [Ocfs2-devel] [PATCH 03/17] quota: Add ->quota_{enable, disable} callbacks for VFS quotas
Date: Fri, 16 Jan 2015 13:47:37 +0100	[thread overview]
Message-ID: <1421412471-4747-4-git-send-email-jack@suse.cz> (raw)
In-Reply-To: <1421412471-4747-1-git-send-email-jack@suse.cz>

Add functions which translate ->quota_enable / ->quota_disable calls
into appropriate changes in VFS quota. This will enable filesystems
supporting VFS quota files in system inodes to be controlled via
Q_XQUOTA[ON|OFF] quotactls for better userspace compatibility.

Also provide a vector for quotactl using these functions which can be
used by filesystems with quota files stored in hidden system files.

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/quota/dquot.c         | 93 ++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/quotaops.h |  3 ++
 2 files changed, 96 insertions(+)

diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index d25c3243c196..e8300d927eb7 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -2385,6 +2385,88 @@ out:
 }
 EXPORT_SYMBOL(dquot_quota_on_mount);
 
+int dquot_quota_enable(struct super_block *sb, unsigned int flags)
+{
+	int ret;
+	int type;
+	struct quota_info *dqopt = sb_dqopt(sb);
+
+	if (!(dqopt->flags & DQUOT_QUOTA_SYS_FILE))
+		return -ENOSYS;
+	/* Accounting cannot be turned on while fs is mounted */
+	flags &= ~(FS_QUOTA_UDQ_ACCT | FS_QUOTA_GDQ_ACCT | FS_QUOTA_PDQ_ACCT);
+	if (!flags)
+		return -EINVAL;
+	for (type = 0; type < MAXQUOTAS; type++) {
+		if (!(flags & qtype_limit_flag(type)))
+			continue;
+		/* Can't enforce without accounting */
+		if (!sb_has_quota_usage_enabled(sb, type))
+			return -EINVAL;
+		ret = dquot_enable(dqopt->files[type], type,
+				   dqopt->info[type].dqi_fmt_id,
+				   DQUOT_LIMITS_ENABLED);
+		if (ret < 0)
+			goto out_err;
+	}
+	return 0;
+out_err:
+	/* Backout enforcement enablement we already did */
+	for (type--; type >= 0; type--)  {
+		if (flags & qtype_limit_flag(type))
+			dquot_disable(sb, type, DQUOT_LIMITS_ENABLED);
+	}
+	/* Error code translation for better compatibility with XFS */
+	if (ret == -EBUSY)
+		ret = -EEXIST;
+	return ret;
+}
+EXPORT_SYMBOL(dquot_quota_enable);
+
+int dquot_quota_disable(struct super_block *sb, unsigned int flags)
+{
+	int ret;
+	int type;
+	struct quota_info *dqopt = sb_dqopt(sb);
+
+	if (!(dqopt->flags & DQUOT_QUOTA_SYS_FILE))
+		return -ENOSYS;
+	/*
+	 * We don't support turning off accounting via quotactl. In principle
+	 * quota infrastructure can do this but filesystems don't expect
+	 * userspace to be able to do it.
+	 */
+	if (flags &
+		  (FS_QUOTA_UDQ_ACCT | FS_QUOTA_GDQ_ACCT | FS_QUOTA_PDQ_ACCT))
+		return -EOPNOTSUPP;
+
+	/* Filter out limits not enabled */
+	for (type = 0; type < MAXQUOTAS; type++)
+		if (!sb_has_quota_limits_enabled(sb, type))
+			flags &= ~qtype_limit_flag(type);
+	/* Nothing left? */
+	if (!flags)
+		return -EEXIST;
+	for (type = 0; type < MAXQUOTAS; type++) {
+		if (flags & qtype_limit_flag(type)) {
+			ret = dquot_disable(sb, type, DQUOT_LIMITS_ENABLED);
+			if (ret < 0)
+				goto out_err;
+		}
+	}
+	return 0;
+out_err:
+	/* Backout enforcement disabling we already did */
+	for (type--; type >= 0; type--)  {
+		if (flags & qtype_limit_flag(type))
+			dquot_enable(dqopt->files[type], type,
+				     dqopt->info[type].dqi_fmt_id,
+				     DQUOT_LIMITS_ENABLED);
+	}
+	return ret;
+}
+EXPORT_SYMBOL(dquot_quota_disable);
+
 static inline qsize_t qbtos(qsize_t blocks)
 {
 	return blocks << QIF_DQBLKSIZE_BITS;
@@ -2619,6 +2701,17 @@ const struct quotactl_ops dquot_quotactl_ops = {
 };
 EXPORT_SYMBOL(dquot_quotactl_ops);
 
+const struct quotactl_ops dquot_quotactl_sysfile_ops = {
+	.quota_enable	= dquot_quota_enable,
+	.quota_disable	= dquot_quota_disable,
+	.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
+};
+EXPORT_SYMBOL(dquot_quotactl_sysfile_ops);
+
 static int do_proc_dqstats(struct ctl_table *table, int write,
 		     void __user *buffer, size_t *lenp, loff_t *ppos)
 {
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
index 20b77d115551..5dd75e16b2c1 100644
--- a/include/linux/quotaops.h
+++ b/include/linux/quotaops.h
@@ -93,6 +93,8 @@ int dquot_quota_on(struct super_block *sb, int type, int format_id,
 int dquot_quota_on_mount(struct super_block *sb, char *qf_name,
  	int format_id, int type);
 int dquot_quota_off(struct super_block *sb, int type);
+int dquot_quota_enable(struct super_block *sb, unsigned int flags);
+int dquot_quota_disable(struct super_block *sb, unsigned int flags);
 int dquot_writeback_dquots(struct super_block *sb, int type);
 int dquot_quota_sync(struct super_block *sb, int type);
 int dquot_get_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii);
@@ -166,6 +168,7 @@ static inline bool sb_has_quota_active(struct super_block *sb, int type)
  */
 extern const struct dquot_operations dquot_operations;
 extern const struct quotactl_ops dquot_quotactl_ops;
+extern const struct quotactl_ops dquot_quotactl_sysfile_ops;
 
 #else
 
-- 
2.1.2

WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 03/17] quota: Add ->quota_{enable, disable} callbacks for VFS quotas
Date: Fri, 16 Jan 2015 13:47:37 +0100	[thread overview]
Message-ID: <1421412471-4747-4-git-send-email-jack@suse.cz> (raw)
In-Reply-To: <1421412471-4747-1-git-send-email-jack@suse.cz>

Add functions which translate ->quota_enable / ->quota_disable calls
into appropriate changes in VFS quota. This will enable filesystems
supporting VFS quota files in system inodes to be controlled via
Q_XQUOTA[ON|OFF] quotactls for better userspace compatibility.

Also provide a vector for quotactl using these functions which can be
used by filesystems with quota files stored in hidden system files.

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/quota/dquot.c         | 93 ++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/quotaops.h |  3 ++
 2 files changed, 96 insertions(+)

diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index d25c3243c196..e8300d927eb7 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -2385,6 +2385,88 @@ out:
 }
 EXPORT_SYMBOL(dquot_quota_on_mount);
 
+int dquot_quota_enable(struct super_block *sb, unsigned int flags)
+{
+	int ret;
+	int type;
+	struct quota_info *dqopt = sb_dqopt(sb);
+
+	if (!(dqopt->flags & DQUOT_QUOTA_SYS_FILE))
+		return -ENOSYS;
+	/* Accounting cannot be turned on while fs is mounted */
+	flags &= ~(FS_QUOTA_UDQ_ACCT | FS_QUOTA_GDQ_ACCT | FS_QUOTA_PDQ_ACCT);
+	if (!flags)
+		return -EINVAL;
+	for (type = 0; type < MAXQUOTAS; type++) {
+		if (!(flags & qtype_limit_flag(type)))
+			continue;
+		/* Can't enforce without accounting */
+		if (!sb_has_quota_usage_enabled(sb, type))
+			return -EINVAL;
+		ret = dquot_enable(dqopt->files[type], type,
+				   dqopt->info[type].dqi_fmt_id,
+				   DQUOT_LIMITS_ENABLED);
+		if (ret < 0)
+			goto out_err;
+	}
+	return 0;
+out_err:
+	/* Backout enforcement enablement we already did */
+	for (type--; type >= 0; type--)  {
+		if (flags & qtype_limit_flag(type))
+			dquot_disable(sb, type, DQUOT_LIMITS_ENABLED);
+	}
+	/* Error code translation for better compatibility with XFS */
+	if (ret == -EBUSY)
+		ret = -EEXIST;
+	return ret;
+}
+EXPORT_SYMBOL(dquot_quota_enable);
+
+int dquot_quota_disable(struct super_block *sb, unsigned int flags)
+{
+	int ret;
+	int type;
+	struct quota_info *dqopt = sb_dqopt(sb);
+
+	if (!(dqopt->flags & DQUOT_QUOTA_SYS_FILE))
+		return -ENOSYS;
+	/*
+	 * We don't support turning off accounting via quotactl. In principle
+	 * quota infrastructure can do this but filesystems don't expect
+	 * userspace to be able to do it.
+	 */
+	if (flags &
+		  (FS_QUOTA_UDQ_ACCT | FS_QUOTA_GDQ_ACCT | FS_QUOTA_PDQ_ACCT))
+		return -EOPNOTSUPP;
+
+	/* Filter out limits not enabled */
+	for (type = 0; type < MAXQUOTAS; type++)
+		if (!sb_has_quota_limits_enabled(sb, type))
+			flags &= ~qtype_limit_flag(type);
+	/* Nothing left? */
+	if (!flags)
+		return -EEXIST;
+	for (type = 0; type < MAXQUOTAS; type++) {
+		if (flags & qtype_limit_flag(type)) {
+			ret = dquot_disable(sb, type, DQUOT_LIMITS_ENABLED);
+			if (ret < 0)
+				goto out_err;
+		}
+	}
+	return 0;
+out_err:
+	/* Backout enforcement disabling we already did */
+	for (type--; type >= 0; type--)  {
+		if (flags & qtype_limit_flag(type))
+			dquot_enable(dqopt->files[type], type,
+				     dqopt->info[type].dqi_fmt_id,
+				     DQUOT_LIMITS_ENABLED);
+	}
+	return ret;
+}
+EXPORT_SYMBOL(dquot_quota_disable);
+
 static inline qsize_t qbtos(qsize_t blocks)
 {
 	return blocks << QIF_DQBLKSIZE_BITS;
@@ -2619,6 +2701,17 @@ const struct quotactl_ops dquot_quotactl_ops = {
 };
 EXPORT_SYMBOL(dquot_quotactl_ops);
 
+const struct quotactl_ops dquot_quotactl_sysfile_ops = {
+	.quota_enable	= dquot_quota_enable,
+	.quota_disable	= dquot_quota_disable,
+	.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
+};
+EXPORT_SYMBOL(dquot_quotactl_sysfile_ops);
+
 static int do_proc_dqstats(struct ctl_table *table, int write,
 		     void __user *buffer, size_t *lenp, loff_t *ppos)
 {
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
index 20b77d115551..5dd75e16b2c1 100644
--- a/include/linux/quotaops.h
+++ b/include/linux/quotaops.h
@@ -93,6 +93,8 @@ int dquot_quota_on(struct super_block *sb, int type, int format_id,
 int dquot_quota_on_mount(struct super_block *sb, char *qf_name,
  	int format_id, int type);
 int dquot_quota_off(struct super_block *sb, int type);
+int dquot_quota_enable(struct super_block *sb, unsigned int flags);
+int dquot_quota_disable(struct super_block *sb, unsigned int flags);
 int dquot_writeback_dquots(struct super_block *sb, int type);
 int dquot_quota_sync(struct super_block *sb, int type);
 int dquot_get_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii);
@@ -166,6 +168,7 @@ static inline bool sb_has_quota_active(struct super_block *sb, int type)
  */
 extern const struct dquot_operations dquot_operations;
 extern const struct quotactl_ops dquot_quotactl_ops;
+extern const struct quotactl_ops dquot_quotactl_sysfile_ops;
 
 #else
 
-- 
2.1.2



  parent reply	other threads:[~2015-01-16 12:47 UTC|newest]

Thread overview: 150+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-16 12:47 [PATCH 0/17 v3] quota: Unify VFS and XFS quota interfaces Jan Kara
2015-01-16 12:47 ` [Cluster-devel] " Jan Kara
2015-01-16 12:47 ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47 ` Jan Kara
2015-01-16 12:47 ` [PATCH 01/17] quota: Split ->set_xstate callback into two Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:00   ` Christoph Hellwig
2015-01-19  9:00     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:00     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-19  9:00     ` Christoph Hellwig
2015-01-16 12:47 ` [PATCH 02/17] quota: Wire up ->quota_{enable,disable} callbacks into Q_QUOTA{ON,OFF} Jan Kara
2015-01-16 12:47   ` [Cluster-devel] [PATCH 02/17] quota: Wire up ->quota_{enable, disable} callbacks into Q_QUOTA{ON, OFF} Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:01   ` [PATCH 02/17] quota: Wire up ->quota_{enable,disable} callbacks into Q_QUOTA{ON,OFF} Christoph Hellwig
2015-01-19  9:01     ` [Cluster-devel] [PATCH 02/17] quota: Wire up ->quota_{enable, disable} callbacks into Q_QUOTA{ON, OFF} Christoph Hellwig
2015-01-19  9:01     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-19  9:01     ` [PATCH 02/17] quota: Wire up ->quota_{enable,disable} callbacks into Q_QUOTA{ON,OFF} Christoph Hellwig
2015-01-20 17:01     ` Jan Kara
2015-01-20 17:01       ` [Cluster-devel] [PATCH 02/17] quota: Wire up ->quota_{enable, disable} callbacks into Q_QUOTA{ON, OFF} Jan Kara
2015-01-20 17:01       ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47 ` Jan Kara [this message]
2015-01-16 12:47   ` [Cluster-devel] [PATCH 03/17] quota: Add ->quota_{enable, disable} callbacks for VFS quotas Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-19  9:02   ` [PATCH 03/17] quota: Add ->quota_{enable,disable} " Christoph Hellwig
2015-01-19  9:02     ` [Cluster-devel] [PATCH 03/17] quota: Add ->quota_{enable, disable} " Christoph Hellwig
2015-01-19  9:02     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-19  9:02     ` [PATCH 03/17] quota: Add ->quota_{enable,disable} " Christoph Hellwig
2015-01-20 17:08     ` Jan Kara
2015-01-20 17:08       ` [Cluster-devel] [PATCH 03/17] quota: Add ->quota_{enable, disable} " Jan Kara
2015-01-20 17:08       ` [Ocfs2-devel] " Jan Kara
2015-01-20 17:08       ` [PATCH 03/17] quota: Add ->quota_{enable,disable} " Jan Kara
2015-01-16 12:47 ` [PATCH 04/17] ext4: Use generic helpers for quotaon and quotaoff Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-19  9:03   ` Christoph Hellwig
2015-01-19  9:03     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:03     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-16 12:47 ` [PATCH 05/17] ocfs2: " Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:03   ` Christoph Hellwig
2015-01-19  9:03     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:03     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-19  9:03     ` Christoph Hellwig
2015-01-20 17:13     ` Jan Kara
2015-01-20 17:13       ` [Cluster-devel] " Jan Kara
2015-01-20 17:13       ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47 ` [PATCH 06/17] quota: Remove quota_on_meta callback Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:04   ` Christoph Hellwig
2015-01-19  9:04     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:04     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-16 12:47 ` [PATCH 07/17] quota: Switch ->get_dqblk() and ->set_dqblk() to use bytes as space units Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:07   ` Christoph Hellwig
2015-01-19  9:07     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:07     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-19  9:07     ` Christoph Hellwig
2015-01-20 16:53     ` Jan Kara
2015-01-20 16:53       ` [Cluster-devel] " Jan Kara
2015-01-20 16:53       ` [Ocfs2-devel] " Jan Kara
2015-01-20 16:53       ` Jan Kara
2015-01-16 12:47 ` [PATCH 08/17] quota: Store maximum space limit in bytes Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:07   ` Christoph Hellwig
2015-01-19  9:07     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:07     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-19  9:07     ` Christoph Hellwig
2015-01-16 12:47 ` [PATCH 09/17] quota: Make Q_XQUOTASYNC support VFS quota syncing Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:09   ` Christoph Hellwig
2015-01-19  9:09     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:09     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-19  9:09     ` Christoph Hellwig
2015-01-20 17:16     ` Jan Kara
2015-01-20 17:16       ` [Cluster-devel] " Jan Kara
2015-01-20 17:16       ` [Ocfs2-devel] " Jan Kara
2015-01-20 17:16       ` Jan Kara
2015-01-16 12:47 ` [PATCH 10/17] quota: Make VFS quotas use new interface for getting quota info Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:10   ` Christoph Hellwig
2015-01-19  9:10     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:10     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-16 12:47 ` [PATCH 11/17] quota: Wire up Q_GETXSTATE and Q_GETXSTATV calls to work with ->get_state Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:11   ` Christoph Hellwig
2015-01-19  9:11     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:11     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-16 12:47 ` [PATCH 12/17] xfs: Convert to using ->get_state callback Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:38   ` Christoph Hellwig
2015-01-19  9:38     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:38     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-20 17:33     ` Jan Kara
2015-01-20 17:33       ` [Cluster-devel] " Jan Kara
2015-01-20 17:33       ` [Ocfs2-devel] " Jan Kara
2015-01-20 17:33       ` Jan Kara
2015-01-16 12:47 ` [PATCH 13/17] gfs2: " Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-16 12:47 ` [PATCH 14/17] quota: Remove ->get_xstate and ->get_xstatev callbacks Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-19  9:38   ` Christoph Hellwig
2015-01-19  9:38     ` [Cluster-devel] " Christoph Hellwig
2015-01-19  9:38     ` [Ocfs2-devel] " Christoph Hellwig
2015-01-19  9:38     ` Christoph Hellwig
2015-01-16 12:47 ` [PATCH 15/17] quota: Make ->set_info use structure with neccesary info to VFS and XFS Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-16 12:47 ` [PATCH 16/17] xfs: Add support for Q_SETINFO Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-16 12:47 ` [PATCH 17/17] quota: Hook up Q_XSETQLIM for id 0 to ->set_info Jan Kara
2015-01-16 12:47   ` [Cluster-devel] " Jan Kara
2015-01-16 12:47   ` [Ocfs2-devel] " Jan Kara
2015-01-16 12:47   ` Jan Kara
2015-01-21 21:38 ` [PATCH 0/17 v3] quota: Unify VFS and XFS quota interfaces Dave Chinner
2015-01-21 21:38   ` [Cluster-devel] " Dave Chinner
2015-01-21 21:38   ` [Ocfs2-devel] " Dave Chinner
2015-01-21 21:38   ` Dave Chinner
2015-01-21 22:23   ` Jan Kara
2015-01-21 22:23     ` [Cluster-devel] " Jan Kara
2015-01-21 22:23     ` [Ocfs2-devel] " Jan Kara
2015-01-21 22:23     ` Jan Kara
2015-01-21 23:10     ` Dave Chinner
2015-01-21 23:10       ` [Cluster-devel] " Dave Chinner
2015-01-21 23:10       ` [Ocfs2-devel] " Dave Chinner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1421412471-4747-4-git-send-email-jack@suse.cz \
    --to=jack@suse.cz \
    --cc=cluster-devel@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=ocfs2-devel@oss.oracle.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.