mds_extN_fs_ops.cl_delete_inode(inode);
}
-static void mds_extN_callback_status(void *jcb, int error)
+static void mds_extN_callback_status(struct journal_callback *jcb, int error)
{
struct mds_cb_data *mcb = (struct mds_cb_data *)jcb;
CDEBUG(D_EXT2, "set callback for last_rcvd: %Ld\n",
(unsigned long long)mcb->cb_last_rcvd);
journal_callback_set(handle, mds_extN_callback_status,
- (void *)mcb);
+ (struct journal_callback *)mcb);
#else
#warning "no journal callback kernel patch, faking it..."
{
current->journal_info = handle;
err = try_start_this_handle(journal, handle);
-@@ -1328,6 +1337,29 @@
+@@ -1328,6 +1337,28 @@
#endif
/*
+ * allocated struct must start with a struct journal_callback at offset 0,
+ * and has the caller-specific data afterwards.
+ */
-+void journal_callback_set(handle_t *handle, void (*func)(void *, int),
-+ void *cb_data)
++void journal_callback_set(handle_t *handle,
++ void (*func)(struct journal_callback *jcb, int error),
++ struct journal_callback *jcb)
+{
-+ struct journal_callback *jcb = cb_data;
-+
+ list_add(&jcb->jcb_list, &handle->h_jcb);
+ jcb->jcb_func = func;
+}
+#define HAVE_JOURNAL_CALLBACK_STATUS
+struct journal_callback {
+ struct list_head jcb_list;
-+ void (*jcb_func)(void *cb_data, int error);
++ void (*jcb_func)(struct journal_callback *jcb, int error);
+ /* user data goes here */
+};
+
extern int journal_try_to_free_buffers(journal_t *, struct page *, int);
extern int journal_stop(handle_t *);
extern int journal_flush (journal_t *);
-+extern void journal_callback_set(handle_t *handle, void (*fn)(void *, int),
-+ void *cb_data);
++extern void journal_callback_set(handle_t *handle,
++ void (*fn)(struct journal_callback *,int),
++ struct journal_callback *jcb);
extern void journal_lock_updates (journal_t *);
extern void journal_unlock_updates (journal_t *);