#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/string.h>
#include <linux/printk.h>
#include <linux/slab.h>
#include <linux/sunrpc/sched.h>
#include <linux/sunrpc/bc_xprt.h>
#include <linux/nfs.h>
#include <linux/nfs4.h>
#include <linux/nfs_fs.h>
#include <linux/module.h>
#include "nfs4_fs.h"
#include "internal.h"
#include "nfs4session.h"
#include "callback.h"
#define NFSDBG_FACILITY …
static void nfs4_init_slot_table(struct nfs4_slot_table *tbl, const char *queue)
{ … }
static void nfs4_shrink_slot_table(struct nfs4_slot_table *tbl, u32 newsize)
{ … }
void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl)
{ … }
void nfs4_free_slot(struct nfs4_slot_table *tbl, struct nfs4_slot *slot)
{ … }
static struct nfs4_slot *nfs4_new_slot(struct nfs4_slot_table *tbl,
u32 slotid, u32 seq_init, gfp_t gfp_mask)
{ … }
static struct nfs4_slot *nfs4_find_or_create_slot(struct nfs4_slot_table *tbl,
u32 slotid, u32 seq_init, gfp_t gfp_mask)
{ … }
static void nfs4_lock_slot(struct nfs4_slot_table *tbl,
struct nfs4_slot *slot)
{ … }
bool nfs4_try_to_lock_slot(struct nfs4_slot_table *tbl, struct nfs4_slot *slot)
{ … }
struct nfs4_slot *nfs4_lookup_slot(struct nfs4_slot_table *tbl, u32 slotid)
{ … }
static int nfs4_slot_get_seqid(struct nfs4_slot_table *tbl, u32 slotid,
u32 *seq_nr)
__must_hold(&tbl->slot_tbl_lock)
{ … }
static bool nfs4_slot_seqid_in_use(struct nfs4_slot_table *tbl,
u32 slotid, u32 seq_nr)
{ … }
int nfs4_slot_wait_on_seqid(struct nfs4_slot_table *tbl,
u32 slotid, u32 seq_nr,
unsigned long timeout)
{ … }
struct nfs4_slot *nfs4_alloc_slot(struct nfs4_slot_table *tbl)
{ … }
static int nfs4_grow_slot_table(struct nfs4_slot_table *tbl,
u32 max_reqs, u32 ivalue)
{ … }
static void nfs4_reset_slot_table(struct nfs4_slot_table *tbl,
u32 server_highest_slotid,
u32 ivalue)
{ … }
static int nfs4_realloc_slot_table(struct nfs4_slot_table *tbl,
u32 max_reqs, u32 ivalue)
{ … }
static void nfs4_release_slot_table(struct nfs4_slot_table *tbl)
{ … }
void nfs4_shutdown_slot_table(struct nfs4_slot_table *tbl)
{ … }
int nfs4_setup_slot_table(struct nfs4_slot_table *tbl, unsigned int max_reqs,
const char *queue)
{ … }
static bool nfs41_assign_slot(struct rpc_task *task, void *pslot)
{ … }
static bool __nfs41_wake_and_assign_slot(struct nfs4_slot_table *tbl,
struct nfs4_slot *slot)
{ … }
bool nfs41_wake_and_assign_slot(struct nfs4_slot_table *tbl,
struct nfs4_slot *slot)
{ … }
static bool nfs41_try_wake_next_slot_table_entry(struct nfs4_slot_table *tbl)
{ … }
void nfs41_wake_slot_table(struct nfs4_slot_table *tbl)
{ … }
#if defined(CONFIG_NFS_V4_1)
static void nfs41_set_max_slotid_locked(struct nfs4_slot_table *tbl,
u32 target_highest_slotid)
{ … }
static void nfs41_set_target_slotid_locked(struct nfs4_slot_table *tbl,
u32 target_highest_slotid)
{ … }
void nfs41_set_target_slotid(struct nfs4_slot_table *tbl,
u32 target_highest_slotid)
{ … }
static void nfs41_set_server_slotid_locked(struct nfs4_slot_table *tbl,
u32 highest_slotid)
{ … }
static s32 nfs41_derivative_target_slotid(s32 s1, s32 s2)
{ … }
static int nfs41_sign_s32(s32 s1)
{ … }
static bool nfs41_same_sign_or_zero_s32(s32 s1, s32 s2)
{ … }
static bool nfs41_is_outlier_target_slotid(struct nfs4_slot_table *tbl,
u32 new_target)
{ … }
void nfs41_update_target_slotid(struct nfs4_slot_table *tbl,
struct nfs4_slot *slot,
struct nfs4_sequence_res *res)
{ … }
static void nfs4_release_session_slot_tables(struct nfs4_session *session)
{ … }
int nfs4_setup_session_slot_tables(struct nfs4_session *ses)
{ … }
struct nfs4_session *nfs4_alloc_session(struct nfs_client *clp)
{ … }
static void nfs4_destroy_session_slot_tables(struct nfs4_session *session)
{ … }
void nfs4_destroy_session(struct nfs4_session *session)
{ … }
static int nfs41_check_session_ready(struct nfs_client *clp)
{ … }
int nfs4_init_session(struct nfs_client *clp)
{ … }
int nfs4_init_ds_session(struct nfs_client *clp, unsigned long lease_time)
{ … }
EXPORT_SYMBOL_GPL(…);
#endif