#define FSCACHE_DEBUG_LEVEL …
#include <linux/export.h>
#include <linux/slab.h>
#include "internal.h"
#define fscache_volume_hash_shift …
static struct hlist_bl_head fscache_volume_hash[1 << fscache_volume_hash_shift];
static atomic_t fscache_volume_debug_id;
static LIST_HEAD(fscache_volumes);
static void fscache_create_volume_work(struct work_struct *work);
struct fscache_volume *fscache_get_volume(struct fscache_volume *volume,
enum fscache_volume_trace where)
{ … }
struct fscache_volume *fscache_try_get_volume(struct fscache_volume *volume,
enum fscache_volume_trace where)
{ … }
EXPORT_SYMBOL(…);
static void fscache_see_volume(struct fscache_volume *volume,
enum fscache_volume_trace where)
{ … }
static void __fscache_begin_volume_access(struct fscache_volume *volume,
struct fscache_cookie *cookie,
enum fscache_access_trace why)
{ … }
bool fscache_begin_volume_access(struct fscache_volume *volume,
struct fscache_cookie *cookie,
enum fscache_access_trace why)
{ … }
void fscache_end_volume_access(struct fscache_volume *volume,
struct fscache_cookie *cookie,
enum fscache_access_trace why)
{ … }
EXPORT_SYMBOL(…);
static bool fscache_volume_same(const struct fscache_volume *a,
const struct fscache_volume *b)
{ … }
static bool fscache_is_acquire_pending(struct fscache_volume *volume)
{ … }
static void fscache_wait_on_volume_collision(struct fscache_volume *candidate,
unsigned int collidee_debug_id)
{ … }
static bool fscache_hash_volume(struct fscache_volume *candidate)
{ … }
static struct fscache_volume *fscache_alloc_volume(const char *volume_key,
const char *cache_name,
const void *coherency_data,
size_t coherency_len)
{ … }
static void fscache_create_volume_work(struct work_struct *work)
{ … }
void fscache_create_volume(struct fscache_volume *volume, bool wait)
{ … }
struct fscache_volume *__fscache_acquire_volume(const char *volume_key,
const char *cache_name,
const void *coherency_data,
size_t coherency_len)
{ … }
EXPORT_SYMBOL(…);
static void fscache_wake_pending_volume(struct fscache_volume *volume,
struct hlist_bl_head *h)
{ … }
static void fscache_unhash_volume(struct fscache_volume *volume)
{ … }
static void fscache_free_volume(struct fscache_volume *volume)
{ … }
void fscache_put_volume(struct fscache_volume *volume,
enum fscache_volume_trace where)
{ … }
EXPORT_SYMBOL(…);
void __fscache_relinquish_volume(struct fscache_volume *volume,
const void *coherency_data,
bool invalidate)
{ … }
EXPORT_SYMBOL(…);
void fscache_withdraw_volume(struct fscache_volume *volume)
{ … }
EXPORT_SYMBOL(…);
#ifdef CONFIG_PROC_FS
static int fscache_volumes_seq_show(struct seq_file *m, void *v)
{ … }
static void *fscache_volumes_seq_start(struct seq_file *m, loff_t *_pos)
__acquires(&fscache_addremove_sem)
{ … }
static void *fscache_volumes_seq_next(struct seq_file *m, void *v, loff_t *_pos)
{ … }
static void fscache_volumes_seq_stop(struct seq_file *m, void *v)
__releases(&fscache_addremove_sem)
{ … }
const struct seq_operations fscache_volumes_seq_ops = …;
#endif