#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/mount.h>
#include <linux/dqblk_v2.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/quotaops.h>
#include <asm/byteorder.h>
#include "quota_tree.h"
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define MAX_QTREE_DEPTH …
#define __QUOTA_QT_PARANOIA
static int __get_index(struct qtree_mem_dqinfo *info, qid_t id, int depth)
{ … }
static int get_index(struct qtree_mem_dqinfo *info, struct kqid qid, int depth)
{ … }
static int qtree_dqstr_in_blk(struct qtree_mem_dqinfo *info)
{ … }
static ssize_t read_blk(struct qtree_mem_dqinfo *info, uint blk, char *buf)
{ … }
static ssize_t write_blk(struct qtree_mem_dqinfo *info, uint blk, char *buf)
{ … }
static inline int do_check_range(struct super_block *sb, const char *val_name,
uint val, uint min_val, uint max_val)
{ … }
static int check_dquot_block_header(struct qtree_mem_dqinfo *info,
struct qt_disk_dqdbheader *dh)
{ … }
static int get_free_dqblk(struct qtree_mem_dqinfo *info)
{ … }
static int put_free_dqblk(struct qtree_mem_dqinfo *info, char *buf, uint blk)
{ … }
static int remove_free_dqentry(struct qtree_mem_dqinfo *info, char *buf,
uint blk)
{ … }
static int insert_free_dqentry(struct qtree_mem_dqinfo *info, char *buf,
uint blk)
{ … }
int qtree_entry_unused(struct qtree_mem_dqinfo *info, char *disk)
{ … }
EXPORT_SYMBOL(…);
static uint find_free_dqentry(struct qtree_mem_dqinfo *info,
struct dquot *dquot, int *err)
{ … }
static int do_insert_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot,
uint *blks, int depth)
{ … }
static inline int dq_insert_tree(struct qtree_mem_dqinfo *info,
struct dquot *dquot)
{ … }
int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot)
{ … }
EXPORT_SYMBOL(…);
static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot,
uint blk)
{ … }
static int remove_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot,
uint *blks, int depth)
{ … }
int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot)
{ … }
EXPORT_SYMBOL(…);
static loff_t find_block_dqentry(struct qtree_mem_dqinfo *info,
struct dquot *dquot, uint blk)
{ … }
static loff_t find_tree_dqentry(struct qtree_mem_dqinfo *info,
struct dquot *dquot, uint *blks, int depth)
{ … }
static inline loff_t find_dqentry(struct qtree_mem_dqinfo *info,
struct dquot *dquot)
{ … }
int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot)
{ … }
EXPORT_SYMBOL(…);
int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot)
{ … }
EXPORT_SYMBOL(…);
static int find_next_id(struct qtree_mem_dqinfo *info, qid_t *id,
unsigned int blk, int depth)
{ … }
int qtree_get_next_id(struct qtree_mem_dqinfo *info, struct kqid *qid)
{ … }
EXPORT_SYMBOL(…);