linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
To: <linux-btrfs@vger.kernel.org>
Cc: Fan Chengniang <fancn.fnst@cn.fujitsu.com>
Subject: [PATCH 9/9] btrfs: qgroup: obtain quota status
Date: Tue, 10 Feb 2015 18:23:23 +0800	[thread overview]
Message-ID: <1423563803-8996-12-git-send-email-yangds.fnst@cn.fujitsu.com> (raw)
In-Reply-To: <1423563803-8996-1-git-send-email-yangds.fnst@cn.fujitsu.com>

From: Fan Chengniang <fancn.fnst@cn.fujitsu.com>

add a function to obtain quota status. Now it can only get
whether quota is enabled. We can extend the function to get
more quota status

Signed-off-by: Fan Chengniang <fancn.fnst@cn.fujitsu.com>
---
 fs/btrfs/ioctl.c           |  6 ++++++
 fs/btrfs/qgroup.c          | 14 ++++++++++++++
 fs/btrfs/qgroup.h          |  3 +++
 include/uapi/linux/btrfs.h |  3 +++
 4 files changed, 26 insertions(+)

diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 658d83d..f6e730b 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -4572,6 +4572,12 @@ static long btrfs_ioctl_quota_ctl(struct file *file, void __user *arg)
 	case BTRFS_QUOTA_CTL_DISABLE:
 		ret = btrfs_quota_disable(trans, root->fs_info);
 		break;
+	case BTRFS_QUOTA_CTL_STATUS:
+		ret = btrfs_quota_status(trans, root->fs_info, sa);
+		if (!ret)
+			if (copy_to_user(arg, sa, sizeof(*sa)))
+				ret = -EFAULT;
+		break;
 	default:
 		ret = -EINVAL;
 		break;
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 24c5bb1..b57fe45 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -993,6 +993,20 @@ out:
 	return ret;
 }
 
+int btrfs_quota_status(struct btrfs_trans_handle *trans,
+			struct btrfs_fs_info *fs_info,
+			struct btrfs_ioctl_quota_ctl_args *sa)
+{
+	int ret = 0;
+
+	if (fs_info->quota_enabled)
+		sa->status |= BTRFS_QUOTA_STATUS_QUOTA_ENABLED;
+	else
+		sa->status &= ~BTRFS_QUOTA_STATUS_QUOTA_ENABLED;
+
+	return ret;
+}
+
 static void qgroup_dirty(struct btrfs_fs_info *fs_info,
 			 struct btrfs_qgroup *qgroup)
 {
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h
index c5242aa..52d8b19 100644
--- a/fs/btrfs/qgroup.h
+++ b/fs/btrfs/qgroup.h
@@ -62,6 +62,9 @@ int btrfs_quota_enable(struct btrfs_trans_handle *trans,
 		       struct btrfs_fs_info *fs_info);
 int btrfs_quota_disable(struct btrfs_trans_handle *trans,
 			struct btrfs_fs_info *fs_info);
+int btrfs_quota_status(struct btrfs_trans_handle *trans,
+			struct btrfs_fs_info *fs_info,
+			struct btrfs_ioctl_quota_ctl_args *sa);
 int btrfs_qgroup_rescan(struct btrfs_fs_info *fs_info);
 void btrfs_qgroup_rescan_resume(struct btrfs_fs_info *fs_info);
 int btrfs_qgroup_wait_for_completion(struct btrfs_fs_info *fs_info);
diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h
index 611e1c5..d4014e6 100644
--- a/include/uapi/linux/btrfs.h
+++ b/include/uapi/linux/btrfs.h
@@ -423,6 +423,9 @@ struct btrfs_ioctl_get_dev_stats {
 #define BTRFS_QUOTA_CTL_ENABLE	1
 #define BTRFS_QUOTA_CTL_DISABLE	2
 #define BTRFS_QUOTA_CTL_RESCAN__NOTUSED	3
+#define BTRFS_QUOTA_CTL_STATUS  4
+
+#define BTRFS_QUOTA_STATUS_QUOTA_ENABLED 1
 struct btrfs_ioctl_quota_ctl_args {
 	__u64 cmd;
 	__u64 status;
-- 
1.8.4.2


      parent reply	other threads:[~2015-02-10 10:26 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-10 10:23 [PATCH 0/9] Btrfs: qgroup: part-1: bug fixes for qgroup inherit Dongsheng Yang
2015-02-10 10:23 ` [PATCH 1/2] btrfs-progs:correct the return value Dongsheng Yang
2015-02-27 15:37   ` David Sterba
2015-02-10 10:23 ` [PATCH 1/9] btrfs: qgroup: move WARN_ON() to the correct location Dongsheng Yang
2015-03-02 22:05   ` Josef Bacik
2015-02-10 10:23 ` [PATCH 2/2] btrfs-progs:set max_rfer and max_excl on creating new subvolume Dongsheng Yang
2015-02-10 10:23 ` [PATCH 2/9] btrfs: qgroup: inherit limit info from srcgroup in creating snapshot Dongsheng Yang
2015-03-02 22:10   ` Josef Bacik
2015-02-10 10:23 ` [PATCH 3/9] btrfs: qgroup: update qgroup in memory at the same time when we update it in btree Dongsheng Yang
2015-02-10 10:23 ` [PATCH 4/9] btrfs: qgroup: consolidate the parameter of fucntion update_qgroup_limit_item() Dongsheng Yang
2015-02-10 10:23 ` [PATCH 5/9] btrfs: qgroup: update limit info in function btrfs_run_qgroups() Dongsheng Yang
2015-02-10 10:23 ` [PATCH 6/9] btrfs: qgroup: fix limit args override whole limit struct Dongsheng Yang
2015-02-10 10:23 ` [PATCH 7/9] Btrfs: qgroup: make the btree for qgroup increase from left to right Dongsheng Yang
2015-02-10 10:23 ` [PATCH 8/9] Btrfs: qgroup: cleanup, remove an unsued parameter in btrfs_create_qgroup() Dongsheng Yang
2015-02-10 10:23 ` Dongsheng Yang [this message]

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=1423563803-8996-12-git-send-email-yangds.fnst@cn.fujitsu.com \
    --to=yangds.fnst@cn.fujitsu.com \
    --cc=fancn.fnst@cn.fujitsu.com \
    --cc=linux-btrfs@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).