diff options
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.patch | 138 |
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 + |