#include <linux/fs.h>
#include <linux/file.h>
#include <linux/falloc.h>
#include <linux/mount.h>
#include <linux/nfs_fs.h>
#include <linux/nfs_ssc.h>
#include <linux/splice.h>
#include "delegation.h"
#include "internal.h"
#include "iostat.h"
#include "fscache.h"
#include "pnfs.h"
#include "nfstrace.h"
#ifdef CONFIG_NFS_V4_2
#include "nfs42.h"
#endif
#define NFSDBG_FACILITY …
static int
nfs4_file_open(struct inode *inode, struct file *filp)
{ … }
static int
nfs4_file_flush(struct file *file, fl_owner_t id)
{ … }
#ifdef CONFIG_NFS_V4_2
static ssize_t __nfs4_copy_file_range(struct file *file_in, loff_t pos_in,
struct file *file_out, loff_t pos_out,
size_t count, unsigned int flags)
{ … }
static ssize_t nfs4_copy_file_range(struct file *file_in, loff_t pos_in,
struct file *file_out, loff_t pos_out,
size_t count, unsigned int flags)
{ … }
static loff_t nfs4_file_llseek(struct file *filep, loff_t offset, int whence)
{ … }
static long nfs42_fallocate(struct file *filep, int mode, loff_t offset, loff_t len)
{ … }
static loff_t nfs42_remap_file_range(struct file *src_file, loff_t src_off,
struct file *dst_file, loff_t dst_off, loff_t count,
unsigned int remap_flags)
{ … }
static int read_name_gen = …;
#define SSC_READ_NAME_BODY …
static struct file *__nfs42_ssc_open(struct vfsmount *ss_mnt,
struct nfs_fh *src_fh, nfs4_stateid *stateid)
{ … }
static void __nfs42_ssc_close(struct file *filep)
{ … }
static const struct nfs4_ssc_client_ops nfs4_ssc_clnt_ops_tbl = …;
void nfs42_ssc_register_ops(void)
{ … }
void nfs42_ssc_unregister_ops(void)
{ … }
#endif
static int nfs4_setlease(struct file *file, int arg, struct file_lease **lease,
void **priv)
{ … }
const struct file_operations nfs4_file_operations = …;