#include <linux/fs.h>
#include <linux/f2fs_fs.h>
#include <linux/pagemap.h>
#include <linux/sched.h>
#include <linux/ctype.h>
#include <linux/random.h>
#include <linux/dcache.h>
#include <linux/namei.h>
#include <linux/quotaops.h>
#include "f2fs.h"
#include "node.h"
#include "segment.h"
#include "xattr.h"
#include "acl.h"
#include <trace/events/f2fs.h>
static inline bool is_extension_exist(const unsigned char *s, const char *sub,
bool tmp_ext, bool tmp_dot)
{ … }
static inline bool is_temperature_extension(const unsigned char *s, const char *sub)
{ … }
static inline bool is_compress_extension(const unsigned char *s, const char *sub)
{ … }
int f2fs_update_extension_list(struct f2fs_sb_info *sbi, const char *name,
bool hot, bool set)
{ … }
static void set_compress_new_inode(struct f2fs_sb_info *sbi, struct inode *dir,
struct inode *inode, const unsigned char *name)
{ … }
static void set_file_temperature(struct f2fs_sb_info *sbi, struct inode *inode,
const unsigned char *name)
{ … }
static struct inode *f2fs_new_inode(struct mnt_idmap *idmap,
struct inode *dir, umode_t mode,
const char *name)
{ … }
static int f2fs_create(struct mnt_idmap *idmap, struct inode *dir,
struct dentry *dentry, umode_t mode, bool excl)
{ … }
static int f2fs_link(struct dentry *old_dentry, struct inode *dir,
struct dentry *dentry)
{ … }
struct dentry *f2fs_get_parent(struct dentry *child)
{ … }
static int __recover_dot_dentries(struct inode *dir, nid_t pino)
{ … }
static struct dentry *f2fs_lookup(struct inode *dir, struct dentry *dentry,
unsigned int flags)
{ … }
static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
{ … }
static const char *f2fs_get_link(struct dentry *dentry,
struct inode *inode,
struct delayed_call *done)
{ … }
static int f2fs_symlink(struct mnt_idmap *idmap, struct inode *dir,
struct dentry *dentry, const char *symname)
{ … }
static int f2fs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
struct dentry *dentry, umode_t mode)
{ … }
static int f2fs_rmdir(struct inode *dir, struct dentry *dentry)
{ … }
static int f2fs_mknod(struct mnt_idmap *idmap, struct inode *dir,
struct dentry *dentry, umode_t mode, dev_t rdev)
{ … }
static int __f2fs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
struct file *file, umode_t mode, bool is_whiteout,
struct inode **new_inode, struct f2fs_filename *fname)
{ … }
static int f2fs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
struct file *file, umode_t mode)
{ … }
static int f2fs_create_whiteout(struct mnt_idmap *idmap,
struct inode *dir, struct inode **whiteout,
struct f2fs_filename *fname)
{ … }
int f2fs_get_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
struct inode **new_inode)
{ … }
static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
struct dentry *old_dentry, struct inode *new_dir,
struct dentry *new_dentry, unsigned int flags)
{ … }
static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
struct inode *new_dir, struct dentry *new_dentry)
{ … }
static int f2fs_rename2(struct mnt_idmap *idmap,
struct inode *old_dir, struct dentry *old_dentry,
struct inode *new_dir, struct dentry *new_dentry,
unsigned int flags)
{ … }
static const char *f2fs_encrypted_get_link(struct dentry *dentry,
struct inode *inode,
struct delayed_call *done)
{ … }
static int f2fs_encrypted_symlink_getattr(struct mnt_idmap *idmap,
const struct path *path,
struct kstat *stat, u32 request_mask,
unsigned int query_flags)
{ … }
const struct inode_operations f2fs_encrypted_symlink_inode_operations = …;
const struct inode_operations f2fs_dir_inode_operations = …;
const struct inode_operations f2fs_symlink_inode_operations = …;
const struct inode_operations f2fs_special_inode_operations = …;