Merge branch 'for-2.6.29' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.29' of git://linux-nfs.org/~bfields/linux: (67 commits) nfsd: get rid of NFSD_VERSION nfsd: last_byte_offset nfsd: delete wrong file comment from nfsd/nfs4xdr.c nfsd: git rid of nfs4_cb_null_ops declaration nfsd: dprint each op status in nfsd4_proc_compound nfsd: add etoosmall to nfserrno NFSD: FIDs need to take precedence over UUIDs SUNRPC: The sunrpc server code should not be used by out-of-tree modules svc: Clean up deferred requests on transport destruction nfsd: fix double-locks of directory mutex svc: Move kfree of deferral record to common code CRED: Fix NFSD regression NLM: Clean up flow of control in make_socks() function NLM: Refactor make_socks() function nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT SUNRPC: Ensure the server closes sockets in a timely fashion NFSD: Add documenting comments for nfsctl interface NFSD: Replace open-coded integer with macro NFSD: Fix a handful of coding style issues in write_filehandle() NFSD: clean up failover sysctl function naming ...
This commit is contained in:
commit
713404d608
33 changed files with 1225 additions and 572 deletions
|
|
@ -43,8 +43,8 @@ struct nlm_host {
|
|||
struct sockaddr_storage h_addr; /* peer address */
|
||||
size_t h_addrlen;
|
||||
struct sockaddr_storage h_srcaddr; /* our address (optional) */
|
||||
struct rpc_clnt * h_rpcclnt; /* RPC client to talk to peer */
|
||||
char * h_name; /* remote hostname */
|
||||
struct rpc_clnt *h_rpcclnt; /* RPC client to talk to peer */
|
||||
char *h_name; /* remote hostname */
|
||||
u32 h_version; /* interface version */
|
||||
unsigned short h_proto; /* transport proto */
|
||||
unsigned short h_reclaiming : 1,
|
||||
|
|
@ -64,21 +64,29 @@ struct nlm_host {
|
|||
spinlock_t h_lock;
|
||||
struct list_head h_granted; /* Locks in GRANTED state */
|
||||
struct list_head h_reclaim; /* Locks in RECLAIM state */
|
||||
struct nsm_handle * h_nsmhandle; /* NSM status handle */
|
||||
|
||||
char h_addrbuf[48], /* address eyecatchers */
|
||||
h_srcaddrbuf[48];
|
||||
struct nsm_handle *h_nsmhandle; /* NSM status handle */
|
||||
char *h_addrbuf; /* address eyecatcher */
|
||||
};
|
||||
|
||||
/*
|
||||
* The largest string sm_addrbuf should hold is a full-size IPv6 address
|
||||
* (no "::" anywhere) with a scope ID. The buffer size is computed to
|
||||
* hold eight groups of colon-separated four-hex-digit numbers, a
|
||||
* percent sign, a scope id (at most 32 bits, in decimal), and NUL.
|
||||
*/
|
||||
#define NSM_ADDRBUF ((8 * 4 + 7) + (1 + 10) + 1)
|
||||
|
||||
struct nsm_handle {
|
||||
struct list_head sm_link;
|
||||
atomic_t sm_count;
|
||||
char * sm_name;
|
||||
char *sm_mon_name;
|
||||
char *sm_name;
|
||||
struct sockaddr_storage sm_addr;
|
||||
size_t sm_addrlen;
|
||||
unsigned int sm_monitored : 1,
|
||||
sm_sticky : 1; /* don't unmonitor */
|
||||
char sm_addrbuf[48]; /* address eyecatcher */
|
||||
struct nsm_private sm_priv;
|
||||
char sm_addrbuf[NSM_ADDRBUF];
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -104,16 +112,6 @@ static inline struct sockaddr *nlm_srcaddr(const struct nlm_host *host)
|
|||
return (struct sockaddr *)&host->h_srcaddr;
|
||||
}
|
||||
|
||||
static inline struct sockaddr_in *nsm_addr_in(const struct nsm_handle *handle)
|
||||
{
|
||||
return (struct sockaddr_in *)&handle->sm_addr;
|
||||
}
|
||||
|
||||
static inline struct sockaddr *nsm_addr(const struct nsm_handle *handle)
|
||||
{
|
||||
return (struct sockaddr *)&handle->sm_addr;
|
||||
}
|
||||
|
||||
/*
|
||||
* Map an fl_owner_t into a unique 32-bit "pid"
|
||||
*/
|
||||
|
|
@ -197,6 +195,7 @@ extern struct svc_procedure nlmsvc_procedures4[];
|
|||
extern int nlmsvc_grace_period;
|
||||
extern unsigned long nlmsvc_timeout;
|
||||
extern int nsm_use_hostnames;
|
||||
extern int nsm_local_state;
|
||||
|
||||
/*
|
||||
* Lockd client functions
|
||||
|
|
@ -231,10 +230,20 @@ void nlm_rebind_host(struct nlm_host *);
|
|||
struct nlm_host * nlm_get_host(struct nlm_host *);
|
||||
void nlm_release_host(struct nlm_host *);
|
||||
void nlm_shutdown_hosts(void);
|
||||
extern void nlm_host_rebooted(const struct sockaddr_in *, const char *,
|
||||
unsigned int, u32);
|
||||
void nsm_release(struct nsm_handle *);
|
||||
void nlm_host_rebooted(const struct nlm_reboot *);
|
||||
|
||||
/*
|
||||
* Host monitoring
|
||||
*/
|
||||
int nsm_monitor(const struct nlm_host *host);
|
||||
void nsm_unmonitor(const struct nlm_host *host);
|
||||
|
||||
struct nsm_handle *nsm_get_handle(const struct sockaddr *sap,
|
||||
const size_t salen,
|
||||
const char *hostname,
|
||||
const size_t hostname_len);
|
||||
struct nsm_handle *nsm_reboot_lookup(const struct nlm_reboot *info);
|
||||
void nsm_release(struct nsm_handle *nsm);
|
||||
|
||||
/*
|
||||
* This is used in garbage collection and resource reclaim
|
||||
|
|
@ -282,16 +291,25 @@ static inline struct inode *nlmsvc_file_inode(struct nlm_file *file)
|
|||
static inline int __nlm_privileged_request4(const struct sockaddr *sap)
|
||||
{
|
||||
const struct sockaddr_in *sin = (struct sockaddr_in *)sap;
|
||||
return (sin->sin_addr.s_addr == htonl(INADDR_LOOPBACK)) &&
|
||||
(ntohs(sin->sin_port) < 1024);
|
||||
|
||||
if (ntohs(sin->sin_port) > 1023)
|
||||
return 0;
|
||||
|
||||
return ipv4_is_loopback(sin->sin_addr.s_addr);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
|
||||
static inline int __nlm_privileged_request6(const struct sockaddr *sap)
|
||||
{
|
||||
const struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)sap;
|
||||
return (ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LOOPBACK) &&
|
||||
(ntohs(sin6->sin6_port) < 1024);
|
||||
|
||||
if (ntohs(sin6->sin6_port) > 1023)
|
||||
return 0;
|
||||
|
||||
if (ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_MAPPED)
|
||||
return ipv4_is_loopback(sin6->sin6_addr.s6_addr32[3]);
|
||||
|
||||
return ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LOOPBACK;
|
||||
}
|
||||
#else /* defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) */
|
||||
static inline int __nlm_privileged_request6(const struct sockaddr *sap)
|
||||
|
|
|
|||
|
|
@ -1,48 +0,0 @@
|
|||
/*
|
||||
* linux/include/linux/lockd/sm_inter.h
|
||||
*
|
||||
* Declarations for the kernel statd client.
|
||||
*
|
||||
* Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de>
|
||||
*/
|
||||
|
||||
#ifndef LINUX_LOCKD_SM_INTER_H
|
||||
#define LINUX_LOCKD_SM_INTER_H
|
||||
|
||||
#define SM_PROGRAM 100024
|
||||
#define SM_VERSION 1
|
||||
#define SM_STAT 1
|
||||
#define SM_MON 2
|
||||
#define SM_UNMON 3
|
||||
#define SM_UNMON_ALL 4
|
||||
#define SM_SIMU_CRASH 5
|
||||
#define SM_NOTIFY 6
|
||||
|
||||
#define SM_MAXSTRLEN 1024
|
||||
#define SM_PRIV_SIZE 16
|
||||
|
||||
/*
|
||||
* Arguments for all calls to statd
|
||||
*/
|
||||
struct nsm_args {
|
||||
__be32 addr; /* remote address */
|
||||
u32 prog; /* RPC callback info */
|
||||
u32 vers;
|
||||
u32 proc;
|
||||
|
||||
char * mon_name;
|
||||
};
|
||||
|
||||
/*
|
||||
* Result returned by statd
|
||||
*/
|
||||
struct nsm_res {
|
||||
u32 status;
|
||||
u32 state;
|
||||
};
|
||||
|
||||
int nsm_monitor(struct nlm_host *);
|
||||
int nsm_unmonitor(struct nlm_host *);
|
||||
extern int nsm_local_state;
|
||||
|
||||
#endif /* LINUX_LOCKD_SM_INTER_H */
|
||||
|
|
@ -13,6 +13,13 @@
|
|||
#include <linux/nfs.h>
|
||||
#include <linux/sunrpc/xdr.h>
|
||||
|
||||
#define SM_MAXSTRLEN 1024
|
||||
#define SM_PRIV_SIZE 16
|
||||
|
||||
struct nsm_private {
|
||||
unsigned char data[SM_PRIV_SIZE];
|
||||
};
|
||||
|
||||
struct svc_rqst;
|
||||
|
||||
#define NLM_MAXCOOKIELEN 32
|
||||
|
|
@ -77,10 +84,10 @@ struct nlm_res {
|
|||
* statd callback when client has rebooted
|
||||
*/
|
||||
struct nlm_reboot {
|
||||
char * mon;
|
||||
unsigned int len;
|
||||
u32 state;
|
||||
__be32 addr;
|
||||
char *mon;
|
||||
unsigned int len;
|
||||
u32 state;
|
||||
struct nsm_private priv;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -88,6 +88,8 @@
|
|||
#define NFS4_ACE_GENERIC_EXECUTE 0x001200A0
|
||||
#define NFS4_ACE_MASK_ALL 0x001F01FF
|
||||
|
||||
#define NFS4_MAX_UINT64 (~(u64)0)
|
||||
|
||||
enum nfs4_acl_whotype {
|
||||
NFS4_ACL_WHO_NAMED = 0,
|
||||
NFS4_ACL_WHO_OWNER,
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
/*
|
||||
* nfsd version
|
||||
*/
|
||||
#define NFSD_VERSION "0.5"
|
||||
#define NFSD_SUPPORTED_MINOR_VERSION 0
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -68,6 +68,10 @@ struct nfs_fhbase_old {
|
|||
* 1 - 4 byte user specified identifier
|
||||
* 2 - 4 byte major, 4 byte minor, 4 byte inode number - DEPRECATED
|
||||
* 3 - 4 byte device id, encoded for user-space, 4 byte inode number
|
||||
* 4 - 4 byte inode number and 4 byte uuid
|
||||
* 5 - 8 byte uuid
|
||||
* 6 - 16 byte uuid
|
||||
* 7 - 8 byte inode number and 16 byte uuid
|
||||
*
|
||||
* The fileid_type identified how the file within the filesystem is encoded.
|
||||
* This is (will be) passed to, and set by, the underlying filesystem if it supports
|
||||
|
|
|
|||
|
|
@ -58,10 +58,13 @@ struct svc_serv {
|
|||
struct svc_stat * sv_stats; /* RPC statistics */
|
||||
spinlock_t sv_lock;
|
||||
unsigned int sv_nrthreads; /* # of server threads */
|
||||
unsigned int sv_maxconn; /* max connections allowed or
|
||||
* '0' causing max to be based
|
||||
* on number of threads. */
|
||||
|
||||
unsigned int sv_max_payload; /* datagram payload size */
|
||||
unsigned int sv_max_mesg; /* max_payload + 1 page for overheads */
|
||||
unsigned int sv_xdrsize; /* XDR buffer size */
|
||||
|
||||
struct list_head sv_permsocks; /* all permanent sockets */
|
||||
struct list_head sv_tempsocks; /* all temporary sockets */
|
||||
int sv_tmpcnt; /* count of temporary sockets */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue