lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 30 May 2012 22:58:58 +0800
From:	jeff.liu@...cle.com
To:	containers@...ts.linux-foundation.org
Cc:	cgroups@...r.kernel.org, jack@...e.cz, glommer@...allels.com,
	daniel.lezcano@...e.fr, tytso@....edu, bpm@....com,
	chris.mason@...cle.com, hch@...radead.org,
	christopher.jones@...cle.com, david@...morbit.com,
	tinguely@....com, tm@....ma, linux-ext4@...r.kernel.org,
	linux-fsdevel@...r.kernel.org, Jie Liu <jeff.liu@...cle.com>
Subject: [PATCH 04/12] container quota: introduce container disk quota data header file.

Header file for container disk quota.

Signed-off-by: Jie Liu <jeff.liu@...cle.com>
---
 fs/ns_quota.h |   84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 0 deletions(-)
 create mode 100644 fs/ns_quota.h

diff --git a/fs/ns_quota.h b/fs/ns_quota.h
new file mode 100644
index 0000000..cf90fff
--- /dev/null
+++ b/fs/ns_quota.h
@@ -0,0 +1,84 @@
+#ifndef _LINUX_NS_QUOTA_
+#define _LINUX_NS_QUOTA_
+
+#include <linux/types.h>
+#include <linux/list.h>
+#include <linux/mutex.h>
+#include <linux/rwsem.h>
+#include <linux/spinlock.h>
+#include <linux/atomic.h>
+#include <linux/quota.h>
+#include <linux/user_namespace.h>
+
+#define NS_MAX_IQ_TIME	604800		/* (7*24*60*60) 1 week */
+#define NS_MAX_DQ_TIME	604800		/* (7*24*60*60) 1 week */
+
+/*
+ * Below most stuff were copied from kernel/user.c, using them
+ * to calculate and define quota hash table and hash routine.
+ */
+#define NS_DQHASH_BITS	(CONFIG_BASE_SMALL ? 3 : 7)
+#define NS_DQHASH_SZ	(1 << NS_DQHASH_BITS)
+
+struct ns_mem_dqinfo {
+	unsigned long dqi_flags;
+	unsigned int dqi_bgrace;
+	unsigned int dqi_igrace;
+	qsize_t dqi_maxblimit;
+	qsize_t dqi_maxilimit;
+};
+
+/* Mount namespace disk quota definitation */
+struct ns_quota_info {
+	/* Flags for disk quotas on this mount namespace */
+	unsigned int dq_flags;
+	/* Serialize mount namespace quotaon & quotaoff */
+	struct mutex dqonoff_mutex;
+	/* Serialize user/group quota list operations */
+	spinlock_t dq_list_lock;
+	/* Serialize quota value incr/decr operations */
+	spinlock_t dq_data_lock;
+	struct kmem_cache *dquot_cachep;
+	/* Hash list of all user disk quotas */
+	struct hlist_head u_dquots[NS_DQHASH_SZ];
+	/* Hash list of all group disk quotas */
+	struct hlist_head g_dquots[NS_DQHASH_SZ];
+	/* Information for each quota type */
+	struct ns_mem_dqinfo dqinfo[MAXQUOTAS];
+};
+
+/* Mount namespace disk quota object */
+struct ns_dquot {
+	struct hlist_node dq_hash_node;	/* Hash list in memory */
+	struct mnt_namespace *dq_ns;	/* Mount namespace this applies to */
+	unsigned int dq_id;		/* ID this applies to (uid, gid) */
+	unsigned long dq_flags;		/* See DQ_* */
+	short dq_type;			/* Type of quota */
+	struct mem_dqblk dq_dqb;	/* Diskquota usage */
+};
+
+/* Operations for quota object allocation/destroy */
+struct ns_dquot_ops {
+	/* Allocate memory for new dqout object */
+	struct ns_dquot *(*alloc_dquot)(struct mnt_namespace *);
+	/* Free memory for dquot */
+	void (*destroy_dquot)(struct ns_dquot *);
+};
+
+/* Operations for quota control */
+struct ns_quotactl_ops {
+	int (*quota_on)(struct mnt_namespace *, int);
+	int (*quota_off)(struct mnt_namespace *, int);
+	int (*get_info)(struct mnt_namespace *, int, struct if_dqinfo *);
+	int (*set_info)(struct mnt_namespace *, int, struct if_dqinfo *);
+	int (*get_dqblk)(struct mnt_namespace *, int, qid_t,
+			 struct fs_disk_quota *);
+	int (*set_dqblk)(struct mnt_namespace *, int, qid_t,
+			 struct fs_disk_quota *);
+};
+
+int ns_dqinfo_init(struct mnt_namespace *ns);
+void ns_dqinfo_destroy(struct mnt_namespace *ns);
+extern unsigned int ns_dquot_getfmt(struct mnt_namespace *ns, int type);
+
+#endif /* _LINUX_NS_QUOTA_ */
-- 
1.7.9

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ