struct ptlrpc_connection {
struct list_head c_link;
+ struct hlist_node c_hash;
lnet_nid_t c_self;
lnet_process_id_t c_peer;
struct obd_uuid c_remote_uuid;
cfs_waitq_t set_waitq;
cfs_waitq_t *set_wakeup_ptr;
struct list_head set_requests;
+ struct list_head set_cblist; /* list of completion callbacks */
set_interpreter_func set_interpret; /* completion callback */
void *set_arg; /* completion context */
- void *set_countp; /* pointer to NOB counter in case
- * of directIO (bug11737) */
/* locked so that any old caller can communicate requests to
* the set holder who can then fold them into the lock-free set */
spinlock_t set_new_req_lock;
struct list_head set_new_requests;
};
+struct ptlrpc_set_cbdata {
+ struct list_head psc_item;
+ set_interpreter_func psc_interpret;
+ void *psc_data;
+};
+
struct ptlrpc_bulk_desc;
/*
lnet_nid_t self, struct obd_uuid *uuid);
int ptlrpc_put_connection(struct ptlrpc_connection *c);
struct ptlrpc_connection *ptlrpc_connection_addref(struct ptlrpc_connection *);
-void ptlrpc_init_connection(void);
+int ptlrpc_init_connection(void);
void ptlrpc_cleanup_connection(void);
extern lnet_pid_t ptl_get_pid(void);
void ptlrpc_abort_inflight(struct obd_import *imp);
struct ptlrpc_request_set *ptlrpc_prep_set(void);
+int ptlrpc_set_add_cb(struct ptlrpc_request_set *set,
+ set_interpreter_func fn, void *data);
int ptlrpc_set_next_timeout(struct ptlrpc_request_set *);
int ptlrpc_check_set(struct ptlrpc_request_set *set);
int ptlrpc_set_wait(struct ptlrpc_request_set *);
void lustre_free_reply_state(struct ptlrpc_reply_state *rs);
int lustre_msg_size(__u32 magic, int count, int *lengths);
int lustre_msg_size_v2(int count, int *lengths);
+int lustre_packed_msg_size(struct lustre_msg *msg);
int lustre_unpack_msg(struct lustre_msg *m, int len);
void *lustre_msg_buf_v1(void *msg, int n, int min_size);
void *lustre_msg_buf_v2(struct lustre_msg_v2 *m, int n, int min_size);