#include <linux/time.h>
#include <linux/string.h>
#include <linux/fs.h>
#include <linux/buffer_head.h>
#include <linux/sched.h>
#include "bfs.h"
#undef DEBUG
#ifdef DEBUG
#define dprintf …
#else
#define dprintf(x...) …
#endif
static int bfs_add_entry(struct inode *dir, const struct qstr *child, int ino);
static struct buffer_head *bfs_find_entry(struct inode *dir,
const struct qstr *child,
struct bfs_dirent **res_dir);
static int bfs_readdir(struct file *f, struct dir_context *ctx)
{ … }
const struct file_operations bfs_dir_operations = …;
static int bfs_create(struct mnt_idmap *idmap, struct inode *dir,
struct dentry *dentry, umode_t mode, bool excl)
{ … }
static struct dentry *bfs_lookup(struct inode *dir, struct dentry *dentry,
unsigned int flags)
{ … }
static int bfs_link(struct dentry *old, struct inode *dir,
struct dentry *new)
{ … }
static int bfs_unlink(struct inode *dir, struct dentry *dentry)
{ … }
static int bfs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
struct dentry *old_dentry, struct inode *new_dir,
struct dentry *new_dentry, unsigned int flags)
{ … }
const struct inode_operations bfs_dir_inops = …;
static int bfs_add_entry(struct inode *dir, const struct qstr *child, int ino)
{ … }
static inline int bfs_namecmp(int len, const unsigned char *name,
const char *buffer)
{ … }
static struct buffer_head *bfs_find_entry(struct inode *dir,
const struct qstr *child,
struct bfs_dirent **res_dir)
{ … }