1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
8 #define LUSTRE_HA_NAME "ptlrpc"
13 struct ptlrpc_connection;
15 /* rd_phase/rd_next_phase values */
18 #define RD_PREPARING 2
20 #define RD_RECOVERING 4
21 #define RD_RECOVERED 5
24 /* recovd_state values */
25 #define RECOVD_READY 1
26 #define RECOVD_STOPPING 2 /* how cleanup tells recovd to quit */
27 #define RECOVD_STOPPED 4 /* after recovd has stopped */
29 #define PTLRPC_RECOVD_PHASE_PREPARE 1
30 #define PTLRPC_RECOVD_PHASE_RECOVER 2
31 #define PTLRPC_RECOVD_PHASE_FAILURE 3
32 #define PTLRPC_RECOVD_PHASE_NOTCONN 4
34 typedef int (*ptlrpc_recovery_cb_t)(struct recovd_data *, int);
37 /* you must hold recovd->recovd_lock when touching rd_managed_chain */
38 struct list_head rd_managed_chain;
39 ptlrpc_recovery_cb_t rd_recover;
40 struct recovd_obd *rd_recovd;
46 void recovd_conn_fail(struct ptlrpc_connection *conn);
47 void recovd_conn_manage(struct ptlrpc_connection *conn, struct recovd_obd *mgr,
48 ptlrpc_recovery_cb_t recover);
49 void recovd_conn_unmanage(struct ptlrpc_connection *conn);
50 void recovd_conn_fixed(struct ptlrpc_connection *conn);
51 int recovd_setup(struct recovd_obd *mgr);
52 int recovd_cleanup(struct recovd_obd *mgr);
54 extern struct recovd_obd *ptlrpc_recovd;
55 struct ptlrpc_request;
57 int ptlrpc_run_recovery_upcall(struct ptlrpc_connection *conn);
58 int ptlrpc_reconnect_import(struct obd_import *imp, int rq_opc,
59 struct ptlrpc_request **reqptr);
60 int ptlrpc_replay(struct obd_import *imp);
61 int ptlrpc_resend(struct obd_import *imp);
62 void ptlrpc_free_committed(struct obd_import *imp);
63 void ptlrpc_wake_delayed(struct obd_import *imp);