📄 lustre_net.h
字号:
{ int rc; spin_lock(&desc->bd_lock); rc = desc->bd_network_rw; spin_unlock(&desc->bd_lock); return (rc);}#define PTLRPC_REPLY_MAYBE_DIFFICULT 0x01#define PTLRPC_REPLY_EARLY 0x02int ptlrpc_send_reply(struct ptlrpc_request *req, int flags);int ptlrpc_reply(struct ptlrpc_request *req);int ptlrpc_error(struct ptlrpc_request *req);void ptlrpc_resend_req(struct ptlrpc_request *request);int ptlrpc_at_get_net_latency(struct ptlrpc_request *req);int ptl_send_rpc(struct ptlrpc_request *request, int noreply);int ptlrpc_register_rqbd (struct ptlrpc_request_buffer_desc *rqbd);/* ptlrpc/client.c */void ptlrpc_init_client(int req_portal, int rep_portal, char *name, struct ptlrpc_client *);void ptlrpc_cleanup_client(struct obd_import *imp);struct ptlrpc_connection *ptlrpc_uuid_to_connection(struct obd_uuid *uuid);static inline intptlrpc_client_recv_or_unlink (struct ptlrpc_request *req){ int rc; spin_lock(&req->rq_lock); rc = req->rq_receiving_reply || req->rq_must_unlink; spin_unlock(&req->rq_lock); return (rc);}static inline voidptlrpc_wake_client_req (struct ptlrpc_request *req){ if (req->rq_set == NULL) cfs_waitq_signal(&req->rq_reply_waitq); else cfs_waitq_signal(&req->rq_set->set_waitq);}int ptlrpc_queue_wait(struct ptlrpc_request *req);int ptlrpc_replay_req(struct ptlrpc_request *req);void ptlrpc_unregister_reply(struct ptlrpc_request *req);void ptlrpc_restart_req(struct ptlrpc_request *req);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 *);int ptlrpc_expired_set(void *data);void ptlrpc_interrupted_set(void *data);void ptlrpc_mark_interrupted(struct ptlrpc_request *req);void ptlrpc_set_destroy(struct ptlrpc_request_set *);void ptlrpc_set_add_req(struct ptlrpc_request_set *, struct ptlrpc_request *);void ptlrpc_set_add_new_req(struct ptlrpc_request_set *, struct ptlrpc_request *);void ptlrpc_free_rq_pool(struct ptlrpc_request_pool *pool);void ptlrpc_add_rqs_to_pool(struct ptlrpc_request_pool *pool, int num_rq);struct ptlrpc_request_pool *ptlrpc_init_rq_pool(int, int, void (*populate_pool)(struct ptlrpc_request_pool *, int));void ptlrpc_at_set_req_timeout(struct ptlrpc_request *req);struct ptlrpc_request *ptlrpc_prep_req(struct obd_import *imp, __u32 version, int opcode, int count, int *lengths, char **bufs);struct ptlrpc_request *ptlrpc_prep_req_pool(struct obd_import *imp, __u32 version, int opcode, int count, int *lengths, char **bufs, struct ptlrpc_request_pool *pool);void ptlrpc_free_req(struct ptlrpc_request *request);void ptlrpc_req_finished(struct ptlrpc_request *request);void ptlrpc_req_finished_with_imp_lock(struct ptlrpc_request *request);struct ptlrpc_request *ptlrpc_request_addref(struct ptlrpc_request *req);struct ptlrpc_bulk_desc *ptlrpc_prep_bulk_imp (struct ptlrpc_request *req, int npages, int type, int portal);struct ptlrpc_bulk_desc *ptlrpc_prep_bulk_exp(struct ptlrpc_request *req, int npages, int type, int portal);void ptlrpc_free_bulk(struct ptlrpc_bulk_desc *bulk);void ptlrpc_prep_bulk_page(struct ptlrpc_bulk_desc *desc, cfs_page_t *page, int pageoffset, int len);void ptlrpc_retain_replayable_request(struct ptlrpc_request *req, struct obd_import *imp);__u64 ptlrpc_next_xid(void);__u64 ptlrpc_sample_next_xid(void);__u64 ptlrpc_req_xid(struct ptlrpc_request *request);/* ptlrpc/service.c */void ptlrpc_save_lock (struct ptlrpc_request *req, struct lustre_handle *lock, int mode);void ptlrpc_commit_replies (struct obd_device *obd);void ptlrpc_schedule_difficult_reply (struct ptlrpc_reply_state *rs);struct ptlrpc_service *ptlrpc_init_svc(int nbufs, int bufsize, int max_req_size, int max_reply_size, int req_portal, int rep_portal, int watchdog_factor, svc_handler_t, char *name, cfs_proc_dir_entry_t *proc_entry, svcreq_printfn_t, int min_threads, int max_threads, char *threadname);void ptlrpc_stop_all_threads(struct ptlrpc_service *svc);int ptlrpc_start_threads(struct obd_device *dev, struct ptlrpc_service *svc);int ptlrpc_start_thread(struct obd_device *dev, struct ptlrpc_service *svc);int ptlrpc_unregister_service(struct ptlrpc_service *service);int liblustre_check_services (void *arg);void ptlrpc_daemonize(char *name);int ptlrpc_service_health_check(struct ptlrpc_service *);struct ptlrpc_svc_data { char *name; struct ptlrpc_service *svc; struct ptlrpc_thread *thread; struct obd_device *dev;};/* ptlrpc/import.c */int ptlrpc_connect_import(struct obd_import *imp, char * new_uuid);int ptlrpc_init_import(struct obd_import *imp);int ptlrpc_disconnect_import(struct obd_import *imp, int noclose);int ptlrpc_import_recovery_state_machine(struct obd_import *imp);void ptlrpc_import_setasync(struct obd_import *imp, int count);int ptlrpc_reconnect_import(struct obd_import *imp);/* ptlrpc/pack_generic.c */int lustre_msg_swabbed(struct lustre_msg *msg);int lustre_msg_check_version(struct lustre_msg *msg, __u32 version);int lustre_pack_request(struct ptlrpc_request *, __u32 magic, int count, int *lens, char **bufs);int lustre_pack_reply(struct ptlrpc_request *, int count, int *lens, char **bufs);#define LPRFL_EARLY_REPLY 1int lustre_pack_reply_flags(struct ptlrpc_request *, int count, int *lens, char **bufs, int flags);void lustre_shrink_reply(struct ptlrpc_request *req, int segment, unsigned int newlen, int move_data);void lustre_free_reply_state(struct ptlrpc_reply_state *rs);int lustre_msg_size(__u32 magic, int count, int *lengths);int lustre_packed_msg_size(struct lustre_msg *msg);int lustre_msg_early_size(void);int lustre_unpack_msg(struct lustre_msg *m, int len);void *lustre_msg_buf(struct lustre_msg *m, int n, int minlen);int lustre_msg_buflen(struct lustre_msg *m, int n);void lustre_msg_set_buflen(struct lustre_msg *m, int n, int len);int lustre_msg_bufcount(struct lustre_msg *m);char *lustre_msg_string (struct lustre_msg *m, int n, int max_len);void *lustre_swab_buf(struct lustre_msg *, int n, int minlen, void *swabber);void *lustre_swab_reqbuf(struct ptlrpc_request *req, int n, int minlen, void *swabber);void *lustre_swab_repbuf(struct ptlrpc_request *req, int n, int minlen, void *swabber);__u32 lustre_msghdr_get_flags(struct lustre_msg *msg);void lustre_msghdr_set_flags(struct lustre_msg *msg, __u32 flags);__u32 lustre_msg_get_flags(struct lustre_msg *msg);void lustre_msg_add_flags(struct lustre_msg *msg, int flags);void lustre_msg_set_flags(struct lustre_msg *msg, int flags);void lustre_msg_clear_flags(struct lustre_msg *msg, int flags);__u32 lustre_msg_get_op_flags(struct lustre_msg *msg);void lustre_msg_add_op_flags(struct lustre_msg *msg, int flags);void lustre_msg_set_op_flags(struct lustre_msg *msg, int flags);struct lustre_handle *lustre_msg_get_handle(struct lustre_msg *msg);__u32 lustre_msg_get_type(struct lustre_msg *msg);__u32 lustre_msg_get_version(struct lustre_msg *msg);void lustre_msg_add_version(struct lustre_msg *msg, int version);__u32 lustre_msg_get_opc(struct lustre_msg *msg);__u64 lustre_msg_get_last_xid(struct lustre_msg *msg);__u64 lustre_msg_get_last_committed(struct lustre_msg *msg);__u64 lustre_msg_get_transno(struct lustre_msg *msg);__u64 lustre_msg_get_slv(struct lustre_msg *msg);__u32 lustre_msg_get_limit(struct lustre_msg *msg);void lustre_msg_set_slv(struct lustre_msg *msg, __u64 slv);void lustre_msg_set_limit(struct lustre_msg *msg, __u64 limit);int lustre_msg_get_status(struct lustre_msg *msg);__u32 lustre_msg_get_conn_cnt(struct lustre_msg *msg);int lustre_msg_is_v1(struct lustre_msg *msg);__u32 lustre_msg_get_magic(struct lustre_msg *msg);__u32 lustre_msg_get_timeout(struct lustre_msg *msg);__u32 lustre_msg_get_service_time(struct lustre_msg *msg);__u32 lustre_msg_get_cksum(struct lustre_msg *msg);__u32 lustre_msg_calc_cksum(struct lustre_msg *msg);void lustre_msg_set_handle(struct lustre_msg *msg,struct lustre_handle *handle);void lustre_msg_set_type(struct lustre_msg *msg, __u32 type);void lustre_msg_set_opc(struct lustre_msg *msg, __u32 opc);void lustre_msg_set_last_xid(struct lustre_msg *msg, __u64 last_xid);void lustre_msg_set_last_committed(struct lustre_msg *msg,__u64 last_committed);void lustre_msg_set_transno(struct lustre_msg *msg, __u64 transno);void lustre_msg_set_status(struct lustre_msg *msg, __u32 status);void lustre_msg_set_conn_cnt(struct lustre_msg *msg, __u32 conn_cnt);void lustre_msg_set_timeout(struct lustre_msg *msg, __u32 timeout);void lustre_msg_set_service_time(struct lustre_msg *msg, __u32 service_time);void lustre_msg_set_cksum(struct lustre_msg *msg, __u32 cksum);static inline voidptlrpc_rs_addref(struct ptlrpc_reply_state *rs){ LASSERT(atomic_read(&rs->rs_refcount) > 0); atomic_inc(&rs->rs_refcount);}static inline voidptlrpc_rs_decref(struct ptlrpc_reply_state *rs){ LASSERT(atomic_read(&rs->rs_refcount) > 0); if (atomic_dec_and_test(&rs->rs_refcount)) lustre_free_reply_state(rs);}/* Should only be called once per req */static inline void ptlrpc_req_drop_rs(struct ptlrpc_request *req){ if (req->rq_reply_state == NULL) return; /* shouldn't occur */ ptlrpc_rs_decref(req->rq_reply_state); req->rq_reply_state = NULL; req->rq_repmsg = NULL;}static inline __u32 lustre_request_magic(struct ptlrpc_request *req){ return lustre_msg_get_magic(req->rq_reqmsg);}static inline int ptlrpc_req_get_repsize(struct ptlrpc_request *req){ switch (req->rq_reqmsg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: CERROR("function not supported for lustre_msg V1!\n"); return -ENOTSUPP; case LUSTRE_MSG_MAGIC_V2: return req->rq_reqmsg->lm_repsize; default: LASSERTF(0, "incorrect message magic: %08x\n", req->rq_reqmsg->lm_magic); return -EFAULT; }}static inline voidptlrpc_req_set_repsize(struct ptlrpc_request *req, int count, int *lens){ int size = lustre_msg_size(req->rq_reqmsg->lm_magic, count, lens); req->rq_replen = size + lustre_msg_early_size(); if (req->rq_reqmsg->lm_magic == LUSTRE_MSG_MAGIC_V2) req->rq_reqmsg->lm_repsize = size;}/* ldlm/ldlm_lib.c */int client_obd_setup(struct obd_device *obddev, obd_count len, void *buf);int client_obd_cleanup(struct obd_device * obddev);int client_connect_import(struct lustre_handle *conn, struct obd_device *obd, struct obd_uuid *cluuid, struct obd_connect_data *, void *localdata);int client_disconnect_export(struct obd_export *exp);int client_import_add_conn(struct obd_import *imp, struct obd_uuid *uuid, int priority);int client_import_del_conn(struct obd_import *imp, struct obd_uuid *uuid);int import_set_conn_priority(struct obd_import *imp, struct obd_uuid *uuid);/* ptlrpc/pinger.c */int ptlrpc_pinger_add_import(struct obd_import *imp);int ptlrpc_pinger_del_import(struct obd_import *imp);#ifdef __KERNEL__void ping_evictor_start(void);void ping_evictor_stop(void);#else#define ping_evictor_start() do {} while (0)#define ping_evictor_stop() do {} while (0)#endif/* ptlrpc/ptlrpcd.c */void ptlrpcd_wake(struct ptlrpc_request *req);void ptlrpcd_add_req(struct ptlrpc_request *req);int ptlrpcd_addref(void);void ptlrpcd_decref(void);/* ptlrpc/lproc_ptlrpc.c */const char* ll_opcode2str(__u32 opcode);#ifdef LPROCFSvoid ptlrpc_lprocfs_register_obd(struct obd_device *obd);void ptlrpc_lprocfs_unregister_obd(struct obd_device *obd);void ptlrpc_lprocfs_brw(struct ptlrpc_request *req, int opc, int bytes);#elsestatic inline void ptlrpc_lprocfs_register_obd(struct obd_device *obd) {}static inline void ptlrpc_lprocfs_unregister_obd(struct obd_device *obd) {}static inline void ptlrpc_lprocfs_brw(struct ptlrpc_request *req, int opc, int bytes) {}#endif/* ptlrpc/llog_server.c */int llog_origin_handle_create(struct ptlrpc_request *req);int llog_origin_handle_destroy(struct ptlrpc_request *req);int llog_origin_handle_prev_block(struct ptlrpc_request *req);int llog_origin_handle_next_block(struct ptlrpc_request *req);int llog_origin_handle_read_header(struct ptlrpc_request *req);int llog_origin_handle_close(struct ptlrpc_request *req);int llog_origin_handle_cancel(struct ptlrpc_request *req);int llog_catinfo(struct ptlrpc_request *req);/* ptlrpc/llog_client.c */extern struct llog_operations llog_client_ops;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -