SLUB Debug: fix check for super sized slabs (>512k 64bit, >256k 32bit)
[safe/jmp/linux-2.6] / include / linux / sunrpc / clnt.h
index 65196b0..6661142 100644 (file)
@@ -40,6 +40,7 @@ struct rpc_clnt {
 
        unsigned int            cl_softrtry : 1,/* soft timeouts */
                                cl_intr     : 1,/* interruptible */
+                               cl_discrtry : 1,/* disconnect before retry */
                                cl_autobind : 1,/* use getport() */
                                cl_oneshot  : 1,/* dispose after use */
                                cl_dead     : 1;/* abandoned */
@@ -53,6 +54,7 @@ struct rpc_clnt {
        struct dentry *         cl_dentry;      /* inode */
        struct rpc_clnt *       cl_parent;      /* Points to parent of clones */
        struct rpc_rtt          cl_rtt_default;
+       struct rpc_program *    cl_program;
        char                    cl_inline_name[32];
 };
 
@@ -82,32 +84,46 @@ struct rpc_procinfo {
        u32                     p_proc;         /* RPC procedure number */
        kxdrproc_t              p_encode;       /* XDR encode function */
        kxdrproc_t              p_decode;       /* XDR decode function */
-       unsigned int            p_bufsiz;       /* req. buffer size */
+       unsigned int            p_arglen;       /* argument hdr length (u32) */
+       unsigned int            p_replen;       /* reply hdr length (u32) */
        unsigned int            p_count;        /* call count */
        unsigned int            p_timer;        /* Which RTT timer to use */
        u32                     p_statidx;      /* Which procedure to account */
        char *                  p_name;         /* name of procedure */
 };
 
-#define RPC_CONGESTED(clnt)    (RPCXPRT_CONGESTED((clnt)->cl_xprt))
-#define RPC_PEERADDR(clnt)     (&(clnt)->cl_xprt->addr)
-
 #ifdef __KERNEL__
 
-struct rpc_clnt *rpc_create_client(struct rpc_xprt *xprt, char *servname,
-                               struct rpc_program *info,
-                               u32 version, rpc_authflavor_t authflavor);
-struct rpc_clnt *rpc_new_client(struct rpc_xprt *xprt, char *servname,
-                               struct rpc_program *info,
-                               u32 version, rpc_authflavor_t authflavor);
+struct rpc_create_args {
+       int                     protocol;
+       struct sockaddr         *address;
+       size_t                  addrsize;
+       struct rpc_timeout      *timeout;
+       char                    *servername;
+       struct rpc_program      *program;
+       u32                     version;
+       rpc_authflavor_t        authflavor;
+       unsigned long           flags;
+};
+
+/* Values for "flags" field */
+#define RPC_CLNT_CREATE_HARDRTRY       (1UL << 0)
+#define RPC_CLNT_CREATE_INTR           (1UL << 1)
+#define RPC_CLNT_CREATE_AUTOBIND       (1UL << 2)
+#define RPC_CLNT_CREATE_ONESHOT                (1UL << 3)
+#define RPC_CLNT_CREATE_NONPRIVPORT    (1UL << 4)
+#define RPC_CLNT_CREATE_NOPING         (1UL << 5)
+#define RPC_CLNT_CREATE_DISCRTRY       (1UL << 6)
+
+struct rpc_clnt *rpc_create(struct rpc_create_args *args);
 struct rpc_clnt        *rpc_bind_new_program(struct rpc_clnt *,
                                struct rpc_program *, int);
 struct rpc_clnt *rpc_clone_client(struct rpc_clnt *);
 int            rpc_shutdown_client(struct rpc_clnt *);
 int            rpc_destroy_client(struct rpc_clnt *);
 void           rpc_release_client(struct rpc_clnt *);
-void           rpc_getport(struct rpc_task *);
-int            rpc_register(u32, u32, int, unsigned short, int *);
+int            rpcb_register(u32, u32, int, unsigned short, int *);
+void           rpcb_getport(struct rpc_task *);
 
 void           rpc_call_setup(struct rpc_task *, struct rpc_message *, int);
 
@@ -124,11 +140,12 @@ size_t            rpc_max_payload(struct rpc_clnt *);
 void           rpc_force_rebind(struct rpc_clnt *);
 int            rpc_ping(struct rpc_clnt *clnt, int flags);
 size_t         rpc_peeraddr(struct rpc_clnt *, struct sockaddr *, size_t);
+char *         rpc_peeraddr2str(struct rpc_clnt *, enum rpc_display_format_t);
 
 /*
  * Helper function for NFSroot support
  */
-int            rpc_getport_external(struct sockaddr_in *, __u32, __u32, int);
+int            rpcb_getport_external(struct sockaddr_in *, __u32, __u32, int);
 
 #endif /* __KERNEL__ */
 #endif /* _LINUX_SUNRPC_CLNT_H */