#include <linux/file.h>
#include <linux/poll.h>
#include <linux/slab.h>
#include <linux/mount.h>
#include <linux/pagemap.h>
#include <linux/security.h>
#include <linux/compat.h>
#include <linux/fs_stack.h>
#include "ecryptfs_kernel.h"
static ssize_t ecryptfs_read_update_atime(struct kiocb *iocb,
struct iov_iter *to)
{ … }
static ssize_t ecryptfs_splice_read_update_atime(struct file *in, loff_t *ppos,
struct pipe_inode_info *pipe,
size_t len, unsigned int flags)
{ … }
struct ecryptfs_getdents_callback { … };
static bool
ecryptfs_filldir(struct dir_context *ctx, const char *lower_name,
int lower_namelen, loff_t offset, u64 ino, unsigned int d_type)
{ … }
static int ecryptfs_readdir(struct file *file, struct dir_context *ctx)
{ … }
struct kmem_cache *ecryptfs_file_info_cache;
static int read_or_initialize_metadata(struct dentry *dentry)
{ … }
static int ecryptfs_mmap(struct file *file, struct vm_area_struct *vma)
{ … }
static int ecryptfs_open(struct inode *inode, struct file *file)
{ … }
static int ecryptfs_dir_open(struct inode *inode, struct file *file)
{ … }
static int ecryptfs_flush(struct file *file, fl_owner_t td)
{ … }
static int ecryptfs_release(struct inode *inode, struct file *file)
{ … }
static int ecryptfs_dir_release(struct inode *inode, struct file *file)
{ … }
static loff_t ecryptfs_dir_llseek(struct file *file, loff_t offset, int whence)
{ … }
static int
ecryptfs_fsync(struct file *file, loff_t start, loff_t end, int datasync)
{ … }
static int ecryptfs_fasync(int fd, struct file *file, int flag)
{ … }
static long
ecryptfs_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{ … }
#ifdef CONFIG_COMPAT
static long
ecryptfs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{ … }
#endif
const struct file_operations ecryptfs_dir_fops = …;
const struct file_operations ecryptfs_main_fops = …;