return 0;
}
-#define DLM_RECO_STATE_ACTIVE 0x0001
-#define DLM_RECO_STATE_FINALIZE 0x0002
+#define DLM_RECO_STATE_ACTIVE 0x0001
struct dlm_recovery_ctxt
{
struct list_head master_list;
struct list_head mle_hb_events;
- struct proc_dir_entry *dlm_proc;
-
/* these give a really vague idea of the system load */
atomic_t local_resources;
atomic_t remote_resources;
struct o2hb_callback_func dlm_hb_down;
struct task_struct *dlm_thread_task;
struct task_struct *dlm_reco_thread_task;
- struct workqueue_struct *dlm_worker;
wait_queue_head_t dlm_thread_wq;
wait_queue_head_t dlm_reco_thread_wq;
wait_queue_head_t ast_wq;
struct hlist_node hash_node;
struct kref refs;
- /*
- * Please keep granted, converting, and blocked in this order,
- * as some funcs want to iterate over all lists.
- *
- * All four lists are protected by the hash's reference.
- */
+ /* please keep these next 3 in this order
+ * some funcs want to iterate over all lists */
struct list_head granted;
struct list_head converting;
struct list_head blocked;
- struct list_head purge;
- /*
- * These two lists require you to hold an additional reference
- * while they are on the list.
- */
struct list_head dirty;
struct list_head recovering; // dlm_recovery_ctxt.resources list
/* unused lock resources have their last_used stamped and are
* put on a list for the dlm thread to run. */
+ struct list_head purge;
unsigned long last_used;
unsigned migration_pending:1;
DLM_BLOCKED_LIST
};
-static inline int dlm_lvb_is_empty(char *lvb)
-{
- int i;
- for (i=0; i<DLM_LVB_LEN; i++)
- if (lvb[i])
- return 0;
- return 1;
-}
-
static inline struct list_head *
dlm_list_idx_to_ptr(struct dlm_lock_resource *res, enum dlm_lockres_list idx)
{
{
u8 node_idx;
u8 dead_node;
- u8 flags;
- u8 pad1;
+ __be16 pad1;
__be32 pad2;
};
void dlm_lock_get(struct dlm_lock *lock);
void dlm_lock_put(struct dlm_lock *lock);
-void dlm_lock_detach_lockres(struct dlm_lock *lock);
void dlm_lock_attach_lockres(struct dlm_lock *lock,
struct dlm_lock_resource *res);
void dlm_commit_pending_unlock(struct dlm_lock_resource *res,
struct dlm_lock *lock);
-void dlm_shuffle_lists(struct dlm_ctxt *dlm,
- struct dlm_lock_resource *res);
int dlm_launch_thread(struct dlm_ctxt *dlm);
void dlm_complete_thread(struct dlm_ctxt *dlm);
-void dlm_flush_asts(struct dlm_ctxt *dlm);
-int dlm_flush_lockres_asts(struct dlm_ctxt *dlm, struct dlm_lock_resource *res);
int dlm_launch_recovery_thread(struct dlm_ctxt *dlm);
void dlm_complete_recovery_thread(struct dlm_ctxt *dlm);
void dlm_wait_for_recovery(struct dlm_ctxt *dlm);
void dlm_kick_recovery_thread(struct dlm_ctxt *dlm);
int dlm_is_node_dead(struct dlm_ctxt *dlm, u8 node);
int dlm_wait_for_node_death(struct dlm_ctxt *dlm, u8 node, int timeout);
-int dlm_wait_for_node_recovery(struct dlm_ctxt *dlm, u8 node, int timeout);
-void dlm_get(struct dlm_ctxt *dlm);
void dlm_put(struct dlm_ctxt *dlm);
struct dlm_ctxt *dlm_grab(struct dlm_ctxt *dlm);
int dlm_domain_fully_joined(struct dlm_ctxt *dlm);
const char *name,
unsigned int namelen);
-void __dlm_queue_ast(struct dlm_ctxt *dlm, struct dlm_lock *lock);
void dlm_queue_ast(struct dlm_ctxt *dlm, struct dlm_lock *lock);
-void __dlm_queue_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock);
void dlm_queue_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock);
void dlm_do_local_ast(struct dlm_ctxt *dlm,
struct dlm_lock_resource *res,
u8 dlm_nm_this_node(struct dlm_ctxt *dlm);
void dlm_kick_thread(struct dlm_ctxt *dlm, struct dlm_lock_resource *res);
-void __dlm_kick_thread(struct dlm_ctxt *dlm, struct dlm_lock_resource *res);
void __dlm_dirty_lockres(struct dlm_ctxt *dlm, struct dlm_lock_resource *res);
int dlm_nm_init(struct dlm_ctxt *dlm);
int dlm_heartbeat_init(struct dlm_ctxt *dlm);
-void __dlm_hb_node_down(struct dlm_ctxt *dlm, int idx);
void dlm_hb_node_down_cb(struct o2nm_node *node, int idx, void *data);
void dlm_hb_node_up_cb(struct o2nm_node *node, int idx, void *data);
-int dlm_hb_node_dead(struct dlm_ctxt *dlm, int node);
-int __dlm_hb_node_dead(struct dlm_ctxt *dlm, int node);
int dlm_lockres_is_dirty(struct dlm_ctxt *dlm, struct dlm_lock_resource *res);
int dlm_migrate_lockres(struct dlm_ctxt *dlm,
int ignore_higher,
u8 request_from,
u32 flags);
-void dlm_assert_master_worker(struct dlm_work_item *item, void *data);
int dlm_send_one_lockres(struct dlm_ctxt *dlm,
void dlm_move_lockres_to_recovery_list(struct dlm_ctxt *dlm,
struct dlm_lock_resource *res);
-void dlm_init_lockres(struct dlm_ctxt *dlm,
- struct dlm_lock_resource *res,
- const char *name,
- unsigned int namelen);
-
/* will exit holding res->spinlock, but may drop in function */
void __dlm_wait_on_lockres_flags(struct dlm_lock_resource *res, int flags);
void __dlm_wait_on_lockres_flags_set(struct dlm_lock_resource *res, int flags);
int dlm_init_mle_cache(void);
void dlm_destroy_mle_cache(void);
void dlm_hb_event_notify_attached(struct dlm_ctxt *dlm, int idx, int node_up);
-int dlm_do_assert_master(struct dlm_ctxt *dlm,
- const char *lockname,
- unsigned int namelen,
- void *nodemap,
- u32 flags);
-int dlm_do_migrate_request(struct dlm_ctxt *dlm,
- struct dlm_lock_resource *res,
- u8 master,
- u8 new_master,
- struct dlm_node_iter *iter);
void dlm_clean_master_list(struct dlm_ctxt *dlm,
u8 dead_node);
int dlm_lock_basts_flushed(struct dlm_ctxt *dlm, struct dlm_lock *lock);
-int dlm_dump_all_mles(const char __user *data, unsigned int len);
-int __dlm_lockres_unused(struct dlm_lock_resource *res);
-
-
static inline const char * dlm_lock_mode_name(int mode)
{
switch (mode) {