fs: dlm: use a non-static queue for callbacks
[linux-2.6-microblaze.git] / fs / dlm / ast.h
index e5e05fc..880b118 100644 (file)
 #ifndef __ASTD_DOT_H__
 #define __ASTD_DOT_H__
 
-int dlm_add_lkb_callback(struct dlm_lkb *lkb, uint32_t flags, int mode,
-                         int status, uint32_t sbflags, uint64_t seq);
-int dlm_rem_lkb_callback(struct dlm_ls *ls, struct dlm_lkb *lkb,
-                         struct dlm_callback *cb, int *resid);
+#define DLM_ENQUEUE_CALLBACK_NEED_SCHED        1
+#define DLM_ENQUEUE_CALLBACK_SUCCESS   0
+#define DLM_ENQUEUE_CALLBACK_FAILURE   -1
+int dlm_enqueue_lkb_callback(struct dlm_lkb *lkb, uint32_t flags, int mode,
+                            int status, uint32_t sbflags);
+#define DLM_DEQUEUE_CALLBACK_EMPTY     2
+#define DLM_DEQUEUE_CALLBACK_LAST      1
+#define DLM_DEQUEUE_CALLBACK_SUCCESS   0
+int dlm_dequeue_lkb_callback(struct dlm_lkb *lkb, struct dlm_callback **cb);
 void dlm_add_cb(struct dlm_lkb *lkb, uint32_t flags, int mode, int status,
                 uint32_t sbflags);
+void dlm_callback_set_last_ptr(struct dlm_callback **from,
+                              struct dlm_callback *to);
 
+void dlm_release_callback(struct kref *ref);
+void dlm_purge_lkb_callbacks(struct dlm_lkb *lkb);
 void dlm_callback_work(struct work_struct *work);
 int dlm_callback_start(struct dlm_ls *ls);
 void dlm_callback_stop(struct dlm_ls *ls);