aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/1002-add-sys-quota.h-and-quotactl-syscall-wrapper.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/musl/1002-add-sys-quota.h-and-quotactl-syscall-wrapper.patch')
-rw-r--r--main/musl/1002-add-sys-quota.h-and-quotactl-syscall-wrapper.patch138
1 files changed, 138 insertions, 0 deletions
diff --git a/main/musl/1002-add-sys-quota.h-and-quotactl-syscall-wrapper.patch b/main/musl/1002-add-sys-quota.h-and-quotactl-syscall-wrapper.patch
new file mode 100644
index 0000000000..218382ac5c
--- /dev/null
+++ b/main/musl/1002-add-sys-quota.h-and-quotactl-syscall-wrapper.patch
@@ -0,0 +1,138 @@
+From 03dbf5d8e44e2e3bca6a55bec189d1682442b0cd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Wed, 18 Dec 2013 08:41:22 +0200
+Subject: [PATCH] add sys/quota.h and quotactl syscall wrapper
+
+---
+ include/sys/quota.h | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/linux/quotactl.c | 7 ++++
+ 2 files changed, 111 insertions(+)
+ create mode 100644 include/sys/quota.h
+ create mode 100644 src/linux/quotactl.c
+
+diff --git a/include/sys/quota.h b/include/sys/quota.h
+new file mode 100644
+index 0000000..7bcad02
+--- /dev/null
++++ b/include/sys/quota.h
+@@ -0,0 +1,104 @@
++#ifndef _SYS_SYSCTL_H
++#define _SYS_SYSCTL_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#include <stdint.h>
++
++#define _LINUX_QUOTA_VERSION 2
++
++#define dbtob(num) ((num) << 10)
++#define btodb(num) ((num) >> 10)
++#define fs_to_dq_blocks(num, blksize) (((num) * (blksize)) / BLOCK_SIZE)
++
++#define MAX_IQ_TIME 604800
++#define MAX_DQ_TIME 604800
++
++#define MAXQUOTAS 2
++#define USRQUOTA 0
++#define GRPQUOTA 1
++
++#define INITQFNAMES { "user", "group", "undefined" };
++
++#define QUOTAFILENAME "quota"
++#define QUOTAGROUP "staff"
++
++#define NR_DQHASH 43
++#define NR_DQUOTS 256
++
++#define SUBCMDMASK 0x00ff
++#define SUBCMDSHIFT 8
++#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
++
++#define Q_SYNC 0x800001
++#define Q_QUOTAON 0x800002
++#define Q_QUOTAOFF 0x800003
++#define Q_GETFMT 0x800004
++#define Q_GETINFO 0x800005
++#define Q_SETINFO 0x800006
++#define Q_GETQUOTA 0x800007
++#define Q_SETQUOTA 0x800008
++
++#define QFMT_VFS_OLD 1
++#define QFMT_VFS_V0 2
++#define QFMT_OCFS2 3
++#define QFMT_VFS_V1 4
++
++#define QIF_BLIMITS 1
++#define QIF_SPACE 2
++#define QIF_ILIMITS 4
++#define QIF_INODES 8
++#define QIF_BTIME 16
++#define QIF_ITIME 32
++#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS)
++#define QIF_USAGE (QIF_SPACE | QIF_INODES)
++#define QIF_TIMES (QIF_BTIME | QIF_ITIME)
++#define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
++
++struct dqblk
++{
++ uint64_t dqb_bhardlimit;
++ uint64_t dqb_bsoftlimit;
++ uint64_t dqb_curspace;
++ uint64_t dqb_ihardlimit;
++ uint64_t dqb_isoftlimit;
++ uint64_t dqb_curinodes;
++ uint64_t dqb_btime;
++ uint64_t dqb_itime;
++ uint32_t dqb_valid;
++};
++
++#define dq_bhardlimit dq_dqb.dqb_bhardlimit
++#define dq_bsoftlimit dq_dqb.dqb_bsoftlimit
++#define dq_curspace dq_dqb.dqb_curspace
++#define dq_valid dq_dqb.dqb_valid
++#define dq_ihardlimit dq_dqb.dqb_ihardlimit
++#define dq_isoftlimit dq_dqb.dqb_isoftlimit
++#define dq_curinodes dq_dqb.dqb_curinodes
++#define dq_btime dq_dqb.dqb_btime
++#define dq_itime dq_dqb.dqb_itime
++
++#define dqoff(UID) ((loff_t)((UID) * sizeof (struct dqblk)))
++
++#define IIF_BGRACE 1
++#define IIF_IGRACE 2
++#define IIF_FLAGS 4
++#define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
++
++struct dqinfo
++{
++ uint64_t dqi_bgrace;
++ uint64_t dqi_igrace;
++ uint32_t dqi_flags;
++ uint32_t dqi_valid;
++};
++
++int quotactl(int, const char *, int, char *);
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
+diff --git a/src/linux/quotactl.c b/src/linux/quotactl.c
+new file mode 100644
+index 0000000..344eb0d
+--- /dev/null
++++ b/src/linux/quotactl.c
+@@ -0,0 +1,7 @@
++#include <sys/quota.h>
++#include "syscall.h"
++
++int quotactl(int cmd, const char *special, int id, char *addr)
++{
++ return syscall(SYS_quotactl, cmd, special, id, addr);
++}
+--
+1.8.5.1
+