#include <linux/errno.h>
#include <linux/math.h>
#include <linux/nfs4.h>
#include <linux/nfs_fs.h>
#include <linux/slab.h>
#include <linux/rcupdate.h>
#include <linux/types.h>
#include "nfs4_fs.h"
#include "callback.h"
#include "delegation.h"
#include "internal.h"
#include "pnfs.h"
#include "nfs4session.h"
#include "nfs4trace.h"
#define NFSDBG_FACILITY …
__be32 nfs4_callback_getattr(void *argp, void *resp,
struct cb_process_state *cps)
{ … }
__be32 nfs4_callback_recall(void *argp, void *resp,
struct cb_process_state *cps)
{ … }
#if defined(CONFIG_NFS_V4_1)
static struct inode *nfs_layout_find_inode_by_stateid(struct nfs_client *clp,
const nfs4_stateid *stateid)
__must_hold(RCU)
{ … }
static struct inode *nfs_layout_find_inode_by_fh(struct nfs_client *clp,
const struct nfs_fh *fh)
{ … }
static struct inode *nfs_layout_find_inode(struct nfs_client *clp,
const struct nfs_fh *fh,
const nfs4_stateid *stateid)
{ … }
static u32 pnfs_check_callback_stateid(struct pnfs_layout_hdr *lo,
const nfs4_stateid *new,
struct cb_process_state *cps)
{ … }
static u32 initiate_file_draining(struct nfs_client *clp,
struct cb_layoutrecallargs *args,
struct cb_process_state *cps)
{ … }
static u32 initiate_bulk_draining(struct nfs_client *clp,
struct cb_layoutrecallargs *args)
{ … }
static u32 do_callback_layoutrecall(struct nfs_client *clp,
struct cb_layoutrecallargs *args,
struct cb_process_state *cps)
{ … }
__be32 nfs4_callback_layoutrecall(void *argp, void *resp,
struct cb_process_state *cps)
{ … }
static void pnfs_recall_all_layouts(struct nfs_client *clp,
struct cb_process_state *cps)
{ … }
__be32 nfs4_callback_devicenotify(void *argp, void *resp,
struct cb_process_state *cps)
{ … }
static __be32
validate_seqid(const struct nfs4_slot_table *tbl, const struct nfs4_slot *slot,
const struct cb_sequenceargs * args)
{ … }
static int referring_call_exists(struct nfs_client *clp,
uint32_t nrclists,
struct referring_call_list *rclists,
spinlock_t *lock)
__releases(lock)
__acquires(lock)
{ … }
__be32 nfs4_callback_sequence(void *argp, void *resp,
struct cb_process_state *cps)
{ … }
static bool
validate_bitmap_values(unsigned int mask)
{ … }
__be32 nfs4_callback_recallany(void *argp, void *resp,
struct cb_process_state *cps)
{ … }
__be32 nfs4_callback_recallslot(void *argp, void *resp,
struct cb_process_state *cps)
{ … }
__be32 nfs4_callback_notify_lock(void *argp, void *resp,
struct cb_process_state *cps)
{ … }
#endif
#ifdef CONFIG_NFS_V4_2
static void nfs4_copy_cb_args(struct nfs4_copy_state *cp_state,
struct cb_offloadargs *args)
{ … }
__be32 nfs4_callback_offload(void *data, void *dummy,
struct cb_process_state *cps)
{ … }
#endif