blob: ee1507193950bd07d7d8ee5fa85f9c01dc9ffd88 [file] [log] [blame]
Aditya Kalif239fef2011-07-20 11:40:02 -07001/** mkquota.h
2 *
3 * Interface to the quota library.
4 *
5 * The quota library provides interface for creating and updating the quota
6 * files and the ext4 superblock fields. It supports the new VFS_V1 quota
7 * format. The quota library also provides support for keeping track of quotas
8 * in memory.
9 * The typical way to use the quota library is as follows:
10 * {
11 * quota_ctx_t qctx;
12 *
Aditya Kalia86d55d2011-11-14 10:55:54 -050013 * quota_init_context(&qctx, fs, -1);
Aditya Kalif239fef2011-07-20 11:40:02 -070014 * {
Aditya Kalia86d55d2011-11-14 10:55:54 -050015 * quota_compute_usage(qctx, -1);
Aditya Kalif239fef2011-07-20 11:40:02 -070016 * AND/OR
17 * quota_data_add/quota_data_sub/quota_data_inodes();
18 * }
Aditya Kalia86d55d2011-11-14 10:55:54 -050019 * quota_write_inode(qctx, USRQUOTA);
20 * quota_write_inode(qctx, GRPQUOTA);
21 * quota_release_context(&qctx);
Aditya Kalif239fef2011-07-20 11:40:02 -070022 * }
23 *
24 * This initial version does not support reading the quota files. This support
25 * will be added in near future.
26 *
27 * Aditya Kali <adityakali@google.com>
28 */
29
30#ifndef __QUOTA_QUOTAIO_H__
31#define __QUOTA_QUOTAIO_H__
32
33#include "ext2fs/ext2_fs.h"
34#include "ext2fs/ext2fs.h"
Jan Kara2ae58b62012-06-04 12:51:55 -040035#include "quotaio.h"
Aditya Kalif239fef2011-07-20 11:40:02 -070036#include "../e2fsck/dict.h"
37
38typedef struct quota_ctx *quota_ctx_t;
39
40struct quota_ctx {
41 ext2_filsys fs;
42 dict_t *quota_dict[MAXQUOTAS];
43};
44
Aditya Kalia86d55d2011-11-14 10:55:54 -050045/* In mkquota.c */
46errcode_t quota_init_context(quota_ctx_t *qctx, ext2_filsys fs, int qtype);
Aditya Kalif239fef2011-07-20 11:40:02 -070047void quota_data_inodes(quota_ctx_t qctx, struct ext2_inode *inode, ext2_ino_t ino,
48 int adjust);
49void quota_data_add(quota_ctx_t qctx, struct ext2_inode *inode, ext2_ino_t ino,
50 qsize_t space);
51void quota_data_sub(quota_ctx_t qctx, struct ext2_inode *inode, ext2_ino_t ino,
52 qsize_t space);
Aditya Kalia86d55d2011-11-14 10:55:54 -050053errcode_t quota_write_inode(quota_ctx_t qctx, int qtype);
Aditya Kali50277512012-07-13 15:25:06 -070054errcode_t quota_update_limits(quota_ctx_t qctx, ext2_ino_t qf_ino, int type);
Aditya Kalia86d55d2011-11-14 10:55:54 -050055errcode_t quota_compute_usage(quota_ctx_t qctx);
56void quota_release_context(quota_ctx_t *qctx);
Aditya Kalif239fef2011-07-20 11:40:02 -070057
Aditya Kalia86d55d2011-11-14 10:55:54 -050058errcode_t quota_remove_inode(ext2_filsys fs, int qtype);
Aditya Kalia86d55d2011-11-14 10:55:54 -050059int quota_file_exists(ext2_filsys fs, int qtype, int fmt);
60void quota_set_sb_inum(ext2_filsys fs, ext2_ino_t ino, int qtype);
Aditya Kali7943ccf2012-04-24 14:46:08 -040061errcode_t quota_compare_and_update(quota_ctx_t qctx, int qtype,
62 int *usage_inconsistent);
Aditya Kalia86d55d2011-11-14 10:55:54 -050063
Aditya Kalif239fef2011-07-20 11:40:02 -070064#endif /* __QUOTA_QUOTAIO_H__ */