Thanks for the patch. It looks good. -- Aditya On Thu, Jan 19, 2012 at 12:18 PM, Jan Kara <jack@xxxxxxx> wrote: > Quite some definitions in quota library are not necessary. Remove them. > Also fold quota.h file into quotaio.h since it didn't contain that many > definitions. > > Signed-off-by: Jan Kara <jack@xxxxxxx> > --- > lib/quota/dqblk_v2.h | 22 ++----- > lib/quota/mkquota.c | 18 +----- > lib/quota/mkquota.h | 3 +- > lib/quota/quota.h | 155 ---------------------------------------------- > lib/quota/quotaio.c | 12 +--- > lib/quota/quotaio.h | 50 ++++++++-------- > lib/quota/quotaio_tree.h | 3 +- > lib/quota/quotaio_v2.c | 51 ++-------------- > lib/quota/quotaio_v2.h | 55 +--------------- > 9 files changed, 44 insertions(+), 325 deletions(-) > delete mode 100644 lib/quota/quota.h > > Ted, after applying this patch, you'll need to run 'make depend' to fixup > dependencies in makefiles. I didn't include that in the patch because on my > system the dependencies are different and so diff is 1500+ lines. > > Also I've talked with Aditya and there's no real reason for libquota to be a > separate library. So I think it would be best to just make it part of > libext2fs. Do you agree? > > Honza > diff --git a/lib/quota/dqblk_v2.h b/lib/quota/dqblk_v2.h > index 18055c6..d12512a 100644 > --- a/lib/quota/dqblk_v2.h > +++ b/lib/quota/dqblk_v2.h > @@ -7,28 +7,16 @@ > #ifndef __QUOTA_DQBLK_V2_H__ > #define __QUOTA_DQBLK_V2_H__ > > -#include <sys/types.h> > #include "quotaio_tree.h" > > -#define Q_V2_GETQUOTA 0x0D00 /* Get limits and usage */ > -#define Q_V2_SETQUOTA 0x0E00 /* Set limits and usage */ > -#define Q_V2_SETUSE 0x0F00 /* Set only usage */ > -#define Q_V2_SETQLIM 0x0700 /* Set only limits */ > -#define Q_V2_GETINFO 0x0900 /* Get information about quota */ > -#define Q_V2_SETINFO 0x0A00 /* Set information about quota */ > -#define Q_V2_SETGRACE 0x0B00 /* Set just grace times in quotafile > - * information */ > -#define Q_V2_SETFLAGS 0x0C00 /* Set just flags in quotafile information */ > -#define Q_V2_GETSTATS 0x1100 /* get collected stats (before proc was used) */ > - > /* Structure for format specific information */ > struct v2_mem_dqinfo { > struct qtree_mem_dqinfo dqi_qtree; > - uint dqi_flags; /* Flags set in quotafile */ > - uint dqi_used_entries; /* Number of entries in file - > - updated by scan_dquots */ > - uint dqi_data_blocks; /* Number of data blocks in file - > - updated by scan_dquots */ > + unsigned int dqi_flags; /* Flags set in quotafile */ > + unsigned int dqi_used_entries; /* Number of entries in file - > + updated by scan_dquots */ > + unsigned int dqi_data_blocks; /* Number of data blocks in file - > + updated by scan_dquots */ > }; > > struct v2_mem_dqblk { > diff --git a/lib/quota/mkquota.c b/lib/quota/mkquota.c > index ac7288c..9acbb10 100644 > --- a/lib/quota/mkquota.c > +++ b/lib/quota/mkquota.c > @@ -6,9 +6,6 @@ > #include "config.h" > #include <sys/types.h> > #include <sys/stat.h> > -#ifdef HAVE_SYS_QUOTA_H > -#include <sys/quota.h> > -#endif > #include <unistd.h> > #include <errno.h> > #include <string.h> > @@ -18,7 +15,6 @@ > #include "ext2fs/ext2fs.h" > #include "e2p/e2p.h" > > -#include "quota.h" > #include "quotaio.h" > #include "quotaio_v2.h" > #include "quotaio_tree.h" > @@ -49,18 +45,6 @@ static void print_inode(struct ext2_inode *inode) > return; > } > > -int quota_is_on(ext2_filsys fs, int type) > -{ > - char tmp[1024]; > - qid_t id = (type == USRQUOTA) ? getuid() : getgid(); > - > -#ifdef HAVE_QUOTACTL > - if (!quotactl(QCMD(Q_V2_GETQUOTA, type), fs->device_name, id, tmp)) > - return 1; > -#endif > - return 0; > -} > - > /* > * Returns 0 if not able to find the quota file, otherwise returns its > * inode number. > @@ -74,7 +58,7 @@ int quota_file_exists(ext2_filsys fs, int qtype, int fmt) > if (qtype >= MAXQUOTAS) > return -EINVAL; > > - quota_get_qf_name(qtype, fmt, qf_name); > + quota_get_qf_name(qtype, QFMT_VFS_V1, qf_name); > > ret = ext2fs_lookup(fs, EXT2_ROOT_INO, qf_name, strlen(qf_name), 0, > &ino); > diff --git a/lib/quota/mkquota.h b/lib/quota/mkquota.h > index a5fa74b..68ef435 100644 > --- a/lib/quota/mkquota.h > +++ b/lib/quota/mkquota.h > @@ -32,7 +32,7 @@ > > #include "ext2fs/ext2_fs.h" > #include "ext2fs/ext2fs.h" > -#include "quota.h" > +#include "quotaio.h" > #include "../e2fsck/dict.h" > > typedef struct quota_ctx *quota_ctx_t; > @@ -56,7 +56,6 @@ errcode_t quota_compute_usage(quota_ctx_t qctx); > void quota_release_context(quota_ctx_t *qctx); > > errcode_t quota_remove_inode(ext2_filsys fs, int qtype); > -int quota_is_on(ext2_filsys fs, int type); > int quota_file_exists(ext2_filsys fs, int qtype, int fmt); > void quota_set_sb_inum(ext2_filsys fs, ext2_ino_t ino, int qtype); > > diff --git a/lib/quota/quota.h b/lib/quota/quota.h > deleted file mode 100644 > index a943ec6..0000000 > --- a/lib/quota/quota.h > +++ /dev/null > @@ -1,155 +0,0 @@ > -/* > - * Copyright (c) 1982, 1986 Regents of the University of California. > - * All rights reserved. > - * > - * This code is derived from software contributed to Berkeley by > - * Robert Elz at The University of Melbourne. > - * > - * Redistribution and use in source and binary forms, with or without > - * modification, are permitted provided that the following conditions > - * are met: > - * 1. Redistributions of source code must retain the above copyright > - * notice, this list of conditions and the following disclaimer. > - * 2. Redistributions in binary form must reproduce the above copyright > - * notice, this list of conditions and the following disclaimer in the > - * documentation and/or other materials provided with the distribution. > - * 3. Neither the name of the University nor the names of its contributors > - * may be used to endorse or promote products derived from this software > - * without specific prior written permission. > - * > - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND > - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE > - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL > - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT > - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > - * SUCH DAMAGE. > - */ > - > -#ifndef _LINUX_QUOTA_ > -#define _LINUX_QUOTA_ > - > -#include <errno.h> > -#include <sys/types.h> > -#include <ext2fs/ext2_types.h> > - > -#define __DQUOT_VERSION__ "dquot_6.5.2" > - > -typedef u_int32_t qid_t; /* Type in which we store ids in memory */ > -typedef int64_t qsize_t; /* Type in which we store size limitations */ > - > -#define MAXQUOTAS 2 > -#define USRQUOTA 0 /* element used for user quotas */ > -#define GRPQUOTA 1 /* element used for group quotas */ > - > -/* > - * Definitions for the default names of the quotas files. > - */ > -#define INITQFNAMES { \ > - "user", /* USRQUOTA */ \ > - "group", /* GRPQUOTA */ \ > - "undefined", \ > -}; > - > -/* > - * Definitions of magics and versions of current quota files > - */ > -#define INITQMAGICS {\ > - 0xd9c01f11, /* USRQUOTA */\ > - 0xd9c01927 /* GRPQUOTA */\ > -} > - > -/* Size of blocks in which are counted size limits in generic utility parts */ > -#define QUOTABLOCK_BITS 10 > -#define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS) > - > -/* Conversion routines from and to quota blocks */ > -#define qb2kb(x) ((x) << (QUOTABLOCK_BITS-10)) > -#define kb2qb(x) ((x) >> (QUOTABLOCK_BITS-10)) > -#define toqb(x) (((x) + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS) > - > -/* > - * Command definitions for the 'quotactl' system call. > - * The commands are broken into a main command defined below > - * and a subcommand that is used to convey the type of > - * quota that is being manipulated (see above). > - */ > -#define SUBCMDMASK 0x00ff > -#define SUBCMDSHIFT 8 > -#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK)) > - > -#define Q_SYNC 0x800001 /* sync disk copy of a filesystems quotas */ > -#define Q_QUOTAON 0x800002 /* turn quotas on */ > -#define Q_QUOTAOFF 0x800003 /* turn quotas off */ > -#define Q_GETFMT 0x800004 /* get quota format used on given filesystem */ > -#define Q_GETINFO 0x800005 /* get information about quota files */ > -#define Q_SETINFO 0x800006 /* set information about quota files */ > -#define Q_GETQUOTA 0x800007 /* get user quota structure */ > -#define Q_SETQUOTA 0x800008 /* set user quota structure */ > - > -/* Quota format type IDs */ > -#define QFMT_VFS_OLD 1 > -#define QFMT_VFS_V0 2 > -#define QFMT_OCFS2 3 > -#define QFMT_VFS_V1 4 > - > -/* Size of block in which space limits are passed through the quota > - * interface */ > -#define QIF_DQBLKSIZE_BITS 10 > -#define QIF_DQBLKSIZE (1 << QIF_DQBLKSIZE_BITS) > - > -/* > - * Structure used for setting quota information about file via quotactl > - * Following flags are used to specify which fields are valid > - */ > -#define IIF_BGRACE 1 > -#define IIF_IGRACE 2 > -#define IIF_FLAGS 4 > -#define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS) > - > -struct if_dqinfo { > - __u64 dqi_bgrace; > - __u64 dqi_igrace; > - __u32 dqi_flags; > - __u32 dqi_valid; > -}; > - > -/* > - * Definitions for quota netlink interface > - */ > -#define QUOTA_NL_NOWARN 0 > -#define QUOTA_NL_IHARDWARN 1 /* Inode hardlimit reached */ > -#define QUOTA_NL_ISOFTLONGWARN 2 /* Inode grace time expired */ > -#define QUOTA_NL_ISOFTWARN 3 /* Inode softlimit reached */ > -#define QUOTA_NL_BHARDWARN 4 /* Block hardlimit reached */ > -#define QUOTA_NL_BSOFTLONGWARN 5 /* Block grace time expired */ > -#define QUOTA_NL_BSOFTWARN 6 /* Block softlimit reached */ > -#define QUOTA_NL_IHARDBELOW 7 /* Usage got below inode hardlimit */ > -#define QUOTA_NL_ISOFTBELOW 8 /* Usage got below inode softlimit */ > -#define QUOTA_NL_BHARDBELOW 9 /* Usage got below block hardlimit */ > -#define QUOTA_NL_BSOFTBELOW 10 /* Usage got below block softlimit */ > - > -enum { > - QUOTA_NL_C_UNSPEC, > - QUOTA_NL_C_WARNING, > - __QUOTA_NL_C_MAX, > -}; > -#define QUOTA_NL_C_MAX (__QUOTA_NL_C_MAX - 1) > - > -enum { > - QUOTA_NL_A_UNSPEC, > - QUOTA_NL_A_QTYPE, > - QUOTA_NL_A_EXCESS_ID, > - QUOTA_NL_A_WARNING, > - QUOTA_NL_A_DEV_MAJOR, > - QUOTA_NL_A_DEV_MINOR, > - QUOTA_NL_A_CAUSED_ID, > - __QUOTA_NL_A_MAX, > -}; > -#define QUOTA_NL_A_MAX (__QUOTA_NL_A_MAX - 1) > - > -#endif /* _QUOTA_ */ > diff --git a/lib/quota/quotaio.c b/lib/quota/quotaio.c > index 3f434ca..d46cf28 100644 > --- a/lib/quota/quotaio.c > +++ b/lib/quota/quotaio.c > @@ -14,11 +14,12 @@ > #include <sys/types.h> > #include <sys/stat.h> > #include <sys/file.h> > +#include <sys/quota.h> > > #include "common.h" > #include "quotaio.h" > > -static const char extensions[MAXQUOTAS + 2][20] = INITQFNAMES; > +static const char * const extensions[MAXQUOTAS] = {"user", "group"}; > static const char * const basenames[] = { > "", /* undefined */ > "quota", /* QFMT_VFS_OLD */ > @@ -27,14 +28,6 @@ static const char * const basenames[] = { > "aquota" /* QFMT_VFS_V1 */ > }; > > -static const char * const fmtnames[] = { > - "vfsold", > - "vfsv0", > - "vfsv1", > - "rpc", > - "xfs" > -}; > - > /* Header in all newer quotafiles */ > struct disk_dqheader { > u_int32_t dqh_magic; > @@ -65,7 +58,6 @@ const char *quota_get_qf_name(int type, int fmt, char *buf) > const char *quota_get_qf_path(const char *mntpt, int qtype, int fmt, > char *path_buf, size_t path_buf_size) > { > - struct stat qf_stat; > char qf_name[QUOTA_NAME_LEN]; > > if (!mntpt || !path_buf || !path_buf_size) > diff --git a/lib/quota/quotaio.h b/lib/quota/quotaio.h > index 91a1ff2..5a7db7b 100644 > --- a/lib/quota/quotaio.h > +++ b/lib/quota/quotaio.h > @@ -12,13 +12,33 @@ > #include <sys/stat.h> > > #include "ext2fs/ext2fs.h" > -#include "quota.h" > #include "dqblk_v2.h" > > +typedef int64_t qsize_t; /* Type in which we store size limitations */ > + > +#define MAXQUOTAS 2 > +#define USRQUOTA 0 > +#define GRPQUOTA 1 > + > +/* > + * Definitions of magics and versions of current quota files > + */ > +#define INITQMAGICS {\ > + 0xd9c01f11, /* USRQUOTA */\ > + 0xd9c01927 /* GRPQUOTA */\ > +} > + > +/* Size of blocks in which are counted size limits in generic utility parts */ > +#define QUOTABLOCK_BITS 10 > +#define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS) > +#define toqb(x) (((x) + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS) > + > +/* Quota format type IDs */ > +#define QFMT_VFS_OLD 1 > +#define QFMT_VFS_V0 2 > +#define QFMT_VFS_V1 4 > + > /* > - * Definitions for disk quotas imposed on the average user > - * (big brother finally hits Linux). > - * > * The following constants define the default amount of time given a user > * before the soft limits are treated as hard limits (usually resulting > * in an allocation failure). The timer is started when the user crosses > @@ -27,11 +47,7 @@ > #define MAX_IQ_TIME 604800 /* (7*24*60*60) 1 week */ > #define MAX_DQ_TIME 604800 /* (7*24*60*60) 1 week */ > > -#define IOFL_QUOTAON 0x01 /* Is quota enabled in kernel? */ > -#define IOFL_INFODIRTY 0x02 /* Did info change? */ > -#define IOFL_RO 0x04 /* Just RO access? */ > -#define IOFL_NFS_MIXED_PATHS 0x08 /* Should we trim leading slashes > - from NFSv4 mountpoints? */ > +#define IOFL_INFODIRTY 0x01 /* Did info change? */ > > struct quotafile_ops; > > @@ -64,19 +80,6 @@ struct quota_handle { > struct util_dqinfo qh_info; /* Generic quotafile info */ > }; > > -/* Statistics gathered from kernel */ > -struct util_dqstats { > - u_int32_t lookups; > - u_int32_t drops; > - u_int32_t reads; > - u_int32_t writes; > - u_int32_t cache_hits; > - u_int32_t allocated_dquots; > - u_int32_t free_dquots; > - u_int32_t syncs; > - u_int32_t version; > -}; > - > /* Utility quota block */ > struct util_dqblk { > qsize_t dqb_ihardlimit; > @@ -134,9 +137,6 @@ static inline void mark_quotafile_info_dirty(struct quota_handle *h) > h->qh_io_flags |= IOFL_INFODIRTY; > } > > -#define QIO_ENABLED(h) ((h)->qh_io_flags & IOFL_QUOTAON) > -#define QIO_RO(h) ((h)->qh_io_flags & IOFL_RO) > - > /* Open existing quotafile of given type (and verify its format) on given > * filesystem. */ > errcode_t quota_file_open(struct quota_handle *h, ext2_filsys fs, > diff --git a/lib/quota/quotaio_tree.h b/lib/quota/quotaio_tree.h > index 37c15ce..6ee54c9 100644 > --- a/lib/quota/quotaio_tree.h > +++ b/lib/quota/quotaio_tree.h > @@ -6,7 +6,8 @@ > #define _LINUX_QUOTA_TREE_H > > #include <sys/types.h> > -#include "quota.h" > + > +typedef u_int32_t qid_t; /* Type in which we store ids in memory */ > > #define QT_TREEOFF 1 /* Offset of tree in file in blocks */ > #define QT_TREEDEPTH 4 /* Depth of quota tree */ > diff --git a/lib/quota/quotaio_v2.c b/lib/quota/quotaio_v2.c > index e658706..f8d553b 100644 > --- a/lib/quota/quotaio_v2.c > +++ b/lib/quota/quotaio_v2.c > @@ -18,8 +18,6 @@ > #include "quotaio.h" > #include "quotaio_tree.h" > > -typedef char *dqbuf_t; > - > static int v2_check_file(struct quota_handle *h, int type, int fmt); > static int v2_init_io(struct quota_handle *h); > static int v2_new_io(struct quota_handle *h); > @@ -43,9 +41,6 @@ struct quotafile_ops quotafile_ops_2 = { > .report = v2_report, > }; > > -#define getdqbuf() smalloc(V2_DQBLKSIZE) > -#define freedqbuf(buf) free(buf) > - > /* > * Copy dquot from disk to memory > */ > @@ -140,34 +135,6 @@ static inline void v2_mem2diskdqinfo(struct v2_disk_dqinfo *d, > ext2fs_cpu_to_le32(m->u.v2_mdqi.dqi_qtree.dqi_free_entry); > } > > -/* Convert kernel quotablock format to utility one */ > -static inline void v2_kern2utildqblk(struct util_dqblk *u, > - struct v2_kern_dqblk *k) > -{ > - u->dqb_ihardlimit = k->dqb_ihardlimit; > - u->dqb_isoftlimit = k->dqb_isoftlimit; > - u->dqb_bhardlimit = k->dqb_bhardlimit; > - u->dqb_bsoftlimit = k->dqb_bsoftlimit; > - u->dqb_curinodes = k->dqb_curinodes; > - u->dqb_curspace = k->dqb_curspace; > - u->dqb_itime = k->dqb_itime; > - u->dqb_btime = k->dqb_btime; > -} > - > -/* Convert utility quotablock format to kernel one */ > -static inline void v2_util2kerndqblk(struct v2_kern_dqblk *k, > - struct util_dqblk *u) > -{ > - k->dqb_ihardlimit = u->dqb_ihardlimit; > - k->dqb_isoftlimit = u->dqb_isoftlimit; > - k->dqb_bhardlimit = u->dqb_bhardlimit; > - k->dqb_bsoftlimit = u->dqb_bsoftlimit; > - k->dqb_curinodes = u->dqb_curinodes; > - k->dqb_curspace = u->dqb_curspace; > - k->dqb_itime = u->dqb_itime; > - k->dqb_btime = u->dqb_btime; > -} > - > static int v2_read_header(struct quota_handle *h, struct v2_disk_dqheader *dqh) > { > if (h->e2fs_read(&h->qh_qf, 0, dqh, sizeof(struct v2_disk_dqheader)) != > @@ -184,16 +151,11 @@ static int v2_check_file(struct quota_handle *h, int type, int fmt) > { > struct v2_disk_dqheader dqh; > int file_magics[] = INITQMAGICS; > - int known_versions[] = INIT_V2_VERSIONS; > - int version; > > - if (!v2_read_header(h, &dqh)) > + if (fmt != QFMT_VFS_V1) > return 0; > - if (fmt == QFMT_VFS_V0) > - version = 0; > - else if (fmt == QFMT_VFS_V1) > - version = 1; > - else > + > + if (!v2_read_header(h, &dqh)) > return 0; > > if (ext2fs_le32_to_cpu(dqh.dqh_magic) != file_magics[type]) { > @@ -202,9 +164,7 @@ static int v2_check_file(struct quota_handle *h, int type, int fmt) > "endianity.", ""); > return 0; > } > - if (ext2fs_le32_to_cpu(dqh.dqh_version) > known_versions[type]) > - return 0; > - if (version != ext2fs_le32_to_cpu(dqh.dqh_version)) > + if (V2_VERSION != ext2fs_le32_to_cpu(dqh.dqh_version)) > return 0; > return 1; > } > @@ -236,14 +196,13 @@ static int v2_new_io(struct quota_handle *h) > int file_magics[] = INITQMAGICS; > struct v2_disk_dqheader ddqheader; > struct v2_disk_dqinfo ddqinfo; > - int version = 1; > > if (h->qh_fmt != QFMT_VFS_V1) > return -1; > > /* Write basic quota header */ > ddqheader.dqh_magic = ext2fs_cpu_to_le32(file_magics[h->qh_type]); > - ddqheader.dqh_version = ext2fs_cpu_to_le32(version); > + ddqheader.dqh_version = ext2fs_cpu_to_le32(V2_VERSION); > if (h->e2fs_write(&h->qh_qf, 0, &ddqheader, sizeof(ddqheader)) != > sizeof(ddqheader)) > return -1; > diff --git a/lib/quota/quotaio_v2.h b/lib/quota/quotaio_v2.h > index 072e36f..0bb4363 100644 > --- a/lib/quota/quotaio_v2.h > +++ b/lib/quota/quotaio_v2.h > @@ -8,11 +8,12 @@ > #define GUARD_QUOTAIO_V2_H > > #include <sys/types.h> > -#include "quota.h" > +#include "quotaio.h" > > /* Offset of info header in file */ > #define V2_DQINFOOFF sizeof(struct v2_disk_dqheader) > -#define INIT_V2_VERSIONS { 1, 1} > +/* Supported version of quota-tree format */ > +#define V2_VERSION 1 > > struct v2_disk_dqheader { > u_int32_t dqh_magic; /* Magic number identifying file */ > @@ -35,21 +36,6 @@ struct v2_disk_dqinfo { > * free entry */ > } __attribute__ ((packed)); > > -/* Structure of quota for one user on disk */ > -struct v2r0_disk_dqblk { > - u_int32_t dqb_id; /* id this quota applies to */ > - u_int32_t dqb_ihardlimit; /* absolute limit on allocated inodes */ > - u_int32_t dqb_isoftlimit; /* preferred inode limit */ > - u_int32_t dqb_curinodes; /* current # allocated inodes */ > - u_int32_t dqb_bhardlimit; /* absolute limit on disk space > - * (in QUOTABLOCK_SIZE) */ > - u_int32_t dqb_bsoftlimit; /* preferred limit on disk space > - * (in QUOTABLOCK_SIZE) */ > - u_int64_t dqb_curspace; /* current space occupied (in bytes) */ > - u_int64_t dqb_btime; /* time limit for excessive disk use */ > - u_int64_t dqb_itime; /* time limit for excessive inode use */ > -} __attribute__ ((packed)); > - > struct v2r1_disk_dqblk { > u_int32_t dqb_id; /* id this quota applies to */ > u_int32_t dqb_pad; > @@ -65,39 +51,4 @@ struct v2r1_disk_dqblk { > u_int64_t dqb_itime; /* time limit for excessive inode use */ > } __attribute__ ((packed)); > > -/* Structure of quota for communication with kernel */ > -struct v2_kern_dqblk { > - unsigned int dqb_ihardlimit; > - unsigned int dqb_isoftlimit; > - unsigned int dqb_curinodes; > - unsigned int dqb_bhardlimit; > - unsigned int dqb_bsoftlimit; > - qsize_t dqb_curspace; > - time_t dqb_btime; > - time_t dqb_itime; > -}; > - > -/* Structure of quotafile info for communication with kernel (obsolete) */ > -struct v2_kern_dqinfo { > - unsigned int dqi_bgrace; > - unsigned int dqi_igrace; > - unsigned int dqi_flags; > - unsigned int dqi_blocks; > - unsigned int dqi_free_blk; > - unsigned int dqi_free_entry; > -}; > - > -/* Structure with gathered statistics from kernel */ > -struct v2_dqstats { > - u_int32_t lookups; > - u_int32_t drops; > - u_int32_t reads; > - u_int32_t writes; > - u_int32_t cache_hits; > - u_int32_t allocated_dquots; > - u_int32_t free_dquots; > - u_int32_t syncs; > - u_int32_t version; > -}; > - > #endif > -- > 1.7.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html