diff -ur linux-2.5.24-clean/fs/ext3/inode.c linux/fs/ext3/inode.c --- linux-2.5.24-clean/fs/ext3/inode.c Thu Jun 20 15:53:55 2002 +++ linux/fs/ext3/inode.c Fri Jun 28 20:29:49 2002 @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -754,7 +755,7 @@ if (depth == 0) goto out; - lock_kernel(); + er_lock_kernel_c(5); reread: partial = ext3_get_branch(inode, depth, offsets, chain, &err); @@ -779,7 +780,7 @@ partial--; } BUFFER_TRACE(bh_result, "returned"); - unlock_kernel(); + unlock_kernel_c(5); out: return err; } @@ -883,7 +884,7 @@ For now, regular file writes use ext3_get_block instead, so it's not a problem. */ - lock_kernel(); + er_lock_kernel(); lock_buffer(bh); BUFFER_TRACE(bh, "call get_create_access"); fatal = ext3_journal_get_create_access(handle, bh); @@ -896,7 +897,7 @@ BUFFER_TRACE(bh, "call ext3_journal_dirty_metadata"); err = ext3_journal_dirty_metadata(handle, bh); if (!fatal) fatal = err; - unlock_kernel(); + unlock_kernel_c(5); } else { BUFFER_TRACE(bh, "not a new buffer"); } @@ -1900,7 +1901,7 @@ if (IS_APPEND(inode) || IS_IMMUTABLE(inode)) return; - lock_kernel(); + er_lock_kernel(); ext3_discard_prealloc(inode); handle = start_transaction(inode); @@ -2605,6 +2606,7 @@ handle_t *handle; lock_kernel(); + handle = ext3_journal_start(inode, 1); if (IS_ERR(handle)) goto out; @@ -2620,7 +2622,7 @@ } ext3_journal_stop(handle, inode); out: - unlock_kernel(); + unlock_kernel_c(5); } #ifdef AKPM diff -ur linux-2.5.24-clean/fs/jbd/commit.c linux/fs/jbd/commit.c --- linux-2.5.24-clean/fs/jbd/commit.c Thu Jun 20 15:53:49 2002 +++ linux/fs/jbd/commit.c Fri Jun 28 18:48:31 2002 @@ -72,7 +72,7 @@ spin_unlock(&journal_datalist_lock); #endif - lock_kernel(); + er_lock_kernel(); J_ASSERT (journal->j_running_transaction != NULL); J_ASSERT (journal->j_committing_transaction == NULL); @@ -164,7 +164,7 @@ commit_transaction->t_log_start = journal->j_head; - unlock_kernel(); + unlock_kernel_quiet(); jbd_debug (3, "JBD: commit phase 2\n"); diff -ur linux-2.5.24-clean/fs/jbd/journal.c linux/fs/jbd/journal.c --- linux-2.5.24-clean/fs/jbd/journal.c Thu Jun 20 15:53:46 2002 +++ linux/fs/jbd/journal.c Fri Jun 28 18:53:03 2002 @@ -544,7 +544,7 @@ { tid_t target = journal->j_commit_request; - lock_kernel(); /* Protect journal->j_running_transaction */ + er_lock_kernel(); /* Protect journal->j_running_transaction */ /* * A NULL transaction asks us to commit the currently running @@ -577,7 +577,7 @@ wake_up(&journal->j_wait_commit); out: - unlock_kernel(); + unlock_kernel_quiet(); return target; } @@ -587,7 +587,7 @@ */ void log_wait_commit (journal_t *journal, tid_t tid) { - lock_kernel(); + er_lock_kernel(); #ifdef CONFIG_JBD_DEBUG lock_journal(journal); if (!tid_geq(journal->j_commit_request, tid)) { @@ -603,7 +603,7 @@ wake_up(&journal->j_wait_commit); sleep_on(&journal->j_wait_done_commit); } - unlock_kernel(); + unlock_kernel_quiet(); } /*