
Pull nfsd updates from Bruce Fields: "This is a relatively quiet cycle for nfsd, mainly various bugfixes. Possibly most interesting is Trond's fixes for some callback races that were due to my incomplete understanding of rpc client shutdown. Unfortunately at the last minute I've started noticing a new intermittent failure to send callbacks. As the logic seems basically correct, I'm leaving Trond's patches in for now, and hope to find a fix in the next week so I don't have to revert those patches" * tag 'nfsd-5.5' of git://linux-nfs.org/~bfields/linux: (24 commits) nfsd: depend on CRYPTO_MD5 for legacy client tracking NFSD fixing possible null pointer derefering in copy offload nfsd: check for EBUSY from vfs_rmdir/vfs_unink. nfsd: Ensure CLONE persists data and metadata changes to the target file SUNRPC: Fix backchannel latency metrics nfsd: restore NFSv3 ACL support nfsd: v4 support requires CRYPTO_SHA256 nfsd: Fix cld_net->cn_tfm initialization lockd: remove __KERNEL__ ifdefs sunrpc: remove __KERNEL__ ifdefs race in exportfs_decode_fh() nfsd: Drop LIST_HEAD where the variable it declares is never used. nfsd: document callback_wq serialization of callback code nfsd: mark cb path down on unknown errors nfsd: Fix races between nfsd4_cb_release() and nfsd4_shutdown_callback() nfsd: minor 4.1 callback cleanup SUNRPC: Fix svcauth_gss_proxy_init() SUNRPC: Trace gssproxy upcall results sunrpc: fix crash when cache_head become valid before update nfsd: remove private bin2hex implementation ...
93 lines
1.7 KiB
C
93 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* linux/include/linux/sunrpc/xprtsock.h
|
|
*
|
|
* Declarations for the RPC transport socket provider.
|
|
*/
|
|
|
|
#ifndef _LINUX_SUNRPC_XPRTSOCK_H
|
|
#define _LINUX_SUNRPC_XPRTSOCK_H
|
|
|
|
int init_socket_xprt(void);
|
|
void cleanup_socket_xprt(void);
|
|
|
|
#define RPC_MIN_RESVPORT (1U)
|
|
#define RPC_MAX_RESVPORT (65535U)
|
|
#define RPC_DEF_MIN_RESVPORT (665U)
|
|
#define RPC_DEF_MAX_RESVPORT (1023U)
|
|
|
|
struct sock_xprt {
|
|
struct rpc_xprt xprt;
|
|
|
|
/*
|
|
* Network layer
|
|
*/
|
|
struct socket * sock;
|
|
struct sock * inet;
|
|
struct file * file;
|
|
|
|
/*
|
|
* State of TCP reply receive
|
|
*/
|
|
struct {
|
|
struct {
|
|
__be32 fraghdr,
|
|
xid,
|
|
calldir;
|
|
} __attribute__((packed));
|
|
|
|
u32 offset,
|
|
len;
|
|
|
|
unsigned long copied;
|
|
} recv;
|
|
|
|
/*
|
|
* State of TCP transmit queue
|
|
*/
|
|
struct {
|
|
u32 offset;
|
|
} xmit;
|
|
|
|
/*
|
|
* Connection of transports
|
|
*/
|
|
unsigned long sock_state;
|
|
struct delayed_work connect_worker;
|
|
struct work_struct error_worker;
|
|
struct work_struct recv_worker;
|
|
struct mutex recv_mutex;
|
|
struct sockaddr_storage srcaddr;
|
|
unsigned short srcport;
|
|
int xprt_err;
|
|
|
|
/*
|
|
* UDP socket buffer size parameters
|
|
*/
|
|
size_t rcvsize,
|
|
sndsize;
|
|
|
|
struct rpc_timeout tcp_timeout;
|
|
|
|
/*
|
|
* Saved socket callback addresses
|
|
*/
|
|
void (*old_data_ready)(struct sock *);
|
|
void (*old_state_change)(struct sock *);
|
|
void (*old_write_space)(struct sock *);
|
|
void (*old_error_report)(struct sock *);
|
|
};
|
|
|
|
/*
|
|
* TCP RPC flags
|
|
*/
|
|
#define XPRT_SOCK_CONNECTING 1U
|
|
#define XPRT_SOCK_DATA_READY (2)
|
|
#define XPRT_SOCK_UPD_TIMEOUT (3)
|
|
#define XPRT_SOCK_WAKE_ERROR (4)
|
|
#define XPRT_SOCK_WAKE_WRITE (5)
|
|
#define XPRT_SOCK_WAKE_PENDING (6)
|
|
#define XPRT_SOCK_WAKE_DISCONNECT (7)
|
|
|
|
#endif /* _LINUX_SUNRPC_XPRTSOCK_H */
|