Whamcloud - gitweb
LU-12590 ptlrpc: check lm_bufcount and lm_buflen
[fs/lustre-release.git] / lustre / include / lustre_net.h
index dce8c6e..106a17c 100644 (file)
  */
 #define OST_IO_BUFSIZE         max_t(int, OST_IO_MAXREQSIZE + 1024, 64 * 1024)
 
-
-/* Macro to hide a typecast. */
-#define ptlrpc_req_async_args(req) ((void *)&req->rq_async_args)
+/* Macro to hide a typecast and BUILD_BUG. */
+#define ptlrpc_req_async_args(_var, req) ({                            \
+               BUILD_BUG_ON(sizeof(*_var) > sizeof(req->rq_async_args)); \
+               (typeof(_var))&req->rq_async_args;                      \
+       })
 
 struct ptlrpc_replay_async_args {
        int             praa_old_state;
@@ -543,7 +545,7 @@ struct ptlrpc_client {
         /** What portal do we expect replies on */
         __u32                   cli_reply_portal;
         /** Name of the client */
-        char                   *cli_name;
+       const char              *cli_name;
 };
 
 /** state flags of requests */
@@ -1458,7 +1460,7 @@ struct ptlrpc_bulk_desc {
        struct obd_import *bd_import;
        /** Back pointer to the request */
        struct ptlrpc_request *bd_req;
-       struct ptlrpc_bulk_frag_ops *bd_frag_ops;
+       const struct ptlrpc_bulk_frag_ops *bd_frag_ops;
        wait_queue_head_t      bd_waitq;        /* server side only WQ */
        int                    bd_iov_count;    /* # entries in bd_iov */
        int                    bd_max_iov;      /* allocated size of bd_iov */
@@ -2118,7 +2120,7 @@ int ptlrpc_register_rqbd(struct ptlrpc_request_buffer_desc *rqbd);
  */
 void ptlrpc_request_committed(struct ptlrpc_request *req, int force);
 
-void ptlrpc_init_client(int req_portal, int rep_portal, char *name,
+void ptlrpc_init_client(int req_portal, int rep_portal, const char *name,
                         struct ptlrpc_client *);
 void ptlrpc_cleanup_client(struct obd_import *imp);
 struct ptlrpc_connection *ptlrpc_uuid_to_connection(struct obd_uuid *uuid,
@@ -2177,30 +2179,9 @@ int ptlrpc_prep_bulk_frag(struct ptlrpc_bulk_desc *desc,
 void __ptlrpc_prep_bulk_page(struct ptlrpc_bulk_desc *desc,
                             struct page *page, int pageoffset, int len,
                             int pin);
-static inline void ptlrpc_prep_bulk_page_pin(struct ptlrpc_bulk_desc *desc,
-                                            struct page *page, int pageoffset,
-                                            int len)
-{
-       __ptlrpc_prep_bulk_page(desc, page, pageoffset, len, 1);
-}
-
-static inline void ptlrpc_prep_bulk_page_nopin(struct ptlrpc_bulk_desc *desc,
-                                              struct page *page, int pageoffset,
-                                              int len)
-{
-       __ptlrpc_prep_bulk_page(desc, page, pageoffset, len, 0);
-}
 
 void ptlrpc_free_bulk(struct ptlrpc_bulk_desc *bulk);
 
-static inline void ptlrpc_release_bulk_page_pin(struct ptlrpc_bulk_desc *desc)
-{
-       int i;
-
-       for (i = 0; i < desc->bd_iov_count ; i++)
-               put_page(BD_GET_KIOV(desc, i).kiov_page);
-}
-
 static inline void ptlrpc_release_bulk_noop(struct ptlrpc_bulk_desc *desc)
 {
 }
@@ -2336,6 +2317,12 @@ int ptlrpc_reconnect_import(struct obd_import *imp);
  *
  * @{
  */
+#define PTLRPC_MAX_BUFCOUNT \
+       (sizeof(((struct ptlrpc_request *)0)->rq_req_swab_mask) * 8)
+#define MD_MAX_BUFLEN          (MDS_REG_MAXREQSIZE > OUT_MAXREQSIZE ? \
+                                MDS_REG_MAXREQSIZE : OUT_MAXREQSIZE)
+#define PTLRPC_MAX_BUFLEN      (OST_IO_MAXREQSIZE > MD_MAX_BUFLEN ? \
+                                OST_IO_MAXREQSIZE : MD_MAX_BUFLEN)
 bool ptlrpc_buf_need_swab(struct ptlrpc_request *req, const int inout,
                          __u32 index);
 void ptlrpc_buf_set_swabbed(struct ptlrpc_request *req, const int inout,