#include <linux/slab.h>
#include <asm/unaligned.h>
#include <linux/buffer_head.h>
#include "exfat_raw.h"
#include "exfat_fs.h"
#define EXFAT_MAX_CACHE …
struct exfat_cache { … };
struct exfat_cache_id { … };
static struct kmem_cache *exfat_cachep;
static void exfat_cache_init_once(void *c)
{ … }
int exfat_cache_init(void)
{ … }
void exfat_cache_shutdown(void)
{ … }
static inline struct exfat_cache *exfat_cache_alloc(void)
{ … }
static inline void exfat_cache_free(struct exfat_cache *cache)
{ … }
static inline void exfat_cache_update_lru(struct inode *inode,
struct exfat_cache *cache)
{ … }
static unsigned int exfat_cache_lookup(struct inode *inode,
unsigned int fclus, struct exfat_cache_id *cid,
unsigned int *cached_fclus, unsigned int *cached_dclus)
{ … }
static struct exfat_cache *exfat_cache_merge(struct inode *inode,
struct exfat_cache_id *new)
{ … }
static void exfat_cache_add(struct inode *inode,
struct exfat_cache_id *new)
{ … }
static void __exfat_cache_inval_inode(struct inode *inode)
{ … }
void exfat_cache_inval_inode(struct inode *inode)
{ … }
static inline int cache_contiguous(struct exfat_cache_id *cid,
unsigned int dclus)
{ … }
static inline void cache_init(struct exfat_cache_id *cid,
unsigned int fclus, unsigned int dclus)
{ … }
int exfat_get_cluster(struct inode *inode, unsigned int cluster,
unsigned int *fclus, unsigned int *dclus,
unsigned int *last_dclus, int allow_eof)
{ … }