Patchwork [08/12] container quota: let quotactl(2) works for container.

login
register
mail settings
Submitter jeff.liu
Date May 30, 2012, 2:59 p.m.
Message ID <1338389946-13711-9-git-send-email-jeff.liu@oracle.com>
Download mbox | patch
Permalink /patch/161996/
State Not Applicable
Headers show

Comments

jeff.liu - May 30, 2012, 2:59 p.m.
Modify quotactl(2) to determine for container quota control operations.

Signed-off-by: Jie Liu <jeff.liu@oracle.com>
---
 fs/quota/quota.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

Patch

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.