2012-05-30 14:59:02

by Jeff Liu

[permalink] [raw]
Subject: [PATCH 08/12] container quota: let quotactl(2) works for container.

Modify quotactl(2) to determine for container quota control operations.

Signed-off-by: Jie Liu <[email protected]>
---
fs/quota/quota.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/fs/quota/quota.c b/fs/quota/quota.c
index 9a39120..40f381e 100644
--- a/fs/quota/quota.c
+++ b/fs/quota/quota.c
@@ -18,6 +18,12 @@
#include <linux/types.h>
#include <linux/writeback.h>

+/* Mount namespace disk quota required */
+#include <linux/mount.h>
+#include <linux/mnt_namespace.h>
+#include "../ns_quota.h"
+#include "../ns_quotaops.h"
+
static int check_quotactl_permission(struct super_block *sb, int type, int cmd,
qid_t id)
{
@@ -355,6 +361,14 @@ SYSCALL_DEFINE4(quotactl, unsigned int, cmd, const char __user *, special,
type = cmd & SUBCMDMASK;

/*
+ * Perform mount namespace quotactl when it is invoked from container.
+ */
+ if (do_quotactl_for_container(special)) {
+ ret = do_container_quotactl(type, cmds, id, addr);
+ goto out;
+ }
+
+ /*
* As a special case Q_SYNC can be called without a specific device.
* It will iterate all superblocks that have quota enabled and call
* the sync action on each of them.
--
1.7.9