#include <linux/pseudo_fs.h>
#include <linux/fscache.h>
#include "internal.h"
static DEFINE_MUTEX(erofs_domain_list_lock);
static DEFINE_MUTEX(erofs_domain_cookies_lock);
static LIST_HEAD(erofs_domain_list);
static LIST_HEAD(erofs_domain_cookies_list);
static struct vfsmount *erofs_pseudo_mnt;
static int erofs_anon_init_fs_context(struct fs_context *fc)
{ … }
static struct file_system_type erofs_anon_fs_type = …;
struct erofs_fscache_io { … };
struct erofs_fscache_rq { … };
static bool erofs_fscache_io_put(struct erofs_fscache_io *io)
{ … }
static void erofs_fscache_req_complete(struct erofs_fscache_rq *req)
{ … }
static void erofs_fscache_req_put(struct erofs_fscache_rq *req)
{ … }
static struct erofs_fscache_rq *erofs_fscache_req_alloc(struct address_space *mapping,
loff_t start, size_t len)
{ … }
static void erofs_fscache_req_io_put(struct erofs_fscache_io *io)
{ … }
static void erofs_fscache_req_end_io(void *priv,
ssize_t transferred_or_error, bool was_async)
{ … }
static struct erofs_fscache_io *erofs_fscache_req_io_alloc(struct erofs_fscache_rq *req)
{ … }
static int erofs_fscache_read_io_async(struct fscache_cookie *cookie,
loff_t pstart, struct erofs_fscache_io *io)
{ … }
struct erofs_fscache_bio { … };
static void erofs_fscache_bio_endio(void *priv,
ssize_t transferred_or_error, bool was_async)
{ … }
struct bio *erofs_fscache_bio_alloc(struct erofs_map_dev *mdev)
{ … }
void erofs_fscache_submit_bio(struct bio *bio)
{ … }
static int erofs_fscache_meta_read_folio(struct file *data, struct folio *folio)
{ … }
static int erofs_fscache_data_read_slice(struct erofs_fscache_rq *req)
{ … }
static int erofs_fscache_data_read(struct erofs_fscache_rq *req)
{ … }
static int erofs_fscache_read_folio(struct file *file, struct folio *folio)
{ … }
static void erofs_fscache_readahead(struct readahead_control *rac)
{ … }
static const struct address_space_operations erofs_fscache_meta_aops = …;
const struct address_space_operations erofs_fscache_access_aops = …;
static void erofs_fscache_domain_put(struct erofs_domain *domain)
{ … }
static int erofs_fscache_register_volume(struct super_block *sb)
{ … }
static int erofs_fscache_init_domain(struct super_block *sb)
{ … }
static int erofs_fscache_register_domain(struct super_block *sb)
{ … }
static struct erofs_fscache *erofs_fscache_acquire_cookie(struct super_block *sb,
char *name, unsigned int flags)
{ … }
static void erofs_fscache_relinquish_cookie(struct erofs_fscache *ctx)
{ … }
static struct erofs_fscache *erofs_domain_init_cookie(struct super_block *sb,
char *name, unsigned int flags)
{ … }
static struct erofs_fscache *erofs_domain_register_cookie(struct super_block *sb,
char *name, unsigned int flags)
{ … }
struct erofs_fscache *erofs_fscache_register_cookie(struct super_block *sb,
char *name,
unsigned int flags)
{ … }
void erofs_fscache_unregister_cookie(struct erofs_fscache *ctx)
{ … }
int erofs_fscache_register_fs(struct super_block *sb)
{ … }
void erofs_fscache_unregister_fs(struct super_block *sb)
{ … }