ocfs2: do not modify lksb->status in the unlock ast
[pandora-kernel.git] / fs / jbd / journal.c
index e4b516a..8c9b28d 100644 (file)
 #include <linux/mm.h>
 #include <linux/suspend.h>
 #include <linux/pagemap.h>
+#include <linux/kthread.h>
+#include <linux/poison.h>
+#include <linux/proc_fs.h>
+
 #include <asm/uaccess.h>
 #include <asm/page.h>
-#include <linux/proc_fs.h>
 
 EXPORT_SYMBOL(journal_start);
 EXPORT_SYMBOL(journal_restart);
@@ -111,18 +114,15 @@ static void commit_timeout(unsigned long __data)
 
 static int kjournald(void *arg)
 {
-       journal_t *journal = (journal_t *) arg;
+       journal_t *journal = arg;
        transaction_t *transaction;
-       struct timer_list timer;
 
-       daemonize("kjournald");
-
-       /* Set up an interval timer which can be used to trigger a
-           commit wakeup after the commit interval expires */
-       init_timer(&timer);
-       timer.data = (unsigned long) current;
-       timer.function = commit_timeout;
-       journal->j_commit_timer = &timer;
+       /*
+        * Set up an interval timer which can be used to trigger a commit wakeup
+        * after the commit interval expires
+        */
+       setup_timer(&journal->j_commit_timer, commit_timeout,
+                       (unsigned long)current);
 
        /* Record that the journal thread is running */
        journal->j_task = current;
@@ -146,7 +146,7 @@ loop:
        if (journal->j_commit_sequence != journal->j_commit_request) {
                jbd_debug(1, "OK, requests differ\n");
                spin_unlock(&journal->j_state_lock);
-               del_timer_sync(journal->j_commit_timer);
+               del_timer_sync(&journal->j_commit_timer);
                journal_commit_transaction(journal);
                spin_lock(&journal->j_state_lock);
                goto loop;
@@ -203,7 +203,7 @@ loop:
 
 end_loop:
        spin_unlock(&journal->j_state_lock);
-       del_timer_sync(journal->j_commit_timer);
+       del_timer_sync(&journal->j_commit_timer);
        journal->j_task = NULL;
        wake_up(&journal->j_wait_done_commit);
        jbd_debug(1, "Journal thread exiting.\n");
@@ -212,7 +212,7 @@ end_loop:
 
 static void journal_start_thread(journal_t *journal)
 {
-       kernel_thread(kjournald, journal, CLONE_VM|CLONE_FS|CLONE_FILES);
+       kthread_run(kjournald, journal, "kjournald");
        wait_event(journal->j_wait_done_commit, journal->j_task != 0);
 }
 
@@ -659,8 +659,8 @@ static journal_t * journal_init_common (void)
        init_waitqueue_head(&journal->j_wait_checkpoint);
        init_waitqueue_head(&journal->j_wait_commit);
        init_waitqueue_head(&journal->j_wait_updates);
-       init_MUTEX(&journal->j_barrier);
-       init_MUTEX(&journal->j_checkpoint_sem);
+       mutex_init(&journal->j_barrier);
+       mutex_init(&journal->j_checkpoint_mutex);
        spin_lock_init(&journal->j_revoke_lock);
        spin_lock_init(&journal->j_list_lock);
        spin_lock_init(&journal->j_state_lock);
@@ -1676,7 +1676,7 @@ static void journal_free_journal_head(struct journal_head *jh)
 {
 #ifdef CONFIG_JBD_DEBUG
        atomic_dec(&nr_journal_heads);
-       memset(jh, 0x5b, sizeof(*jh));
+       memset(jh, JBD_POISON_FREE, sizeof(*jh));
 #endif
        kmem_cache_free(journal_head_cache, jh);
 }