提交 f7f4bccb 编写于 作者: M Mingming Cao 提交者: Linus Torvalds

[PATCH] jbd2: rename jbd2 symbols to avoid duplication of jbd symbols

Mingming Cao originally did this work, and Shaggy reproduced it using some
scripts from her.
Signed-off-by: NMingming Cao <cmm@us.ibm.com>
Signed-off-by: NDave Kleikamp <shaggy@austin.ibm.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 470decc6
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
# Makefile for the linux journaling routines. # Makefile for the linux journaling routines.
# #
obj-$(CONFIG_JBD) += jbd.o obj-$(CONFIG_JBD2) += jbd2.o
jbd-objs := transaction.o commit.o recovery.o checkpoint.o revoke.o journal.o jbd2-objs := transaction.o commit.o recovery.o checkpoint.o revoke.o journal.o
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include <linux/time.h> #include <linux/time.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/jbd.h> #include <linux/jbd2.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/slab.h> #include <linux/slab.h>
...@@ -95,9 +95,9 @@ static int __try_to_free_cp_buf(struct journal_head *jh) ...@@ -95,9 +95,9 @@ static int __try_to_free_cp_buf(struct journal_head *jh)
if (jh->b_jlist == BJ_None && !buffer_locked(bh) && !buffer_dirty(bh)) { if (jh->b_jlist == BJ_None && !buffer_locked(bh) && !buffer_dirty(bh)) {
JBUFFER_TRACE(jh, "remove from checkpoint list"); JBUFFER_TRACE(jh, "remove from checkpoint list");
ret = __journal_remove_checkpoint(jh) + 1; ret = __jbd2_journal_remove_checkpoint(jh) + 1;
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
journal_remove_journal_head(bh); jbd2_journal_remove_journal_head(bh);
BUFFER_TRACE(bh, "release"); BUFFER_TRACE(bh, "release");
__brelse(bh); __brelse(bh);
} else { } else {
...@@ -107,19 +107,19 @@ static int __try_to_free_cp_buf(struct journal_head *jh) ...@@ -107,19 +107,19 @@ static int __try_to_free_cp_buf(struct journal_head *jh)
} }
/* /*
* __log_wait_for_space: wait until there is space in the journal. * __jbd2_log_wait_for_space: wait until there is space in the journal.
* *
* Called under j-state_lock *only*. It will be unlocked if we have to wait * Called under j-state_lock *only*. It will be unlocked if we have to wait
* for a checkpoint to free up some space in the log. * for a checkpoint to free up some space in the log.
*/ */
void __log_wait_for_space(journal_t *journal) void __jbd2_log_wait_for_space(journal_t *journal)
{ {
int nblocks; int nblocks;
assert_spin_locked(&journal->j_state_lock); assert_spin_locked(&journal->j_state_lock);
nblocks = jbd_space_needed(journal); nblocks = jbd_space_needed(journal);
while (__log_space_left(journal) < nblocks) { while (__jbd2_log_space_left(journal) < nblocks) {
if (journal->j_flags & JFS_ABORT) if (journal->j_flags & JBD2_ABORT)
return; return;
spin_unlock(&journal->j_state_lock); spin_unlock(&journal->j_state_lock);
mutex_lock(&journal->j_checkpoint_mutex); mutex_lock(&journal->j_checkpoint_mutex);
...@@ -130,9 +130,9 @@ void __log_wait_for_space(journal_t *journal) ...@@ -130,9 +130,9 @@ void __log_wait_for_space(journal_t *journal)
*/ */
spin_lock(&journal->j_state_lock); spin_lock(&journal->j_state_lock);
nblocks = jbd_space_needed(journal); nblocks = jbd_space_needed(journal);
if (__log_space_left(journal) < nblocks) { if (__jbd2_log_space_left(journal) < nblocks) {
spin_unlock(&journal->j_state_lock); spin_unlock(&journal->j_state_lock);
log_do_checkpoint(journal); jbd2_log_do_checkpoint(journal);
spin_lock(&journal->j_state_lock); spin_lock(&journal->j_state_lock);
} }
mutex_unlock(&journal->j_checkpoint_mutex); mutex_unlock(&journal->j_checkpoint_mutex);
...@@ -198,9 +198,9 @@ static void __wait_cp_io(journal_t *journal, transaction_t *transaction) ...@@ -198,9 +198,9 @@ static void __wait_cp_io(journal_t *journal, transaction_t *transaction)
* Now in whatever state the buffer currently is, we know that * Now in whatever state the buffer currently is, we know that
* it has been written out and so we can drop it from the list * it has been written out and so we can drop it from the list
*/ */
released = __journal_remove_checkpoint(jh); released = __jbd2_journal_remove_checkpoint(jh);
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
journal_remove_journal_head(bh); jbd2_journal_remove_journal_head(bh);
__brelse(bh); __brelse(bh);
} }
} }
...@@ -252,16 +252,16 @@ static int __process_buffer(journal_t *journal, struct journal_head *jh, ...@@ -252,16 +252,16 @@ static int __process_buffer(journal_t *journal, struct journal_head *jh,
spin_unlock(&journal->j_list_lock); spin_unlock(&journal->j_list_lock);
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
log_start_commit(journal, tid); jbd2_log_start_commit(journal, tid);
log_wait_commit(journal, tid); jbd2_log_wait_commit(journal, tid);
ret = 1; ret = 1;
} else if (!buffer_dirty(bh)) { } else if (!buffer_dirty(bh)) {
J_ASSERT_JH(jh, !buffer_jbddirty(bh)); J_ASSERT_JH(jh, !buffer_jbddirty(bh));
BUFFER_TRACE(bh, "remove from checkpoint"); BUFFER_TRACE(bh, "remove from checkpoint");
__journal_remove_checkpoint(jh); __jbd2_journal_remove_checkpoint(jh);
spin_unlock(&journal->j_list_lock); spin_unlock(&journal->j_list_lock);
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
journal_remove_journal_head(bh); jbd2_journal_remove_journal_head(bh);
__brelse(bh); __brelse(bh);
ret = 1; ret = 1;
} else { } else {
...@@ -296,7 +296,7 @@ static int __process_buffer(journal_t *journal, struct journal_head *jh, ...@@ -296,7 +296,7 @@ static int __process_buffer(journal_t *journal, struct journal_head *jh,
* *
* The journal should be locked before calling this function. * The journal should be locked before calling this function.
*/ */
int log_do_checkpoint(journal_t *journal) int jbd2_log_do_checkpoint(journal_t *journal)
{ {
transaction_t *transaction; transaction_t *transaction;
tid_t this_tid; tid_t this_tid;
...@@ -309,7 +309,7 @@ int log_do_checkpoint(journal_t *journal) ...@@ -309,7 +309,7 @@ int log_do_checkpoint(journal_t *journal)
* don't need checkpointing, just eliminate them from the * don't need checkpointing, just eliminate them from the
* journal straight away. * journal straight away.
*/ */
result = cleanup_journal_tail(journal); result = jbd2_cleanup_journal_tail(journal);
jbd_debug(1, "cleanup_journal_tail returned %d\n", result); jbd_debug(1, "cleanup_journal_tail returned %d\n", result);
if (result <= 0) if (result <= 0)
return result; return result;
...@@ -374,7 +374,7 @@ int log_do_checkpoint(journal_t *journal) ...@@ -374,7 +374,7 @@ int log_do_checkpoint(journal_t *journal)
} }
out: out:
spin_unlock(&journal->j_list_lock); spin_unlock(&journal->j_list_lock);
result = cleanup_journal_tail(journal); result = jbd2_cleanup_journal_tail(journal);
if (result < 0) if (result < 0)
return result; return result;
return 0; return 0;
...@@ -397,7 +397,7 @@ int log_do_checkpoint(journal_t *journal) ...@@ -397,7 +397,7 @@ int log_do_checkpoint(journal_t *journal)
* we have an abort error outstanding. * we have an abort error outstanding.
*/ */
int cleanup_journal_tail(journal_t *journal) int jbd2_cleanup_journal_tail(journal_t *journal)
{ {
transaction_t * transaction; transaction_t * transaction;
tid_t first_tid; tid_t first_tid;
...@@ -452,8 +452,8 @@ int cleanup_journal_tail(journal_t *journal) ...@@ -452,8 +452,8 @@ int cleanup_journal_tail(journal_t *journal)
journal->j_tail_sequence = first_tid; journal->j_tail_sequence = first_tid;
journal->j_tail = blocknr; journal->j_tail = blocknr;
spin_unlock(&journal->j_state_lock); spin_unlock(&journal->j_state_lock);
if (!(journal->j_flags & JFS_ABORT)) if (!(journal->j_flags & JBD2_ABORT))
journal_update_superblock(journal, 1); jbd2_journal_update_superblock(journal, 1);
return 0; return 0;
} }
...@@ -518,7 +518,7 @@ static int journal_clean_one_cp_list(struct journal_head *jh, int *released) ...@@ -518,7 +518,7 @@ static int journal_clean_one_cp_list(struct journal_head *jh, int *released)
* Returns number of buffers reaped (for debug) * Returns number of buffers reaped (for debug)
*/ */
int __journal_clean_checkpoint_list(journal_t *journal) int __jbd2_journal_clean_checkpoint_list(journal_t *journal)
{ {
transaction_t *transaction, *last_transaction, *next_transaction; transaction_t *transaction, *last_transaction, *next_transaction;
int ret = 0; int ret = 0;
...@@ -578,7 +578,7 @@ int __journal_clean_checkpoint_list(journal_t *journal) ...@@ -578,7 +578,7 @@ int __journal_clean_checkpoint_list(journal_t *journal)
* This function is called with jbd_lock_bh_state(jh2bh(jh)) * This function is called with jbd_lock_bh_state(jh2bh(jh))
*/ */
int __journal_remove_checkpoint(struct journal_head *jh) int __jbd2_journal_remove_checkpoint(struct journal_head *jh)
{ {
transaction_t *transaction; transaction_t *transaction;
journal_t *journal; journal_t *journal;
...@@ -607,7 +607,7 @@ int __journal_remove_checkpoint(struct journal_head *jh) ...@@ -607,7 +607,7 @@ int __journal_remove_checkpoint(struct journal_head *jh)
* dropped! * dropped!
* *
* The locking here around j_committing_transaction is a bit sleazy. * The locking here around j_committing_transaction is a bit sleazy.
* See the comment at the end of journal_commit_transaction(). * See the comment at the end of jbd2_journal_commit_transaction().
*/ */
if (transaction == journal->j_committing_transaction) { if (transaction == journal->j_committing_transaction) {
JBUFFER_TRACE(jh, "belongs to committing transaction"); JBUFFER_TRACE(jh, "belongs to committing transaction");
...@@ -617,7 +617,7 @@ int __journal_remove_checkpoint(struct journal_head *jh) ...@@ -617,7 +617,7 @@ int __journal_remove_checkpoint(struct journal_head *jh)
/* OK, that was the last buffer for the transaction: we can now /* OK, that was the last buffer for the transaction: we can now
safely remove this transaction from the log */ safely remove this transaction from the log */
__journal_drop_transaction(journal, transaction); __jbd2_journal_drop_transaction(journal, transaction);
/* Just in case anybody was waiting for more transactions to be /* Just in case anybody was waiting for more transactions to be
checkpointed... */ checkpointed... */
...@@ -636,7 +636,7 @@ int __journal_remove_checkpoint(struct journal_head *jh) ...@@ -636,7 +636,7 @@ int __journal_remove_checkpoint(struct journal_head *jh)
* Called with the journal locked. * Called with the journal locked.
* Called with j_list_lock held. * Called with j_list_lock held.
*/ */
void __journal_insert_checkpoint(struct journal_head *jh, void __jbd2_journal_insert_checkpoint(struct journal_head *jh,
transaction_t *transaction) transaction_t *transaction)
{ {
JBUFFER_TRACE(jh, "entry"); JBUFFER_TRACE(jh, "entry");
...@@ -666,7 +666,7 @@ void __journal_insert_checkpoint(struct journal_head *jh, ...@@ -666,7 +666,7 @@ void __journal_insert_checkpoint(struct journal_head *jh,
* Called with j_list_lock held. * Called with j_list_lock held.
*/ */
void __journal_drop_transaction(journal_t *journal, transaction_t *transaction) void __jbd2_journal_drop_transaction(journal_t *journal, transaction_t *transaction)
{ {
assert_spin_locked(&journal->j_list_lock); assert_spin_locked(&journal->j_list_lock);
if (transaction->t_cpnext) { if (transaction->t_cpnext) {
......
/* /*
* linux/fs/jbd/commit.c * linux/fs/jbd2/commit.c
* *
* Written by Stephen C. Tweedie <sct@redhat.com>, 1998 * Written by Stephen C. Tweedie <sct@redhat.com>, 1998
* *
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include <linux/time.h> #include <linux/time.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/jbd.h> #include <linux/jbd2.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/mm.h> #include <linux/mm.h>
...@@ -111,7 +111,7 @@ static int journal_write_commit_record(journal_t *journal, ...@@ -111,7 +111,7 @@ static int journal_write_commit_record(journal_t *journal,
if (is_journal_aborted(journal)) if (is_journal_aborted(journal))
return 0; return 0;
descriptor = journal_get_descriptor_buffer(journal); descriptor = jbd2_journal_get_descriptor_buffer(journal);
if (!descriptor) if (!descriptor)
return 1; return 1;
...@@ -120,14 +120,14 @@ static int journal_write_commit_record(journal_t *journal, ...@@ -120,14 +120,14 @@ static int journal_write_commit_record(journal_t *journal,
/* AKPM: buglet - add `i' to tmp! */ /* AKPM: buglet - add `i' to tmp! */
for (i = 0; i < bh->b_size; i += 512) { for (i = 0; i < bh->b_size; i += 512) {
journal_header_t *tmp = (journal_header_t*)bh->b_data; journal_header_t *tmp = (journal_header_t*)bh->b_data;
tmp->h_magic = cpu_to_be32(JFS_MAGIC_NUMBER); tmp->h_magic = cpu_to_be32(JBD2_MAGIC_NUMBER);
tmp->h_blocktype = cpu_to_be32(JFS_COMMIT_BLOCK); tmp->h_blocktype = cpu_to_be32(JBD2_COMMIT_BLOCK);
tmp->h_sequence = cpu_to_be32(commit_transaction->t_tid); tmp->h_sequence = cpu_to_be32(commit_transaction->t_tid);
} }
JBUFFER_TRACE(descriptor, "write commit block"); JBUFFER_TRACE(descriptor, "write commit block");
set_buffer_dirty(bh); set_buffer_dirty(bh);
if (journal->j_flags & JFS_BARRIER) { if (journal->j_flags & JBD2_BARRIER) {
set_buffer_ordered(bh); set_buffer_ordered(bh);
barrier_done = 1; barrier_done = 1;
} }
...@@ -145,7 +145,7 @@ static int journal_write_commit_record(journal_t *journal, ...@@ -145,7 +145,7 @@ static int journal_write_commit_record(journal_t *journal,
"disabling barriers\n", "disabling barriers\n",
bdevname(journal->j_dev, b)); bdevname(journal->j_dev, b));
spin_lock(&journal->j_state_lock); spin_lock(&journal->j_state_lock);
journal->j_flags &= ~JFS_BARRIER; journal->j_flags &= ~JBD2_BARRIER;
spin_unlock(&journal->j_state_lock); spin_unlock(&journal->j_state_lock);
/* And try again, without the barrier */ /* And try again, without the barrier */
...@@ -155,7 +155,7 @@ static int journal_write_commit_record(journal_t *journal, ...@@ -155,7 +155,7 @@ static int journal_write_commit_record(journal_t *journal,
ret = sync_dirty_buffer(bh); ret = sync_dirty_buffer(bh);
} }
put_bh(bh); /* One for getblk() */ put_bh(bh); /* One for getblk() */
journal_put_journal_head(descriptor); jbd2_journal_put_journal_head(descriptor);
return (ret == -EIO); return (ret == -EIO);
} }
...@@ -239,7 +239,7 @@ static void journal_submit_data_buffers(journal_t *journal, ...@@ -239,7 +239,7 @@ static void journal_submit_data_buffers(journal_t *journal,
if (locked && test_clear_buffer_dirty(bh)) { if (locked && test_clear_buffer_dirty(bh)) {
BUFFER_TRACE(bh, "needs writeout, adding to array"); BUFFER_TRACE(bh, "needs writeout, adding to array");
wbuf[bufs++] = bh; wbuf[bufs++] = bh;
__journal_file_buffer(jh, commit_transaction, __jbd2_journal_file_buffer(jh, commit_transaction,
BJ_Locked); BJ_Locked);
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
if (bufs == journal->j_wbufsize) { if (bufs == journal->j_wbufsize) {
...@@ -251,13 +251,13 @@ static void journal_submit_data_buffers(journal_t *journal, ...@@ -251,13 +251,13 @@ static void journal_submit_data_buffers(journal_t *journal,
} }
else { else {
BUFFER_TRACE(bh, "writeout complete: unfile"); BUFFER_TRACE(bh, "writeout complete: unfile");
__journal_unfile_buffer(jh); __jbd2_journal_unfile_buffer(jh);
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
if (locked) if (locked)
unlock_buffer(bh); unlock_buffer(bh);
journal_remove_journal_head(bh); jbd2_journal_remove_journal_head(bh);
/* Once for our safety reference, once for /* Once for our safety reference, once for
* journal_remove_journal_head() */ * jbd2_journal_remove_journal_head() */
put_bh(bh); put_bh(bh);
put_bh(bh); put_bh(bh);
} }
...@@ -272,12 +272,12 @@ static void journal_submit_data_buffers(journal_t *journal, ...@@ -272,12 +272,12 @@ static void journal_submit_data_buffers(journal_t *journal,
} }
/* /*
* journal_commit_transaction * jbd2_journal_commit_transaction
* *
* The primary function for committing a transaction to the log. This * The primary function for committing a transaction to the log. This
* function is called by the journal thread to begin a complete commit. * function is called by the journal thread to begin a complete commit.
*/ */
void journal_commit_transaction(journal_t *journal) void jbd2_journal_commit_transaction(journal_t *journal)
{ {
transaction_t *commit_transaction; transaction_t *commit_transaction;
struct journal_head *jh, *new_jh, *descriptor; struct journal_head *jh, *new_jh, *descriptor;
...@@ -305,10 +305,10 @@ void journal_commit_transaction(journal_t *journal) ...@@ -305,10 +305,10 @@ void journal_commit_transaction(journal_t *journal)
spin_unlock(&journal->j_list_lock); spin_unlock(&journal->j_list_lock);
#endif #endif
/* Do we need to erase the effects of a prior journal_flush? */ /* Do we need to erase the effects of a prior jbd2_journal_flush? */
if (journal->j_flags & JFS_FLUSHED) { if (journal->j_flags & JBD2_FLUSHED) {
jbd_debug(3, "super block updated\n"); jbd_debug(3, "super block updated\n");
journal_update_superblock(journal, 1); jbd2_journal_update_superblock(journal, 1);
} else { } else {
jbd_debug(3, "superblock not updated\n"); jbd_debug(3, "superblock not updated\n");
} }
...@@ -350,7 +350,7 @@ void journal_commit_transaction(journal_t *journal) ...@@ -350,7 +350,7 @@ void journal_commit_transaction(journal_t *journal)
* BJ_Reserved buffers. Note, it is _not_ permissible to assume * BJ_Reserved buffers. Note, it is _not_ permissible to assume
* that there are no such buffers: if a large filesystem * that there are no such buffers: if a large filesystem
* operation like a truncate needs to split itself over multiple * operation like a truncate needs to split itself over multiple
* transactions, then it may try to do a journal_restart() while * transactions, then it may try to do a jbd2_journal_restart() while
* there are still BJ_Reserved buffers outstanding. These must * there are still BJ_Reserved buffers outstanding. These must
* be released cleanly from the current transaction. * be released cleanly from the current transaction.
* *
...@@ -358,25 +358,25 @@ void journal_commit_transaction(journal_t *journal) ...@@ -358,25 +358,25 @@ void journal_commit_transaction(journal_t *journal)
* again before modifying the buffer in the new transaction, but * again before modifying the buffer in the new transaction, but
* we do not require it to remember exactly which old buffers it * we do not require it to remember exactly which old buffers it
* has reserved. This is consistent with the existing behaviour * has reserved. This is consistent with the existing behaviour
* that multiple journal_get_write_access() calls to the same * that multiple jbd2_journal_get_write_access() calls to the same
* buffer are perfectly permissable. * buffer are perfectly permissable.
*/ */
while (commit_transaction->t_reserved_list) { while (commit_transaction->t_reserved_list) {
jh = commit_transaction->t_reserved_list; jh = commit_transaction->t_reserved_list;
JBUFFER_TRACE(jh, "reserved, unused: refile"); JBUFFER_TRACE(jh, "reserved, unused: refile");
/* /*
* A journal_get_undo_access()+journal_release_buffer() may * A jbd2_journal_get_undo_access()+jbd2_journal_release_buffer() may
* leave undo-committed data. * leave undo-committed data.
*/ */
if (jh->b_committed_data) { if (jh->b_committed_data) {
struct buffer_head *bh = jh2bh(jh); struct buffer_head *bh = jh2bh(jh);
jbd_lock_bh_state(bh); jbd_lock_bh_state(bh);
jbd_slab_free(jh->b_committed_data, bh->b_size); jbd2_slab_free(jh->b_committed_data, bh->b_size);
jh->b_committed_data = NULL; jh->b_committed_data = NULL;
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
} }
journal_refile_buffer(journal, jh); jbd2_journal_refile_buffer(journal, jh);
} }
/* /*
...@@ -385,7 +385,7 @@ void journal_commit_transaction(journal_t *journal) ...@@ -385,7 +385,7 @@ void journal_commit_transaction(journal_t *journal)
* frees some memory * frees some memory
*/ */
spin_lock(&journal->j_list_lock); spin_lock(&journal->j_list_lock);
__journal_clean_checkpoint_list(journal); __jbd2_journal_clean_checkpoint_list(journal);
spin_unlock(&journal->j_list_lock); spin_unlock(&journal->j_list_lock);
jbd_debug (3, "JBD: commit phase 1\n"); jbd_debug (3, "JBD: commit phase 1\n");
...@@ -393,7 +393,7 @@ void journal_commit_transaction(journal_t *journal) ...@@ -393,7 +393,7 @@ void journal_commit_transaction(journal_t *journal)
/* /*
* Switch to a new revoke table. * Switch to a new revoke table.
*/ */
journal_switch_revoke_table(journal); jbd2_journal_switch_revoke_table(journal);
commit_transaction->t_state = T_FLUSH; commit_transaction->t_state = T_FLUSH;
journal->j_committing_transaction = commit_transaction; journal->j_committing_transaction = commit_transaction;
...@@ -450,9 +450,9 @@ void journal_commit_transaction(journal_t *journal) ...@@ -450,9 +450,9 @@ void journal_commit_transaction(journal_t *journal)
continue; continue;
} }
if (buffer_jbd(bh) && jh->b_jlist == BJ_Locked) { if (buffer_jbd(bh) && jh->b_jlist == BJ_Locked) {
__journal_unfile_buffer(jh); __jbd2_journal_unfile_buffer(jh);
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
journal_remove_journal_head(bh); jbd2_journal_remove_journal_head(bh);
put_bh(bh); put_bh(bh);
} else { } else {
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
...@@ -463,9 +463,9 @@ void journal_commit_transaction(journal_t *journal) ...@@ -463,9 +463,9 @@ void journal_commit_transaction(journal_t *journal)
spin_unlock(&journal->j_list_lock); spin_unlock(&journal->j_list_lock);
if (err) if (err)
__journal_abort_hard(journal); __jbd2_journal_abort_hard(journal);
journal_write_revoke_records(journal, commit_transaction); jbd2_journal_write_revoke_records(journal, commit_transaction);
jbd_debug(3, "JBD: commit phase 2\n"); jbd_debug(3, "JBD: commit phase 2\n");
...@@ -499,7 +499,7 @@ void journal_commit_transaction(journal_t *journal) ...@@ -499,7 +499,7 @@ void journal_commit_transaction(journal_t *journal)
if (is_journal_aborted(journal)) { if (is_journal_aborted(journal)) {
JBUFFER_TRACE(jh, "journal is aborting: refile"); JBUFFER_TRACE(jh, "journal is aborting: refile");
journal_refile_buffer(journal, jh); jbd2_journal_refile_buffer(journal, jh);
/* If that was the last one, we need to clean up /* If that was the last one, we need to clean up
* any descriptor buffers which may have been * any descriptor buffers which may have been
* already allocated, even if we are now * already allocated, even if we are now
...@@ -519,9 +519,9 @@ void journal_commit_transaction(journal_t *journal) ...@@ -519,9 +519,9 @@ void journal_commit_transaction(journal_t *journal)
jbd_debug(4, "JBD: get descriptor\n"); jbd_debug(4, "JBD: get descriptor\n");
descriptor = journal_get_descriptor_buffer(journal); descriptor = jbd2_journal_get_descriptor_buffer(journal);
if (!descriptor) { if (!descriptor) {
__journal_abort_hard(journal); __jbd2_journal_abort_hard(journal);
continue; continue;
} }
...@@ -529,8 +529,8 @@ void journal_commit_transaction(journal_t *journal) ...@@ -529,8 +529,8 @@ void journal_commit_transaction(journal_t *journal)
jbd_debug(4, "JBD: got buffer %llu (%p)\n", jbd_debug(4, "JBD: got buffer %llu (%p)\n",
(unsigned long long)bh->b_blocknr, bh->b_data); (unsigned long long)bh->b_blocknr, bh->b_data);
header = (journal_header_t *)&bh->b_data[0]; header = (journal_header_t *)&bh->b_data[0];
header->h_magic = cpu_to_be32(JFS_MAGIC_NUMBER); header->h_magic = cpu_to_be32(JBD2_MAGIC_NUMBER);
header->h_blocktype = cpu_to_be32(JFS_DESCRIPTOR_BLOCK); header->h_blocktype = cpu_to_be32(JBD2_DESCRIPTOR_BLOCK);
header->h_sequence = cpu_to_be32(commit_transaction->t_tid); header->h_sequence = cpu_to_be32(commit_transaction->t_tid);
tagp = &bh->b_data[sizeof(journal_header_t)]; tagp = &bh->b_data[sizeof(journal_header_t)];
...@@ -543,25 +543,25 @@ void journal_commit_transaction(journal_t *journal) ...@@ -543,25 +543,25 @@ void journal_commit_transaction(journal_t *journal)
/* Record it so that we can wait for IO /* Record it so that we can wait for IO
completion later */ completion later */
BUFFER_TRACE(bh, "ph3: file as descriptor"); BUFFER_TRACE(bh, "ph3: file as descriptor");
journal_file_buffer(descriptor, commit_transaction, jbd2_journal_file_buffer(descriptor, commit_transaction,
BJ_LogCtl); BJ_LogCtl);
} }
/* Where is the buffer to be written? */ /* Where is the buffer to be written? */
err = journal_next_log_block(journal, &blocknr); err = jbd2_journal_next_log_block(journal, &blocknr);
/* If the block mapping failed, just abandon the buffer /* If the block mapping failed, just abandon the buffer
and repeat this loop: we'll fall into the and repeat this loop: we'll fall into the
refile-on-abort condition above. */ refile-on-abort condition above. */
if (err) { if (err) {
__journal_abort_hard(journal); __jbd2_journal_abort_hard(journal);
continue; continue;
} }
/* /*
* start_this_handle() uses t_outstanding_credits to determine * start_this_handle() uses t_outstanding_credits to determine
* the free space in the log, but this counter is changed * the free space in the log, but this counter is changed
* by journal_next_log_block() also. * by jbd2_journal_next_log_block() also.
*/ */
commit_transaction->t_outstanding_credits--; commit_transaction->t_outstanding_credits--;
...@@ -576,13 +576,13 @@ void journal_commit_transaction(journal_t *journal) ...@@ -576,13 +576,13 @@ void journal_commit_transaction(journal_t *journal)
set_bit(BH_JWrite, &jh2bh(jh)->b_state); set_bit(BH_JWrite, &jh2bh(jh)->b_state);
/* /*
* akpm: journal_write_metadata_buffer() sets * akpm: jbd2_journal_write_metadata_buffer() sets
* new_bh->b_transaction to commit_transaction. * new_bh->b_transaction to commit_transaction.
* We need to clean this up before we release new_bh * We need to clean this up before we release new_bh
* (which is of type BJ_IO) * (which is of type BJ_IO)
*/ */
JBUFFER_TRACE(jh, "ph3: write metadata"); JBUFFER_TRACE(jh, "ph3: write metadata");
flags = journal_write_metadata_buffer(commit_transaction, flags = jbd2_journal_write_metadata_buffer(commit_transaction,
jh, &new_jh, blocknr); jh, &new_jh, blocknr);
set_bit(BH_JWrite, &jh2bh(new_jh)->b_state); set_bit(BH_JWrite, &jh2bh(new_jh)->b_state);
wbuf[bufs++] = jh2bh(new_jh); wbuf[bufs++] = jh2bh(new_jh);
...@@ -592,9 +592,9 @@ void journal_commit_transaction(journal_t *journal) ...@@ -592,9 +592,9 @@ void journal_commit_transaction(journal_t *journal)
tag_flag = 0; tag_flag = 0;
if (flags & 1) if (flags & 1)
tag_flag |= JFS_FLAG_ESCAPE; tag_flag |= JBD2_FLAG_ESCAPE;
if (!first_tag) if (!first_tag)
tag_flag |= JFS_FLAG_SAME_UUID; tag_flag |= JBD2_FLAG_SAME_UUID;
tag = (journal_block_tag_t *) tagp; tag = (journal_block_tag_t *) tagp;
tag->t_blocknr = cpu_to_be32(jh2bh(jh)->b_blocknr); tag->t_blocknr = cpu_to_be32(jh2bh(jh)->b_blocknr);
...@@ -622,7 +622,7 @@ void journal_commit_transaction(journal_t *journal) ...@@ -622,7 +622,7 @@ void journal_commit_transaction(journal_t *journal)
submitting the IOs. "tag" still points to submitting the IOs. "tag" still points to
the last tag we set up. */ the last tag we set up. */
tag->t_flags |= cpu_to_be32(JFS_FLAG_LAST_TAG); tag->t_flags |= cpu_to_be32(JBD2_FLAG_LAST_TAG);
start_journal_io: start_journal_io:
for (i = 0; i < bufs; i++) { for (i = 0; i < bufs; i++) {
...@@ -678,14 +678,14 @@ void journal_commit_transaction(journal_t *journal) ...@@ -678,14 +678,14 @@ void journal_commit_transaction(journal_t *journal)
clear_buffer_jwrite(bh); clear_buffer_jwrite(bh);
JBUFFER_TRACE(jh, "ph4: unfile after journal write"); JBUFFER_TRACE(jh, "ph4: unfile after journal write");
journal_unfile_buffer(journal, jh); jbd2_journal_unfile_buffer(journal, jh);
/* /*
* ->t_iobuf_list should contain only dummy buffer_heads * ->t_iobuf_list should contain only dummy buffer_heads
* which were created by journal_write_metadata_buffer(). * which were created by jbd2_journal_write_metadata_buffer().
*/ */
BUFFER_TRACE(bh, "dumping temporary bh"); BUFFER_TRACE(bh, "dumping temporary bh");
journal_put_journal_head(jh); jbd2_journal_put_journal_head(jh);
__brelse(bh); __brelse(bh);
J_ASSERT_BH(bh, atomic_read(&bh->b_count) == 0); J_ASSERT_BH(bh, atomic_read(&bh->b_count) == 0);
free_buffer_head(bh); free_buffer_head(bh);
...@@ -702,7 +702,7 @@ void journal_commit_transaction(journal_t *journal) ...@@ -702,7 +702,7 @@ void journal_commit_transaction(journal_t *journal)
we finally commit, we can do any checkpointing we finally commit, we can do any checkpointing
required. */ required. */
JBUFFER_TRACE(jh, "file as BJ_Forget"); JBUFFER_TRACE(jh, "file as BJ_Forget");
journal_file_buffer(jh, commit_transaction, BJ_Forget); jbd2_journal_file_buffer(jh, commit_transaction, BJ_Forget);
/* Wake up any transactions which were waiting for this /* Wake up any transactions which were waiting for this
IO to complete */ IO to complete */
wake_up_bit(&bh->b_state, BH_Unshadow); wake_up_bit(&bh->b_state, BH_Unshadow);
...@@ -733,8 +733,8 @@ void journal_commit_transaction(journal_t *journal) ...@@ -733,8 +733,8 @@ void journal_commit_transaction(journal_t *journal)
BUFFER_TRACE(bh, "ph5: control buffer writeout done: unfile"); BUFFER_TRACE(bh, "ph5: control buffer writeout done: unfile");
clear_buffer_jwrite(bh); clear_buffer_jwrite(bh);
journal_unfile_buffer(journal, jh); jbd2_journal_unfile_buffer(journal, jh);
journal_put_journal_head(jh); jbd2_journal_put_journal_head(jh);
__brelse(bh); /* One for getblk */ __brelse(bh); /* One for getblk */
/* AKPM: bforget here */ /* AKPM: bforget here */
} }
...@@ -745,7 +745,7 @@ void journal_commit_transaction(journal_t *journal) ...@@ -745,7 +745,7 @@ void journal_commit_transaction(journal_t *journal)
err = -EIO; err = -EIO;
if (err) if (err)
__journal_abort_hard(journal); __jbd2_journal_abort_hard(journal);
/* End of a transaction! Finally, we can do checkpoint /* End of a transaction! Finally, we can do checkpoint
processing: any buffers committed as a result of this processing: any buffers committed as a result of this
...@@ -789,14 +789,14 @@ void journal_commit_transaction(journal_t *journal) ...@@ -789,14 +789,14 @@ void journal_commit_transaction(journal_t *journal)
* Otherwise, we can just throw away the frozen data now. * Otherwise, we can just throw away the frozen data now.
*/ */
if (jh->b_committed_data) { if (jh->b_committed_data) {
jbd_slab_free(jh->b_committed_data, bh->b_size); jbd2_slab_free(jh->b_committed_data, bh->b_size);
jh->b_committed_data = NULL; jh->b_committed_data = NULL;
if (jh->b_frozen_data) { if (jh->b_frozen_data) {
jh->b_committed_data = jh->b_frozen_data; jh->b_committed_data = jh->b_frozen_data;
jh->b_frozen_data = NULL; jh->b_frozen_data = NULL;
} }
} else if (jh->b_frozen_data) { } else if (jh->b_frozen_data) {
jbd_slab_free(jh->b_frozen_data, bh->b_size); jbd2_slab_free(jh->b_frozen_data, bh->b_size);
jh->b_frozen_data = NULL; jh->b_frozen_data = NULL;
} }
...@@ -804,12 +804,12 @@ void journal_commit_transaction(journal_t *journal) ...@@ -804,12 +804,12 @@ void journal_commit_transaction(journal_t *journal)
cp_transaction = jh->b_cp_transaction; cp_transaction = jh->b_cp_transaction;
if (cp_transaction) { if (cp_transaction) {
JBUFFER_TRACE(jh, "remove from old cp transaction"); JBUFFER_TRACE(jh, "remove from old cp transaction");
__journal_remove_checkpoint(jh); __jbd2_journal_remove_checkpoint(jh);
} }
/* Only re-checkpoint the buffer_head if it is marked /* Only re-checkpoint the buffer_head if it is marked
* dirty. If the buffer was added to the BJ_Forget list * dirty. If the buffer was added to the BJ_Forget list
* by journal_forget, it may no longer be dirty and * by jbd2_journal_forget, it may no longer be dirty and
* there's no point in keeping a checkpoint record for * there's no point in keeping a checkpoint record for
* it. */ * it. */
...@@ -828,9 +828,9 @@ void journal_commit_transaction(journal_t *journal) ...@@ -828,9 +828,9 @@ void journal_commit_transaction(journal_t *journal)
if (buffer_jbddirty(bh)) { if (buffer_jbddirty(bh)) {
JBUFFER_TRACE(jh, "add to new checkpointing trans"); JBUFFER_TRACE(jh, "add to new checkpointing trans");
__journal_insert_checkpoint(jh, commit_transaction); __jbd2_journal_insert_checkpoint(jh, commit_transaction);
JBUFFER_TRACE(jh, "refile for checkpoint writeback"); JBUFFER_TRACE(jh, "refile for checkpoint writeback");
__journal_refile_buffer(jh); __jbd2_journal_refile_buffer(jh);
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
} else { } else {
J_ASSERT_BH(bh, !buffer_dirty(bh)); J_ASSERT_BH(bh, !buffer_dirty(bh));
...@@ -842,11 +842,11 @@ void journal_commit_transaction(journal_t *journal) ...@@ -842,11 +842,11 @@ void journal_commit_transaction(journal_t *journal)
* disk and before we process the buffer on BJ_Forget * disk and before we process the buffer on BJ_Forget
* list. */ * list. */
JBUFFER_TRACE(jh, "refile or unfile freed buffer"); JBUFFER_TRACE(jh, "refile or unfile freed buffer");
__journal_refile_buffer(jh); __jbd2_journal_refile_buffer(jh);
if (!jh->b_transaction) { if (!jh->b_transaction) {
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
/* needs a brelse */ /* needs a brelse */
journal_remove_journal_head(bh); jbd2_journal_remove_journal_head(bh);
release_buffer_page(bh); release_buffer_page(bh);
} else } else
jbd_unlock_bh_state(bh); jbd_unlock_bh_state(bh);
...@@ -856,9 +856,9 @@ void journal_commit_transaction(journal_t *journal) ...@@ -856,9 +856,9 @@ void journal_commit_transaction(journal_t *journal)
spin_unlock(&journal->j_list_lock); spin_unlock(&journal->j_list_lock);
/* /*
* This is a bit sleazy. We borrow j_list_lock to protect * This is a bit sleazy. We borrow j_list_lock to protect
* journal->j_committing_transaction in __journal_remove_checkpoint. * journal->j_committing_transaction in __jbd2_journal_remove_checkpoint.
* Really, __journal_remove_checkpoint should be using j_state_lock but * Really, __jbd2_journal_remove_checkpoint should be using j_state_lock but
* it's a bit hassle to hold that across __journal_remove_checkpoint * it's a bit hassle to hold that across __jbd2_journal_remove_checkpoint
*/ */
spin_lock(&journal->j_state_lock); spin_lock(&journal->j_state_lock);
spin_lock(&journal->j_list_lock); spin_lock(&journal->j_list_lock);
...@@ -885,7 +885,7 @@ void journal_commit_transaction(journal_t *journal) ...@@ -885,7 +885,7 @@ void journal_commit_transaction(journal_t *journal)
spin_unlock(&journal->j_state_lock); spin_unlock(&journal->j_state_lock);
if (commit_transaction->t_checkpoint_list == NULL) { if (commit_transaction->t_checkpoint_list == NULL) {
__journal_drop_transaction(journal, commit_transaction); __jbd2_journal_drop_transaction(journal, commit_transaction);
} else { } else {
if (journal->j_checkpoint_transactions == NULL) { if (journal->j_checkpoint_transactions == NULL) {
journal->j_checkpoint_transactions = commit_transaction; journal->j_checkpoint_transactions = commit_transaction;
......
此差异已折叠。
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#else #else
#include <linux/time.h> #include <linux/time.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/jbd.h> #include <linux/jbd2.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/slab.h> #include <linux/slab.h>
#endif #endif
...@@ -86,7 +86,7 @@ static int do_readahead(journal_t *journal, unsigned int start) ...@@ -86,7 +86,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
nbufs = 0; nbufs = 0;
for (next = start; next < max; next++) { for (next = start; next < max; next++) {
err = journal_bmap(journal, next, &blocknr); err = jbd2_journal_bmap(journal, next, &blocknr);
if (err) { if (err) {
printk (KERN_ERR "JBD: bad block at offset %u\n", printk (KERN_ERR "JBD: bad block at offset %u\n",
...@@ -142,7 +142,7 @@ static int jread(struct buffer_head **bhp, journal_t *journal, ...@@ -142,7 +142,7 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
return -EIO; return -EIO;
} }
err = journal_bmap(journal, offset, &blocknr); err = jbd2_journal_bmap(journal, offset, &blocknr);
if (err) { if (err) {
printk (KERN_ERR "JBD: bad block at offset %u\n", printk (KERN_ERR "JBD: bad block at offset %u\n",
...@@ -191,10 +191,10 @@ static int count_tags(struct buffer_head *bh, int size) ...@@ -191,10 +191,10 @@ static int count_tags(struct buffer_head *bh, int size)
nr++; nr++;
tagp += sizeof(journal_block_tag_t); tagp += sizeof(journal_block_tag_t);
if (!(tag->t_flags & cpu_to_be32(JFS_FLAG_SAME_UUID))) if (!(tag->t_flags & cpu_to_be32(JBD2_FLAG_SAME_UUID)))
tagp += 16; tagp += 16;
if (tag->t_flags & cpu_to_be32(JFS_FLAG_LAST_TAG)) if (tag->t_flags & cpu_to_be32(JBD2_FLAG_LAST_TAG))
break; break;
} }
...@@ -210,7 +210,7 @@ do { \ ...@@ -210,7 +210,7 @@ do { \
} while (0) } while (0)
/** /**
* journal_recover - recovers a on-disk journal * jbd2_journal_recover - recovers a on-disk journal
* @journal: the journal to recover * @journal: the journal to recover
* *
* The primary function for recovering the log contents when mounting a * The primary function for recovering the log contents when mounting a
...@@ -221,7 +221,7 @@ do { \ ...@@ -221,7 +221,7 @@ do { \
* blocks. In the third and final pass, we replay any un-revoked blocks * blocks. In the third and final pass, we replay any un-revoked blocks
* in the log. * in the log.
*/ */
int journal_recover(journal_t *journal) int jbd2_journal_recover(journal_t *journal)
{ {
int err; int err;
journal_superblock_t * sb; journal_superblock_t * sb;
...@@ -260,13 +260,13 @@ int journal_recover(journal_t *journal) ...@@ -260,13 +260,13 @@ int journal_recover(journal_t *journal)
* any existing commit records in the log. */ * any existing commit records in the log. */
journal->j_transaction_sequence = ++info.end_transaction; journal->j_transaction_sequence = ++info.end_transaction;
journal_clear_revoke(journal); jbd2_journal_clear_revoke(journal);
sync_blockdev(journal->j_fs_dev); sync_blockdev(journal->j_fs_dev);
return err; return err;
} }
/** /**
* journal_skip_recovery - Start journal and wipe exiting records * jbd2_journal_skip_recovery - Start journal and wipe exiting records
* @journal: journal to startup * @journal: journal to startup
* *
* Locate any valid recovery information from the journal and set up the * Locate any valid recovery information from the journal and set up the
...@@ -278,7 +278,7 @@ int journal_recover(journal_t *journal) ...@@ -278,7 +278,7 @@ int journal_recover(journal_t *journal)
* much recovery information is being erased, and to let us initialise * much recovery information is being erased, and to let us initialise
* the journal transaction sequence numbers to the next unused ID. * the journal transaction sequence numbers to the next unused ID.
*/ */
int journal_skip_recovery(journal_t *journal) int jbd2_journal_skip_recovery(journal_t *journal)
{ {
int err; int err;
journal_superblock_t * sb; journal_superblock_t * sb;
...@@ -387,7 +387,7 @@ static int do_one_pass(journal_t *journal, ...@@ -387,7 +387,7 @@ static int do_one_pass(journal_t *journal,
tmp = (journal_header_t *)bh->b_data; tmp = (journal_header_t *)bh->b_data;
if (tmp->h_magic != cpu_to_be32(JFS_MAGIC_NUMBER)) { if (tmp->h_magic != cpu_to_be32(JBD2_MAGIC_NUMBER)) {
brelse(bh); brelse(bh);
break; break;
} }
...@@ -407,7 +407,7 @@ static int do_one_pass(journal_t *journal, ...@@ -407,7 +407,7 @@ static int do_one_pass(journal_t *journal,
* to do with it? That depends on the pass... */ * to do with it? That depends on the pass... */
switch(blocktype) { switch(blocktype) {
case JFS_DESCRIPTOR_BLOCK: case JBD2_DESCRIPTOR_BLOCK:
/* If it is a valid descriptor block, replay it /* If it is a valid descriptor block, replay it
* in pass REPLAY; otherwise, just skip over the * in pass REPLAY; otherwise, just skip over the
* blocks it describes. */ * blocks it describes. */
...@@ -451,7 +451,7 @@ static int do_one_pass(journal_t *journal, ...@@ -451,7 +451,7 @@ static int do_one_pass(journal_t *journal,
/* If the block has been /* If the block has been
* revoked, then we're all done * revoked, then we're all done
* here. */ * here. */
if (journal_test_revoke if (jbd2_journal_test_revoke
(journal, blocknr, (journal, blocknr,
next_commit_ID)) { next_commit_ID)) {
brelse(obh); brelse(obh);
...@@ -477,9 +477,9 @@ static int do_one_pass(journal_t *journal, ...@@ -477,9 +477,9 @@ static int do_one_pass(journal_t *journal,
lock_buffer(nbh); lock_buffer(nbh);
memcpy(nbh->b_data, obh->b_data, memcpy(nbh->b_data, obh->b_data,
journal->j_blocksize); journal->j_blocksize);
if (flags & JFS_FLAG_ESCAPE) { if (flags & JBD2_FLAG_ESCAPE) {
*((__be32 *)bh->b_data) = *((__be32 *)bh->b_data) =
cpu_to_be32(JFS_MAGIC_NUMBER); cpu_to_be32(JBD2_MAGIC_NUMBER);
} }
BUFFER_TRACE(nbh, "marking dirty"); BUFFER_TRACE(nbh, "marking dirty");
...@@ -495,17 +495,17 @@ static int do_one_pass(journal_t *journal, ...@@ -495,17 +495,17 @@ static int do_one_pass(journal_t *journal,
skip_write: skip_write:
tagp += sizeof(journal_block_tag_t); tagp += sizeof(journal_block_tag_t);
if (!(flags & JFS_FLAG_SAME_UUID)) if (!(flags & JBD2_FLAG_SAME_UUID))
tagp += 16; tagp += 16;
if (flags & JFS_FLAG_LAST_TAG) if (flags & JBD2_FLAG_LAST_TAG)
break; break;
} }
brelse(bh); brelse(bh);
continue; continue;
case JFS_COMMIT_BLOCK: case JBD2_COMMIT_BLOCK:
/* Found an expected commit block: not much to /* Found an expected commit block: not much to
* do other than move on to the next sequence * do other than move on to the next sequence
* number. */ * number. */
...@@ -513,7 +513,7 @@ static int do_one_pass(journal_t *journal, ...@@ -513,7 +513,7 @@ static int do_one_pass(journal_t *journal,
next_commit_ID++; next_commit_ID++;
continue; continue;
case JFS_REVOKE_BLOCK: case JBD2_REVOKE_BLOCK:
/* If we aren't in the REVOKE pass, then we can /* If we aren't in the REVOKE pass, then we can
* just skip over this block. */ * just skip over this block. */
if (pass != PASS_REVOKE) { if (pass != PASS_REVOKE) {
...@@ -570,11 +570,11 @@ static int do_one_pass(journal_t *journal, ...@@ -570,11 +570,11 @@ static int do_one_pass(journal_t *journal,
static int scan_revoke_records(journal_t *journal, struct buffer_head *bh, static int scan_revoke_records(journal_t *journal, struct buffer_head *bh,
tid_t sequence, struct recovery_info *info) tid_t sequence, struct recovery_info *info)
{ {
journal_revoke_header_t *header; jbd2_journal_revoke_header_t *header;
int offset, max; int offset, max;
header = (journal_revoke_header_t *) bh->b_data; header = (jbd2_journal_revoke_header_t *) bh->b_data;
offset = sizeof(journal_revoke_header_t); offset = sizeof(jbd2_journal_revoke_header_t);
max = be32_to_cpu(header->r_count); max = be32_to_cpu(header->r_count);
while (offset < max) { while (offset < max) {
...@@ -583,7 +583,7 @@ static int scan_revoke_records(journal_t *journal, struct buffer_head *bh, ...@@ -583,7 +583,7 @@ static int scan_revoke_records(journal_t *journal, struct buffer_head *bh,
blocknr = be32_to_cpu(* ((__be32 *) (bh->b_data+offset))); blocknr = be32_to_cpu(* ((__be32 *) (bh->b_data+offset)));
offset += 4; offset += 4;
err = journal_set_revoke(journal, blocknr, sequence); err = jbd2_journal_set_revoke(journal, blocknr, sequence);
if (err) if (err)
return err; return err;
++info->nr_revokes; ++info->nr_revokes;
......
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
#else #else
#include <linux/time.h> #include <linux/time.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/jbd.h> #include <linux/jbd2.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/list.h> #include <linux/list.h>
...@@ -70,14 +70,14 @@ ...@@ -70,14 +70,14 @@
#include <linux/init.h> #include <linux/init.h>
#endif #endif
static kmem_cache_t *revoke_record_cache; static kmem_cache_t *jbd2_revoke_record_cache;
static kmem_cache_t *revoke_table_cache; static kmem_cache_t *jbd2_revoke_table_cache;
/* Each revoke record represents one single revoked block. During /* Each revoke record represents one single revoked block. During
journal replay, this involves recording the transaction ID of the journal replay, this involves recording the transaction ID of the
last transaction to revoke this block. */ last transaction to revoke this block. */
struct jbd_revoke_record_s struct jbd2_revoke_record_s
{ {
struct list_head hash; struct list_head hash;
tid_t sequence; /* Used for recovery only */ tid_t sequence; /* Used for recovery only */
...@@ -86,7 +86,7 @@ struct jbd_revoke_record_s ...@@ -86,7 +86,7 @@ struct jbd_revoke_record_s
/* The revoke table is just a simple hash table of revoke records. */ /* The revoke table is just a simple hash table of revoke records. */
struct jbd_revoke_table_s struct jbd2_revoke_table_s
{ {
/* It is conceivable that we might want a larger hash table /* It is conceivable that we might want a larger hash table
* for recovery. Must be a power of two. */ * for recovery. Must be a power of two. */
...@@ -99,7 +99,7 @@ struct jbd_revoke_table_s ...@@ -99,7 +99,7 @@ struct jbd_revoke_table_s
#ifdef __KERNEL__ #ifdef __KERNEL__
static void write_one_revoke_record(journal_t *, transaction_t *, static void write_one_revoke_record(journal_t *, transaction_t *,
struct journal_head **, int *, struct journal_head **, int *,
struct jbd_revoke_record_s *); struct jbd2_revoke_record_s *);
static void flush_descriptor(journal_t *, struct journal_head *, int); static void flush_descriptor(journal_t *, struct journal_head *, int);
#endif #endif
...@@ -108,7 +108,7 @@ static void flush_descriptor(journal_t *, struct journal_head *, int); ...@@ -108,7 +108,7 @@ static void flush_descriptor(journal_t *, struct journal_head *, int);
/* Borrowed from buffer.c: this is a tried and tested block hash function */ /* Borrowed from buffer.c: this is a tried and tested block hash function */
static inline int hash(journal_t *journal, unsigned long block) static inline int hash(journal_t *journal, unsigned long block)
{ {
struct jbd_revoke_table_s *table = journal->j_revoke; struct jbd2_revoke_table_s *table = journal->j_revoke;
int hash_shift = table->hash_shift; int hash_shift = table->hash_shift;
return ((block << (hash_shift - 6)) ^ return ((block << (hash_shift - 6)) ^
...@@ -120,10 +120,10 @@ static int insert_revoke_hash(journal_t *journal, unsigned long blocknr, ...@@ -120,10 +120,10 @@ static int insert_revoke_hash(journal_t *journal, unsigned long blocknr,
tid_t seq) tid_t seq)
{ {
struct list_head *hash_list; struct list_head *hash_list;
struct jbd_revoke_record_s *record; struct jbd2_revoke_record_s *record;
repeat: repeat:
record = kmem_cache_alloc(revoke_record_cache, GFP_NOFS); record = kmem_cache_alloc(jbd2_revoke_record_cache, GFP_NOFS);
if (!record) if (!record)
goto oom; goto oom;
...@@ -145,57 +145,57 @@ static int insert_revoke_hash(journal_t *journal, unsigned long blocknr, ...@@ -145,57 +145,57 @@ static int insert_revoke_hash(journal_t *journal, unsigned long blocknr,
/* Find a revoke record in the journal's hash table. */ /* Find a revoke record in the journal's hash table. */
static struct jbd_revoke_record_s *find_revoke_record(journal_t *journal, static struct jbd2_revoke_record_s *find_revoke_record(journal_t *journal,
unsigned long blocknr) unsigned long blocknr)
{ {
struct list_head *hash_list; struct list_head *hash_list;
struct jbd_revoke_record_s *record; struct jbd2_revoke_record_s *record;
hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)]; hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)];
spin_lock(&journal->j_revoke_lock); spin_lock(&journal->j_revoke_lock);
record = (struct jbd_revoke_record_s *) hash_list->next; record = (struct jbd2_revoke_record_s *) hash_list->next;
while (&(record->hash) != hash_list) { while (&(record->hash) != hash_list) {
if (record->blocknr == blocknr) { if (record->blocknr == blocknr) {
spin_unlock(&journal->j_revoke_lock); spin_unlock(&journal->j_revoke_lock);
return record; return record;
} }
record = (struct jbd_revoke_record_s *) record->hash.next; record = (struct jbd2_revoke_record_s *) record->hash.next;
} }
spin_unlock(&journal->j_revoke_lock); spin_unlock(&journal->j_revoke_lock);
return NULL; return NULL;
} }
int __init journal_init_revoke_caches(void) int __init jbd2_journal_init_revoke_caches(void)
{ {
revoke_record_cache = kmem_cache_create("revoke_record", jbd2_revoke_record_cache = kmem_cache_create("revoke_record",
sizeof(struct jbd_revoke_record_s), sizeof(struct jbd2_revoke_record_s),
0, SLAB_HWCACHE_ALIGN, NULL, NULL); 0, SLAB_HWCACHE_ALIGN, NULL, NULL);
if (revoke_record_cache == 0) if (jbd2_revoke_record_cache == 0)
return -ENOMEM; return -ENOMEM;
revoke_table_cache = kmem_cache_create("revoke_table", jbd2_revoke_table_cache = kmem_cache_create("revoke_table",
sizeof(struct jbd_revoke_table_s), sizeof(struct jbd2_revoke_table_s),
0, 0, NULL, NULL); 0, 0, NULL, NULL);
if (revoke_table_cache == 0) { if (jbd2_revoke_table_cache == 0) {
kmem_cache_destroy(revoke_record_cache); kmem_cache_destroy(jbd2_revoke_record_cache);
revoke_record_cache = NULL; jbd2_revoke_record_cache = NULL;
return -ENOMEM; return -ENOMEM;
} }
return 0; return 0;
} }
void journal_destroy_revoke_caches(void) void jbd2_journal_destroy_revoke_caches(void)
{ {
kmem_cache_destroy(revoke_record_cache); kmem_cache_destroy(jbd2_revoke_record_cache);
revoke_record_cache = NULL; jbd2_revoke_record_cache = NULL;
kmem_cache_destroy(revoke_table_cache); kmem_cache_destroy(jbd2_revoke_table_cache);
revoke_table_cache = NULL; jbd2_revoke_table_cache = NULL;
} }
/* Initialise the revoke table for a given journal to a given size. */ /* Initialise the revoke table for a given journal to a given size. */
int journal_init_revoke(journal_t *journal, int hash_size) int jbd2_journal_init_revoke(journal_t *journal, int hash_size)
{ {
int shift, tmp; int shift, tmp;
...@@ -206,7 +206,7 @@ int journal_init_revoke(journal_t *journal, int hash_size) ...@@ -206,7 +206,7 @@ int journal_init_revoke(journal_t *journal, int hash_size)
while((tmp >>= 1UL) != 0UL) while((tmp >>= 1UL) != 0UL)
shift++; shift++;
journal->j_revoke_table[0] = kmem_cache_alloc(revoke_table_cache, GFP_KERNEL); journal->j_revoke_table[0] = kmem_cache_alloc(jbd2_revoke_table_cache, GFP_KERNEL);
if (!journal->j_revoke_table[0]) if (!journal->j_revoke_table[0])
return -ENOMEM; return -ENOMEM;
journal->j_revoke = journal->j_revoke_table[0]; journal->j_revoke = journal->j_revoke_table[0];
...@@ -221,7 +221,7 @@ int journal_init_revoke(journal_t *journal, int hash_size) ...@@ -221,7 +221,7 @@ int journal_init_revoke(journal_t *journal, int hash_size)
journal->j_revoke->hash_table = journal->j_revoke->hash_table =
kmalloc(hash_size * sizeof(struct list_head), GFP_KERNEL); kmalloc(hash_size * sizeof(struct list_head), GFP_KERNEL);
if (!journal->j_revoke->hash_table) { if (!journal->j_revoke->hash_table) {
kmem_cache_free(revoke_table_cache, journal->j_revoke_table[0]); kmem_cache_free(jbd2_revoke_table_cache, journal->j_revoke_table[0]);
journal->j_revoke = NULL; journal->j_revoke = NULL;
return -ENOMEM; return -ENOMEM;
} }
...@@ -229,10 +229,10 @@ int journal_init_revoke(journal_t *journal, int hash_size) ...@@ -229,10 +229,10 @@ int journal_init_revoke(journal_t *journal, int hash_size)
for (tmp = 0; tmp < hash_size; tmp++) for (tmp = 0; tmp < hash_size; tmp++)
INIT_LIST_HEAD(&journal->j_revoke->hash_table[tmp]); INIT_LIST_HEAD(&journal->j_revoke->hash_table[tmp]);
journal->j_revoke_table[1] = kmem_cache_alloc(revoke_table_cache, GFP_KERNEL); journal->j_revoke_table[1] = kmem_cache_alloc(jbd2_revoke_table_cache, GFP_KERNEL);
if (!journal->j_revoke_table[1]) { if (!journal->j_revoke_table[1]) {
kfree(journal->j_revoke_table[0]->hash_table); kfree(journal->j_revoke_table[0]->hash_table);
kmem_cache_free(revoke_table_cache, journal->j_revoke_table[0]); kmem_cache_free(jbd2_revoke_table_cache, journal->j_revoke_table[0]);
return -ENOMEM; return -ENOMEM;
} }
...@@ -249,8 +249,8 @@ int journal_init_revoke(journal_t *journal, int hash_size) ...@@ -249,8 +249,8 @@ int journal_init_revoke(journal_t *journal, int hash_size)
kmalloc(hash_size * sizeof(struct list_head), GFP_KERNEL); kmalloc(hash_size * sizeof(struct list_head), GFP_KERNEL);
if (!journal->j_revoke->hash_table) { if (!journal->j_revoke->hash_table) {
kfree(journal->j_revoke_table[0]->hash_table); kfree(journal->j_revoke_table[0]->hash_table);
kmem_cache_free(revoke_table_cache, journal->j_revoke_table[0]); kmem_cache_free(jbd2_revoke_table_cache, journal->j_revoke_table[0]);
kmem_cache_free(revoke_table_cache, journal->j_revoke_table[1]); kmem_cache_free(jbd2_revoke_table_cache, journal->j_revoke_table[1]);
journal->j_revoke = NULL; journal->j_revoke = NULL;
return -ENOMEM; return -ENOMEM;
} }
...@@ -265,9 +265,9 @@ int journal_init_revoke(journal_t *journal, int hash_size) ...@@ -265,9 +265,9 @@ int journal_init_revoke(journal_t *journal, int hash_size)
/* Destoy a journal's revoke table. The table must already be empty! */ /* Destoy a journal's revoke table. The table must already be empty! */
void journal_destroy_revoke(journal_t *journal) void jbd2_journal_destroy_revoke(journal_t *journal)
{ {
struct jbd_revoke_table_s *table; struct jbd2_revoke_table_s *table;
struct list_head *hash_list; struct list_head *hash_list;
int i; int i;
...@@ -281,7 +281,7 @@ void journal_destroy_revoke(journal_t *journal) ...@@ -281,7 +281,7 @@ void journal_destroy_revoke(journal_t *journal)
} }
kfree(table->hash_table); kfree(table->hash_table);
kmem_cache_free(revoke_table_cache, table); kmem_cache_free(jbd2_revoke_table_cache, table);
journal->j_revoke = NULL; journal->j_revoke = NULL;
table = journal->j_revoke_table[1]; table = journal->j_revoke_table[1];
...@@ -294,7 +294,7 @@ void journal_destroy_revoke(journal_t *journal) ...@@ -294,7 +294,7 @@ void journal_destroy_revoke(journal_t *journal)
} }
kfree(table->hash_table); kfree(table->hash_table);
kmem_cache_free(revoke_table_cache, table); kmem_cache_free(jbd2_revoke_table_cache, table);
journal->j_revoke = NULL; journal->j_revoke = NULL;
} }
...@@ -302,7 +302,7 @@ void journal_destroy_revoke(journal_t *journal) ...@@ -302,7 +302,7 @@ void journal_destroy_revoke(journal_t *journal)
#ifdef __KERNEL__ #ifdef __KERNEL__
/* /*
* journal_revoke: revoke a given buffer_head from the journal. This * jbd2_journal_revoke: revoke a given buffer_head from the journal. This
* prevents the block from being replayed during recovery if we take a * prevents the block from being replayed during recovery if we take a
* crash after this current transaction commits. Any subsequent * crash after this current transaction commits. Any subsequent
* metadata writes of the buffer in this transaction cancel the * metadata writes of the buffer in this transaction cancel the
...@@ -314,18 +314,18 @@ void journal_destroy_revoke(journal_t *journal) ...@@ -314,18 +314,18 @@ void journal_destroy_revoke(journal_t *journal)
* revoke before clearing the block bitmap when we are deleting * revoke before clearing the block bitmap when we are deleting
* metadata. * metadata.
* *
* Revoke performs a journal_forget on any buffer_head passed in as a * Revoke performs a jbd2_journal_forget on any buffer_head passed in as a
* parameter, but does _not_ forget the buffer_head if the bh was only * parameter, but does _not_ forget the buffer_head if the bh was only
* found implicitly. * found implicitly.
* *
* bh_in may not be a journalled buffer - it may have come off * bh_in may not be a journalled buffer - it may have come off
* the hash tables without an attached journal_head. * the hash tables without an attached journal_head.
* *
* If bh_in is non-zero, journal_revoke() will decrement its b_count * If bh_in is non-zero, jbd2_journal_revoke() will decrement its b_count
* by one. * by one.
*/ */
int journal_revoke(handle_t *handle, unsigned long blocknr, int jbd2_journal_revoke(handle_t *handle, unsigned long blocknr,
struct buffer_head *bh_in) struct buffer_head *bh_in)
{ {
struct buffer_head *bh = NULL; struct buffer_head *bh = NULL;
...@@ -338,7 +338,7 @@ int journal_revoke(handle_t *handle, unsigned long blocknr, ...@@ -338,7 +338,7 @@ int journal_revoke(handle_t *handle, unsigned long blocknr,
BUFFER_TRACE(bh_in, "enter"); BUFFER_TRACE(bh_in, "enter");
journal = handle->h_transaction->t_journal; journal = handle->h_transaction->t_journal;
if (!journal_set_features(journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)){ if (!jbd2_journal_set_features(journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)){
J_ASSERT (!"Cannot set revoke feature!"); J_ASSERT (!"Cannot set revoke feature!");
return -EINVAL; return -EINVAL;
} }
...@@ -386,8 +386,8 @@ int journal_revoke(handle_t *handle, unsigned long blocknr, ...@@ -386,8 +386,8 @@ int journal_revoke(handle_t *handle, unsigned long blocknr,
set_buffer_revoked(bh); set_buffer_revoked(bh);
set_buffer_revokevalid(bh); set_buffer_revokevalid(bh);
if (bh_in) { if (bh_in) {
BUFFER_TRACE(bh_in, "call journal_forget"); BUFFER_TRACE(bh_in, "call jbd2_journal_forget");
journal_forget(handle, bh_in); jbd2_journal_forget(handle, bh_in);
} else { } else {
BUFFER_TRACE(bh, "call brelse"); BUFFER_TRACE(bh, "call brelse");
__brelse(bh); __brelse(bh);
...@@ -403,7 +403,7 @@ int journal_revoke(handle_t *handle, unsigned long blocknr, ...@@ -403,7 +403,7 @@ int journal_revoke(handle_t *handle, unsigned long blocknr,
/* /*
* Cancel an outstanding revoke. For use only internally by the * Cancel an outstanding revoke. For use only internally by the
* journaling code (called from journal_get_write_access). * journaling code (called from jbd2_journal_get_write_access).
* *
* We trust buffer_revoked() on the buffer if the buffer is already * We trust buffer_revoked() on the buffer if the buffer is already
* being journaled: if there is no revoke pending on the buffer, then we * being journaled: if there is no revoke pending on the buffer, then we
...@@ -418,9 +418,9 @@ int journal_revoke(handle_t *handle, unsigned long blocknr, ...@@ -418,9 +418,9 @@ int journal_revoke(handle_t *handle, unsigned long blocknr,
* *
* The caller must have the journal locked. * The caller must have the journal locked.
*/ */
int journal_cancel_revoke(handle_t *handle, struct journal_head *jh) int jbd2_journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
{ {
struct jbd_revoke_record_s *record; struct jbd2_revoke_record_s *record;
journal_t *journal = handle->h_transaction->t_journal; journal_t *journal = handle->h_transaction->t_journal;
int need_cancel; int need_cancel;
int did_revoke = 0; /* akpm: debug */ int did_revoke = 0; /* akpm: debug */
...@@ -447,7 +447,7 @@ int journal_cancel_revoke(handle_t *handle, struct journal_head *jh) ...@@ -447,7 +447,7 @@ int journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
spin_lock(&journal->j_revoke_lock); spin_lock(&journal->j_revoke_lock);
list_del(&record->hash); list_del(&record->hash);
spin_unlock(&journal->j_revoke_lock); spin_unlock(&journal->j_revoke_lock);
kmem_cache_free(revoke_record_cache, record); kmem_cache_free(jbd2_revoke_record_cache, record);
did_revoke = 1; did_revoke = 1;
} }
} }
...@@ -478,7 +478,7 @@ int journal_cancel_revoke(handle_t *handle, struct journal_head *jh) ...@@ -478,7 +478,7 @@ int journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
* we do not want to suspend any processing until all revokes are * we do not want to suspend any processing until all revokes are
* written -bzzz * written -bzzz
*/ */
void journal_switch_revoke_table(journal_t *journal) void jbd2_journal_switch_revoke_table(journal_t *journal)
{ {
int i; int i;
...@@ -498,12 +498,12 @@ void journal_switch_revoke_table(journal_t *journal) ...@@ -498,12 +498,12 @@ void journal_switch_revoke_table(journal_t *journal)
* Called with the journal lock held. * Called with the journal lock held.
*/ */
void journal_write_revoke_records(journal_t *journal, void jbd2_journal_write_revoke_records(journal_t *journal,
transaction_t *transaction) transaction_t *transaction)
{ {
struct journal_head *descriptor; struct journal_head *descriptor;
struct jbd_revoke_record_s *record; struct jbd2_revoke_record_s *record;
struct jbd_revoke_table_s *revoke; struct jbd2_revoke_table_s *revoke;
struct list_head *hash_list; struct list_head *hash_list;
int i, offset, count; int i, offset, count;
...@@ -519,14 +519,14 @@ void journal_write_revoke_records(journal_t *journal, ...@@ -519,14 +519,14 @@ void journal_write_revoke_records(journal_t *journal,
hash_list = &revoke->hash_table[i]; hash_list = &revoke->hash_table[i];
while (!list_empty(hash_list)) { while (!list_empty(hash_list)) {
record = (struct jbd_revoke_record_s *) record = (struct jbd2_revoke_record_s *)
hash_list->next; hash_list->next;
write_one_revoke_record(journal, transaction, write_one_revoke_record(journal, transaction,
&descriptor, &offset, &descriptor, &offset,
record); record);
count++; count++;
list_del(&record->hash); list_del(&record->hash);
kmem_cache_free(revoke_record_cache, record); kmem_cache_free(jbd2_revoke_record_cache, record);
} }
} }
if (descriptor) if (descriptor)
...@@ -543,7 +543,7 @@ static void write_one_revoke_record(journal_t *journal, ...@@ -543,7 +543,7 @@ static void write_one_revoke_record(journal_t *journal,
transaction_t *transaction, transaction_t *transaction,
struct journal_head **descriptorp, struct journal_head **descriptorp,
int *offsetp, int *offsetp,
struct jbd_revoke_record_s *record) struct jbd2_revoke_record_s *record)
{ {
struct journal_head *descriptor; struct journal_head *descriptor;
int offset; int offset;
...@@ -551,7 +551,7 @@ static void write_one_revoke_record(journal_t *journal, ...@@ -551,7 +551,7 @@ static void write_one_revoke_record(journal_t *journal,
/* If we are already aborting, this all becomes a noop. We /* If we are already aborting, this all becomes a noop. We
still need to go round the loop in still need to go round the loop in
journal_write_revoke_records in order to free all of the jbd2_journal_write_revoke_records in order to free all of the
revoke records: only the IO to the journal is omitted. */ revoke records: only the IO to the journal is omitted. */
if (is_journal_aborted(journal)) if (is_journal_aborted(journal))
return; return;
...@@ -568,19 +568,19 @@ static void write_one_revoke_record(journal_t *journal, ...@@ -568,19 +568,19 @@ static void write_one_revoke_record(journal_t *journal,
} }
if (!descriptor) { if (!descriptor) {
descriptor = journal_get_descriptor_buffer(journal); descriptor = jbd2_journal_get_descriptor_buffer(journal);
if (!descriptor) if (!descriptor)
return; return;
header = (journal_header_t *) &jh2bh(descriptor)->b_data[0]; header = (journal_header_t *) &jh2bh(descriptor)->b_data[0];
header->h_magic = cpu_to_be32(JFS_MAGIC_NUMBER); header->h_magic = cpu_to_be32(JBD2_MAGIC_NUMBER);
header->h_blocktype = cpu_to_be32(JFS_REVOKE_BLOCK); header->h_blocktype = cpu_to_be32(JBD2_REVOKE_BLOCK);
header->h_sequence = cpu_to_be32(transaction->t_tid); header->h_sequence = cpu_to_be32(transaction->t_tid);
/* Record it so that we can wait for IO completion later */ /* Record it so that we can wait for IO completion later */
JBUFFER_TRACE(descriptor, "file as BJ_LogCtl"); JBUFFER_TRACE(descriptor, "file as BJ_LogCtl");
journal_file_buffer(descriptor, transaction, BJ_LogCtl); jbd2_journal_file_buffer(descriptor, transaction, BJ_LogCtl);
offset = sizeof(journal_revoke_header_t); offset = sizeof(jbd2_journal_revoke_header_t);
*descriptorp = descriptor; *descriptorp = descriptor;
} }
...@@ -601,7 +601,7 @@ static void flush_descriptor(journal_t *journal, ...@@ -601,7 +601,7 @@ static void flush_descriptor(journal_t *journal,
struct journal_head *descriptor, struct journal_head *descriptor,
int offset) int offset)
{ {
journal_revoke_header_t *header; jbd2_journal_revoke_header_t *header;
struct buffer_head *bh = jh2bh(descriptor); struct buffer_head *bh = jh2bh(descriptor);
if (is_journal_aborted(journal)) { if (is_journal_aborted(journal)) {
...@@ -609,7 +609,7 @@ static void flush_descriptor(journal_t *journal, ...@@ -609,7 +609,7 @@ static void flush_descriptor(journal_t *journal,
return; return;
} }
header = (journal_revoke_header_t *) jh2bh(descriptor)->b_data; header = (jbd2_journal_revoke_header_t *) jh2bh(descriptor)->b_data;
header->r_count = cpu_to_be32(offset); header->r_count = cpu_to_be32(offset);
set_buffer_jwrite(bh); set_buffer_jwrite(bh);
BUFFER_TRACE(bh, "write"); BUFFER_TRACE(bh, "write");
...@@ -640,11 +640,11 @@ static void flush_descriptor(journal_t *journal, ...@@ -640,11 +640,11 @@ static void flush_descriptor(journal_t *journal,
* single block. * single block.
*/ */
int journal_set_revoke(journal_t *journal, int jbd2_journal_set_revoke(journal_t *journal,
unsigned long blocknr, unsigned long blocknr,
tid_t sequence) tid_t sequence)
{ {
struct jbd_revoke_record_s *record; struct jbd2_revoke_record_s *record;
record = find_revoke_record(journal, blocknr); record = find_revoke_record(journal, blocknr);
if (record) { if (record) {
...@@ -664,11 +664,11 @@ int journal_set_revoke(journal_t *journal, ...@@ -664,11 +664,11 @@ int journal_set_revoke(journal_t *journal,
* ones, but later transactions still need replayed. * ones, but later transactions still need replayed.
*/ */
int journal_test_revoke(journal_t *journal, int jbd2_journal_test_revoke(journal_t *journal,
unsigned long blocknr, unsigned long blocknr,
tid_t sequence) tid_t sequence)
{ {
struct jbd_revoke_record_s *record; struct jbd2_revoke_record_s *record;
record = find_revoke_record(journal, blocknr); record = find_revoke_record(journal, blocknr);
if (!record) if (!record)
...@@ -683,21 +683,21 @@ int journal_test_revoke(journal_t *journal, ...@@ -683,21 +683,21 @@ int journal_test_revoke(journal_t *journal,
* that it can be reused by the running filesystem. * that it can be reused by the running filesystem.
*/ */
void journal_clear_revoke(journal_t *journal) void jbd2_journal_clear_revoke(journal_t *journal)
{ {
int i; int i;
struct list_head *hash_list; struct list_head *hash_list;
struct jbd_revoke_record_s *record; struct jbd2_revoke_record_s *record;
struct jbd_revoke_table_s *revoke; struct jbd2_revoke_table_s *revoke;
revoke = journal->j_revoke; revoke = journal->j_revoke;
for (i = 0; i < revoke->hash_size; i++) { for (i = 0; i < revoke->hash_size; i++) {
hash_list = &revoke->hash_table[i]; hash_list = &revoke->hash_table[i];
while (!list_empty(hash_list)) { while (!list_empty(hash_list)) {
record = (struct jbd_revoke_record_s*) hash_list->next; record = (struct jbd2_revoke_record_s*) hash_list->next;
list_del(&record->hash); list_del(&record->hash);
kmem_cache_free(revoke_record_cache, record); kmem_cache_free(jbd2_revoke_record_cache, record);
} }
} }
} }
此差异已折叠。
/* /*
* linux/include/linux/ext4_jbd.h * linux/include/linux/ext4_jbd2.h
* *
* Written by Stephen C. Tweedie <sct@redhat.com>, 1999 * Written by Stephen C. Tweedie <sct@redhat.com>, 1999
* *
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#define _LINUX_EXT4_JBD_H #define _LINUX_EXT4_JBD_H
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/jbd.h> #include <linux/jbd2.h>
#include <linux/ext4_fs.h> #include <linux/ext4_fs.h>
#define EXT4_JOURNAL(inode) (EXT4_SB((inode)->i_sb)->s_journal) #define EXT4_JOURNAL(inode) (EXT4_SB((inode)->i_sb)->s_journal)
...@@ -116,7 +116,7 @@ static inline int ...@@ -116,7 +116,7 @@ static inline int
__ext4_journal_get_undo_access(const char *where, handle_t *handle, __ext4_journal_get_undo_access(const char *where, handle_t *handle,
struct buffer_head *bh) struct buffer_head *bh)
{ {
int err = journal_get_undo_access(handle, bh); int err = jbd2_journal_get_undo_access(handle, bh);
if (err) if (err)
ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err); ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err);
return err; return err;
...@@ -126,7 +126,7 @@ static inline int ...@@ -126,7 +126,7 @@ static inline int
__ext4_journal_get_write_access(const char *where, handle_t *handle, __ext4_journal_get_write_access(const char *where, handle_t *handle,
struct buffer_head *bh) struct buffer_head *bh)
{ {
int err = journal_get_write_access(handle, bh); int err = jbd2_journal_get_write_access(handle, bh);
if (err) if (err)
ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err); ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err);
return err; return err;
...@@ -135,13 +135,13 @@ __ext4_journal_get_write_access(const char *where, handle_t *handle, ...@@ -135,13 +135,13 @@ __ext4_journal_get_write_access(const char *where, handle_t *handle,
static inline void static inline void
ext4_journal_release_buffer(handle_t *handle, struct buffer_head *bh) ext4_journal_release_buffer(handle_t *handle, struct buffer_head *bh)
{ {
journal_release_buffer(handle, bh); jbd2_journal_release_buffer(handle, bh);
} }
static inline int static inline int
__ext4_journal_forget(const char *where, handle_t *handle, struct buffer_head *bh) __ext4_journal_forget(const char *where, handle_t *handle, struct buffer_head *bh)
{ {
int err = journal_forget(handle, bh); int err = jbd2_journal_forget(handle, bh);
if (err) if (err)
ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err); ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err);
return err; return err;
...@@ -151,7 +151,7 @@ static inline int ...@@ -151,7 +151,7 @@ static inline int
__ext4_journal_revoke(const char *where, handle_t *handle, __ext4_journal_revoke(const char *where, handle_t *handle,
unsigned long blocknr, struct buffer_head *bh) unsigned long blocknr, struct buffer_head *bh)
{ {
int err = journal_revoke(handle, blocknr, bh); int err = jbd2_journal_revoke(handle, blocknr, bh);
if (err) if (err)
ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err); ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err);
return err; return err;
...@@ -161,7 +161,7 @@ static inline int ...@@ -161,7 +161,7 @@ static inline int
__ext4_journal_get_create_access(const char *where, __ext4_journal_get_create_access(const char *where,
handle_t *handle, struct buffer_head *bh) handle_t *handle, struct buffer_head *bh)
{ {
int err = journal_get_create_access(handle, bh); int err = jbd2_journal_get_create_access(handle, bh);
if (err) if (err)
ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err); ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err);
return err; return err;
...@@ -171,7 +171,7 @@ static inline int ...@@ -171,7 +171,7 @@ static inline int
__ext4_journal_dirty_metadata(const char *where, __ext4_journal_dirty_metadata(const char *where,
handle_t *handle, struct buffer_head *bh) handle_t *handle, struct buffer_head *bh)
{ {
int err = journal_dirty_metadata(handle, bh); int err = jbd2_journal_dirty_metadata(handle, bh);
if (err) if (err)
ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err); ext4_journal_abort_handle(where, __FUNCTION__, bh, handle,err);
return err; return err;
...@@ -211,22 +211,22 @@ static inline handle_t *ext4_journal_current_handle(void) ...@@ -211,22 +211,22 @@ static inline handle_t *ext4_journal_current_handle(void)
static inline int ext4_journal_extend(handle_t *handle, int nblocks) static inline int ext4_journal_extend(handle_t *handle, int nblocks)
{ {
return journal_extend(handle, nblocks); return jbd2_journal_extend(handle, nblocks);
} }
static inline int ext4_journal_restart(handle_t *handle, int nblocks) static inline int ext4_journal_restart(handle_t *handle, int nblocks)
{ {
return journal_restart(handle, nblocks); return jbd2_journal_restart(handle, nblocks);
} }
static inline int ext4_journal_blocks_per_page(struct inode *inode) static inline int ext4_journal_blocks_per_page(struct inode *inode)
{ {
return journal_blocks_per_page(inode); return jbd2_journal_blocks_per_page(inode);
} }
static inline int ext4_journal_force_commit(journal_t *journal) static inline int ext4_journal_force_commit(journal_t *journal)
{ {
return journal_force_commit(journal); return jbd2_journal_force_commit(journal);
} }
/* super.c */ /* super.c */
......
/* /*
* linux/include/linux/jbd.h * linux/include/linux/jbd2.h
* *
* Written by Stephen C. Tweedie <sct@redhat.com> * Written by Stephen C. Tweedie <sct@redhat.com>
* *
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
/* Allow this file to be included directly into e2fsprogs */ /* Allow this file to be included directly into e2fsprogs */
#ifndef __KERNEL__ #ifndef __KERNEL__
#include "jfs_compat.h" #include "jfs_compat.h"
#define JFS_DEBUG #define JBD2_DEBUG
#define jfs_debug jbd_debug #define jfs_debug jbd_debug
#else #else
...@@ -57,11 +57,11 @@ ...@@ -57,11 +57,11 @@
* CONFIG_JBD_DEBUG is on. * CONFIG_JBD_DEBUG is on.
*/ */
#define JBD_EXPENSIVE_CHECKING #define JBD_EXPENSIVE_CHECKING
extern int journal_enable_debug; extern int jbd2_journal_enable_debug;
#define jbd_debug(n, f, a...) \ #define jbd_debug(n, f, a...) \
do { \ do { \
if ((n) <= journal_enable_debug) { \ if ((n) <= jbd2_journal_enable_debug) { \
printk (KERN_DEBUG "(%s, %d): %s: ", \ printk (KERN_DEBUG "(%s, %d): %s: ", \
__FILE__, __LINE__, __FUNCTION__); \ __FILE__, __LINE__, __FUNCTION__); \
printk (f, ## a); \ printk (f, ## a); \
...@@ -71,16 +71,16 @@ extern int journal_enable_debug; ...@@ -71,16 +71,16 @@ extern int journal_enable_debug;
#define jbd_debug(f, a...) /**/ #define jbd_debug(f, a...) /**/
#endif #endif
extern void * __jbd_kmalloc (const char *where, size_t size, gfp_t flags, int retry); extern void * __jbd2_kmalloc (const char *where, size_t size, gfp_t flags, int retry);
extern void * jbd_slab_alloc(size_t size, gfp_t flags); extern void * jbd2_slab_alloc(size_t size, gfp_t flags);
extern void jbd_slab_free(void *ptr, size_t size); extern void jbd2_slab_free(void *ptr, size_t size);
#define jbd_kmalloc(size, flags) \ #define jbd_kmalloc(size, flags) \
__jbd_kmalloc(__FUNCTION__, (size), (flags), journal_oom_retry) __jbd2_kmalloc(__FUNCTION__, (size), (flags), journal_oom_retry)
#define jbd_rep_kmalloc(size, flags) \ #define jbd_rep_kmalloc(size, flags) \
__jbd_kmalloc(__FUNCTION__, (size), (flags), 1) __jbd2_kmalloc(__FUNCTION__, (size), (flags), 1)
#define JFS_MIN_JOURNAL_BLOCKS 1024 #define JBD2_MIN_JOURNAL_BLOCKS 1024
#ifdef __KERNEL__ #ifdef __KERNEL__
...@@ -122,7 +122,7 @@ typedef struct journal_s journal_t; /* Journal control structure */ ...@@ -122,7 +122,7 @@ typedef struct journal_s journal_t; /* Journal control structure */
* Internal structures used by the logging mechanism: * Internal structures used by the logging mechanism:
*/ */
#define JFS_MAGIC_NUMBER 0xc03b3998U /* The first 4 bytes of /dev/random! */ #define JBD2_MAGIC_NUMBER 0xc03b3998U /* The first 4 bytes of /dev/random! */
/* /*
* On-disk structures * On-disk structures
...@@ -132,11 +132,11 @@ typedef struct journal_s journal_t; /* Journal control structure */ ...@@ -132,11 +132,11 @@ typedef struct journal_s journal_t; /* Journal control structure */
* Descriptor block types: * Descriptor block types:
*/ */
#define JFS_DESCRIPTOR_BLOCK 1 #define JBD2_DESCRIPTOR_BLOCK 1
#define JFS_COMMIT_BLOCK 2 #define JBD2_COMMIT_BLOCK 2
#define JFS_SUPERBLOCK_V1 3 #define JBD2_SUPERBLOCK_V1 3
#define JFS_SUPERBLOCK_V2 4 #define JBD2_SUPERBLOCK_V2 4
#define JFS_REVOKE_BLOCK 5 #define JBD2_REVOKE_BLOCK 5
/* /*
* Standard header for all descriptor blocks: * Standard header for all descriptor blocks:
...@@ -162,18 +162,18 @@ typedef struct journal_block_tag_s ...@@ -162,18 +162,18 @@ typedef struct journal_block_tag_s
* The revoke descriptor: used on disk to describe a series of blocks to * The revoke descriptor: used on disk to describe a series of blocks to
* be revoked from the log * be revoked from the log
*/ */
typedef struct journal_revoke_header_s typedef struct jbd2_journal_revoke_header_s
{ {
journal_header_t r_header; journal_header_t r_header;
__be32 r_count; /* Count of bytes used in the block */ __be32 r_count; /* Count of bytes used in the block */
} journal_revoke_header_t; } jbd2_journal_revoke_header_t;
/* Definitions for the journal tag flags word: */ /* Definitions for the journal tag flags word: */
#define JFS_FLAG_ESCAPE 1 /* on-disk block is escaped */ #define JBD2_FLAG_ESCAPE 1 /* on-disk block is escaped */
#define JFS_FLAG_SAME_UUID 2 /* block has same uuid as previous */ #define JBD2_FLAG_SAME_UUID 2 /* block has same uuid as previous */
#define JFS_FLAG_DELETED 4 /* block deleted by this transaction */ #define JBD2_FLAG_DELETED 4 /* block deleted by this transaction */
#define JFS_FLAG_LAST_TAG 8 /* last tag in this descriptor block */ #define JBD2_FLAG_LAST_TAG 8 /* last tag in this descriptor block */
/* /*
...@@ -196,7 +196,7 @@ typedef struct journal_superblock_s ...@@ -196,7 +196,7 @@ typedef struct journal_superblock_s
__be32 s_start; /* blocknr of start of log */ __be32 s_start; /* blocknr of start of log */
/* 0x0020 */ /* 0x0020 */
/* Error value, as set by journal_abort(). */ /* Error value, as set by jbd2_journal_abort(). */
__be32 s_errno; __be32 s_errno;
/* 0x0024 */ /* 0x0024 */
...@@ -224,22 +224,22 @@ typedef struct journal_superblock_s ...@@ -224,22 +224,22 @@ typedef struct journal_superblock_s
/* 0x0400 */ /* 0x0400 */
} journal_superblock_t; } journal_superblock_t;
#define JFS_HAS_COMPAT_FEATURE(j,mask) \ #define JBD2_HAS_COMPAT_FEATURE(j,mask) \
((j)->j_format_version >= 2 && \ ((j)->j_format_version >= 2 && \
((j)->j_superblock->s_feature_compat & cpu_to_be32((mask)))) ((j)->j_superblock->s_feature_compat & cpu_to_be32((mask))))
#define JFS_HAS_RO_COMPAT_FEATURE(j,mask) \ #define JBD2_HAS_RO_COMPAT_FEATURE(j,mask) \
((j)->j_format_version >= 2 && \ ((j)->j_format_version >= 2 && \
((j)->j_superblock->s_feature_ro_compat & cpu_to_be32((mask)))) ((j)->j_superblock->s_feature_ro_compat & cpu_to_be32((mask))))
#define JFS_HAS_INCOMPAT_FEATURE(j,mask) \ #define JBD2_HAS_INCOMPAT_FEATURE(j,mask) \
((j)->j_format_version >= 2 && \ ((j)->j_format_version >= 2 && \
((j)->j_superblock->s_feature_incompat & cpu_to_be32((mask)))) ((j)->j_superblock->s_feature_incompat & cpu_to_be32((mask))))
#define JFS_FEATURE_INCOMPAT_REVOKE 0x00000001 #define JBD2_FEATURE_INCOMPAT_REVOKE 0x00000001
/* Features known to this kernel version: */ /* Features known to this kernel version: */
#define JFS_KNOWN_COMPAT_FEATURES 0 #define JBD2_KNOWN_COMPAT_FEATURES 0
#define JFS_KNOWN_ROCOMPAT_FEATURES 0 #define JBD2_KNOWN_ROCOMPAT_FEATURES 0
#define JFS_KNOWN_INCOMPAT_FEATURES JFS_FEATURE_INCOMPAT_REVOKE #define JBD2_KNOWN_INCOMPAT_FEATURES JBD2_FEATURE_INCOMPAT_REVOKE
#ifdef __KERNEL__ #ifdef __KERNEL__
...@@ -359,7 +359,7 @@ static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) ...@@ -359,7 +359,7 @@ static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh)
bit_spin_unlock(BH_JournalHead, &bh->b_state); bit_spin_unlock(BH_JournalHead, &bh->b_state);
} }
struct jbd_revoke_table_s; struct jbd2_revoke_table_s;
/** /**
* struct handle_s - The handle_s type is the concrete type associated with * struct handle_s - The handle_s type is the concrete type associated with
...@@ -445,7 +445,7 @@ struct transaction_s ...@@ -445,7 +445,7 @@ struct transaction_s
/* /*
* Transaction's current state * Transaction's current state
* [no locking - only kjournald alters this] * [no locking - only kjournald2 alters this]
* FIXME: needs barriers * FIXME: needs barriers
* KLUDGE: [use j_state_lock] * KLUDGE: [use j_state_lock]
*/ */
...@@ -621,7 +621,7 @@ struct transaction_s ...@@ -621,7 +621,7 @@ struct transaction_s
* @j_revoke: The revoke table - maintains the list of revoked blocks in the * @j_revoke: The revoke table - maintains the list of revoked blocks in the
* current transaction. * current transaction.
* @j_revoke_table: alternate revoke tables for j_revoke * @j_revoke_table: alternate revoke tables for j_revoke
* @j_wbuf: array of buffer_heads for journal_commit_transaction * @j_wbuf: array of buffer_heads for jbd2_journal_commit_transaction
* @j_wbufsize: maximum number of buffer_heads allowed in j_wbuf, the * @j_wbufsize: maximum number of buffer_heads allowed in j_wbuf, the
* number that will fit in j_blocksize * number that will fit in j_blocksize
* @j_last_sync_writer: most recent pid which did a synchronous write * @j_last_sync_writer: most recent pid which did a synchronous write
...@@ -805,11 +805,11 @@ struct journal_s ...@@ -805,11 +805,11 @@ struct journal_s
* current transaction. [j_revoke_lock] * current transaction. [j_revoke_lock]
*/ */
spinlock_t j_revoke_lock; spinlock_t j_revoke_lock;
struct jbd_revoke_table_s *j_revoke; struct jbd2_revoke_table_s *j_revoke;
struct jbd_revoke_table_s *j_revoke_table[2]; struct jbd2_revoke_table_s *j_revoke_table[2];
/* /*
* array of bhs for journal_commit_transaction * array of bhs for jbd2_journal_commit_transaction
*/ */
struct buffer_head **j_wbuf; struct buffer_head **j_wbuf;
int j_wbufsize; int j_wbufsize;
...@@ -826,12 +826,12 @@ struct journal_s ...@@ -826,12 +826,12 @@ struct journal_s
/* /*
* Journal flag definitions * Journal flag definitions
*/ */
#define JFS_UNMOUNT 0x001 /* Journal thread is being destroyed */ #define JBD2_UNMOUNT 0x001 /* Journal thread is being destroyed */
#define JFS_ABORT 0x002 /* Journaling has been aborted for errors. */ #define JBD2_ABORT 0x002 /* Journaling has been aborted for errors. */
#define JFS_ACK_ERR 0x004 /* The errno in the sb has been acked */ #define JBD2_ACK_ERR 0x004 /* The errno in the sb has been acked */
#define JFS_FLUSHED 0x008 /* The journal superblock has been flushed */ #define JBD2_FLUSHED 0x008 /* The journal superblock has been flushed */
#define JFS_LOADED 0x010 /* The journal superblock has been loaded */ #define JBD2_LOADED 0x010 /* The journal superblock has been loaded */
#define JFS_BARRIER 0x020 /* Use IDE barriers */ #define JBD2_BARRIER 0x020 /* Use IDE barriers */
/* /*
* Function declarations for the journaling transaction and buffer * Function declarations for the journaling transaction and buffer
...@@ -839,31 +839,31 @@ struct journal_s ...@@ -839,31 +839,31 @@ struct journal_s
*/ */
/* Filing buffers */ /* Filing buffers */
extern void __journal_temp_unlink_buffer(struct journal_head *jh); extern void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh);
extern void journal_unfile_buffer(journal_t *, struct journal_head *); extern void jbd2_journal_unfile_buffer(journal_t *, struct journal_head *);
extern void __journal_unfile_buffer(struct journal_head *); extern void __jbd2_journal_unfile_buffer(struct journal_head *);
extern void __journal_refile_buffer(struct journal_head *); extern void __jbd2_journal_refile_buffer(struct journal_head *);
extern void journal_refile_buffer(journal_t *, struct journal_head *); extern void jbd2_journal_refile_buffer(journal_t *, struct journal_head *);
extern void __journal_file_buffer(struct journal_head *, transaction_t *, int); extern void __jbd2_journal_file_buffer(struct journal_head *, transaction_t *, int);
extern void __journal_free_buffer(struct journal_head *bh); extern void __journal_free_buffer(struct journal_head *bh);
extern void journal_file_buffer(struct journal_head *, transaction_t *, int); extern void jbd2_journal_file_buffer(struct journal_head *, transaction_t *, int);
extern void __journal_clean_data_list(transaction_t *transaction); extern void __journal_clean_data_list(transaction_t *transaction);
/* Log buffer allocation */ /* Log buffer allocation */
extern struct journal_head * journal_get_descriptor_buffer(journal_t *); extern struct journal_head * jbd2_journal_get_descriptor_buffer(journal_t *);
int journal_next_log_block(journal_t *, unsigned long *); int jbd2_journal_next_log_block(journal_t *, unsigned long *);
/* Commit management */ /* Commit management */
extern void journal_commit_transaction(journal_t *); extern void jbd2_journal_commit_transaction(journal_t *);
/* Checkpoint list management */ /* Checkpoint list management */
int __journal_clean_checkpoint_list(journal_t *journal); int __jbd2_journal_clean_checkpoint_list(journal_t *journal);
int __journal_remove_checkpoint(struct journal_head *); int __jbd2_journal_remove_checkpoint(struct journal_head *);
void __journal_insert_checkpoint(struct journal_head *, transaction_t *); void __jbd2_journal_insert_checkpoint(struct journal_head *, transaction_t *);
/* Buffer IO */ /* Buffer IO */
extern int extern int
journal_write_metadata_buffer(transaction_t *transaction, jbd2_journal_write_metadata_buffer(transaction_t *transaction,
struct journal_head *jh_in, struct journal_head *jh_in,
struct journal_head **jh_out, struct journal_head **jh_out,
unsigned long blocknr); unsigned long blocknr);
...@@ -893,91 +893,91 @@ static inline handle_t *journal_current_handle(void) ...@@ -893,91 +893,91 @@ static inline handle_t *journal_current_handle(void)
* Register buffer modifications against the current transaction. * Register buffer modifications against the current transaction.
*/ */
extern handle_t *journal_start(journal_t *, int nblocks); extern handle_t *jbd2_journal_start(journal_t *, int nblocks);
extern int journal_restart (handle_t *, int nblocks); extern int jbd2_journal_restart (handle_t *, int nblocks);
extern int journal_extend (handle_t *, int nblocks); extern int jbd2_journal_extend (handle_t *, int nblocks);
extern int journal_get_write_access(handle_t *, struct buffer_head *); extern int jbd2_journal_get_write_access(handle_t *, struct buffer_head *);
extern int journal_get_create_access (handle_t *, struct buffer_head *); extern int jbd2_journal_get_create_access (handle_t *, struct buffer_head *);
extern int journal_get_undo_access(handle_t *, struct buffer_head *); extern int jbd2_journal_get_undo_access(handle_t *, struct buffer_head *);
extern int journal_dirty_data (handle_t *, struct buffer_head *); extern int jbd2_journal_dirty_data (handle_t *, struct buffer_head *);
extern int journal_dirty_metadata (handle_t *, struct buffer_head *); extern int jbd2_journal_dirty_metadata (handle_t *, struct buffer_head *);
extern void journal_release_buffer (handle_t *, struct buffer_head *); extern void jbd2_journal_release_buffer (handle_t *, struct buffer_head *);
extern int journal_forget (handle_t *, struct buffer_head *); extern int jbd2_journal_forget (handle_t *, struct buffer_head *);
extern void journal_sync_buffer (struct buffer_head *); extern void journal_sync_buffer (struct buffer_head *);
extern void journal_invalidatepage(journal_t *, extern void jbd2_journal_invalidatepage(journal_t *,
struct page *, unsigned long); struct page *, unsigned long);
extern int journal_try_to_free_buffers(journal_t *, struct page *, gfp_t); extern int jbd2_journal_try_to_free_buffers(journal_t *, struct page *, gfp_t);
extern int journal_stop(handle_t *); extern int jbd2_journal_stop(handle_t *);
extern int journal_flush (journal_t *); extern int jbd2_journal_flush (journal_t *);
extern void journal_lock_updates (journal_t *); extern void jbd2_journal_lock_updates (journal_t *);
extern void journal_unlock_updates (journal_t *); extern void jbd2_journal_unlock_updates (journal_t *);
extern journal_t * journal_init_dev(struct block_device *bdev, extern journal_t * jbd2_journal_init_dev(struct block_device *bdev,
struct block_device *fs_dev, struct block_device *fs_dev,
int start, int len, int bsize); int start, int len, int bsize);
extern journal_t * journal_init_inode (struct inode *); extern journal_t * jbd2_journal_init_inode (struct inode *);
extern int journal_update_format (journal_t *); extern int jbd2_journal_update_format (journal_t *);
extern int journal_check_used_features extern int jbd2_journal_check_used_features
(journal_t *, unsigned long, unsigned long, unsigned long); (journal_t *, unsigned long, unsigned long, unsigned long);
extern int journal_check_available_features extern int jbd2_journal_check_available_features
(journal_t *, unsigned long, unsigned long, unsigned long); (journal_t *, unsigned long, unsigned long, unsigned long);
extern int journal_set_features extern int jbd2_journal_set_features
(journal_t *, unsigned long, unsigned long, unsigned long); (journal_t *, unsigned long, unsigned long, unsigned long);
extern int journal_create (journal_t *); extern int jbd2_journal_create (journal_t *);
extern int journal_load (journal_t *journal); extern int jbd2_journal_load (journal_t *journal);
extern void journal_destroy (journal_t *); extern void jbd2_journal_destroy (journal_t *);
extern int journal_recover (journal_t *journal); extern int jbd2_journal_recover (journal_t *journal);
extern int journal_wipe (journal_t *, int); extern int jbd2_journal_wipe (journal_t *, int);
extern int journal_skip_recovery (journal_t *); extern int jbd2_journal_skip_recovery (journal_t *);
extern void journal_update_superblock (journal_t *, int); extern void jbd2_journal_update_superblock (journal_t *, int);
extern void __journal_abort_hard (journal_t *); extern void __jbd2_journal_abort_hard (journal_t *);
extern void journal_abort (journal_t *, int); extern void jbd2_journal_abort (journal_t *, int);
extern int journal_errno (journal_t *); extern int jbd2_journal_errno (journal_t *);
extern void journal_ack_err (journal_t *); extern void jbd2_journal_ack_err (journal_t *);
extern int journal_clear_err (journal_t *); extern int jbd2_journal_clear_err (journal_t *);
extern int journal_bmap(journal_t *, unsigned long, unsigned long *); extern int jbd2_journal_bmap(journal_t *, unsigned long, unsigned long *);
extern int journal_force_commit(journal_t *); extern int jbd2_journal_force_commit(journal_t *);
/* /*
* journal_head management * journal_head management
*/ */
struct journal_head *journal_add_journal_head(struct buffer_head *bh); struct journal_head *jbd2_journal_add_journal_head(struct buffer_head *bh);
struct journal_head *journal_grab_journal_head(struct buffer_head *bh); struct journal_head *jbd2_journal_grab_journal_head(struct buffer_head *bh);
void journal_remove_journal_head(struct buffer_head *bh); void jbd2_journal_remove_journal_head(struct buffer_head *bh);
void journal_put_journal_head(struct journal_head *jh); void jbd2_journal_put_journal_head(struct journal_head *jh);
/* /*
* handle management * handle management
*/ */
extern kmem_cache_t *jbd_handle_cache; extern kmem_cache_t *jbd2_handle_cache;
static inline handle_t *jbd_alloc_handle(gfp_t gfp_flags) static inline handle_t *jbd_alloc_handle(gfp_t gfp_flags)
{ {
return kmem_cache_alloc(jbd_handle_cache, gfp_flags); return kmem_cache_alloc(jbd2_handle_cache, gfp_flags);
} }
static inline void jbd_free_handle(handle_t *handle) static inline void jbd_free_handle(handle_t *handle)
{ {
kmem_cache_free(jbd_handle_cache, handle); kmem_cache_free(jbd2_handle_cache, handle);
} }
/* Primary revoke support */ /* Primary revoke support */
#define JOURNAL_REVOKE_DEFAULT_HASH 256 #define JOURNAL_REVOKE_DEFAULT_HASH 256
extern int journal_init_revoke(journal_t *, int); extern int jbd2_journal_init_revoke(journal_t *, int);
extern void journal_destroy_revoke_caches(void); extern void jbd2_journal_destroy_revoke_caches(void);
extern int journal_init_revoke_caches(void); extern int jbd2_journal_init_revoke_caches(void);
extern void journal_destroy_revoke(journal_t *); extern void jbd2_journal_destroy_revoke(journal_t *);
extern int journal_revoke (handle_t *, extern int jbd2_journal_revoke (handle_t *,
unsigned long, struct buffer_head *); unsigned long, struct buffer_head *);
extern int journal_cancel_revoke(handle_t *, struct journal_head *); extern int jbd2_journal_cancel_revoke(handle_t *, struct journal_head *);
extern void journal_write_revoke_records(journal_t *, transaction_t *); extern void jbd2_journal_write_revoke_records(journal_t *, transaction_t *);
/* Recovery revoke support */ /* Recovery revoke support */
extern int journal_set_revoke(journal_t *, unsigned long, tid_t); extern int jbd2_journal_set_revoke(journal_t *, unsigned long, tid_t);
extern int journal_test_revoke(journal_t *, unsigned long, tid_t); extern int jbd2_journal_test_revoke(journal_t *, unsigned long, tid_t);
extern void journal_clear_revoke(journal_t *); extern void jbd2_journal_clear_revoke(journal_t *);
extern void journal_switch_revoke_table(journal_t *journal); extern void jbd2_journal_switch_revoke_table(journal_t *journal);
/* /*
* The log thread user interface: * The log thread user interface:
...@@ -986,17 +986,17 @@ extern void journal_switch_revoke_table(journal_t *journal); ...@@ -986,17 +986,17 @@ extern void journal_switch_revoke_table(journal_t *journal);
* transitions on demand. * transitions on demand.
*/ */
int __log_space_left(journal_t *); /* Called with journal locked */ int __jbd2_log_space_left(journal_t *); /* Called with journal locked */
int log_start_commit(journal_t *journal, tid_t tid); int jbd2_log_start_commit(journal_t *journal, tid_t tid);
int __log_start_commit(journal_t *journal, tid_t tid); int __jbd2_log_start_commit(journal_t *journal, tid_t tid);
int journal_start_commit(journal_t *journal, tid_t *tid); int jbd2_journal_start_commit(journal_t *journal, tid_t *tid);
int journal_force_commit_nested(journal_t *journal); int jbd2_journal_force_commit_nested(journal_t *journal);
int log_wait_commit(journal_t *journal, tid_t tid); int jbd2_log_wait_commit(journal_t *journal, tid_t tid);
int log_do_checkpoint(journal_t *journal); int jbd2_log_do_checkpoint(journal_t *journal);
void __log_wait_for_space(journal_t *journal); void __jbd2_log_wait_for_space(journal_t *journal);
extern void __journal_drop_transaction(journal_t *, transaction_t *); extern void __jbd2_journal_drop_transaction(journal_t *, transaction_t *);
extern int cleanup_journal_tail(journal_t *); extern int jbd2_cleanup_journal_tail(journal_t *);
/* Debugging code only: */ /* Debugging code only: */
...@@ -1010,7 +1010,7 @@ do { \ ...@@ -1010,7 +1010,7 @@ do { \
/* /*
* is_journal_abort * is_journal_abort
* *
* Simple test wrapper function to test the JFS_ABORT state flag. This * Simple test wrapper function to test the JBD2_ABORT state flag. This
* bit, when set, indicates that we have had a fatal error somewhere, * bit, when set, indicates that we have had a fatal error somewhere,
* either inside the journaling layer or indicated to us by the client * either inside the journaling layer or indicated to us by the client
* (eg. ext3), and that we and should not commit any further * (eg. ext3), and that we and should not commit any further
...@@ -1019,7 +1019,7 @@ do { \ ...@@ -1019,7 +1019,7 @@ do { \
static inline int is_journal_aborted(journal_t *journal) static inline int is_journal_aborted(journal_t *journal)
{ {
return journal->j_flags & JFS_ABORT; return journal->j_flags & JBD2_ABORT;
} }
static inline int is_handle_aborted(handle_t *handle) static inline int is_handle_aborted(handle_t *handle)
...@@ -1029,7 +1029,7 @@ static inline int is_handle_aborted(handle_t *handle) ...@@ -1029,7 +1029,7 @@ static inline int is_handle_aborted(handle_t *handle)
return is_journal_aborted(handle->h_transaction->t_journal); return is_journal_aborted(handle->h_transaction->t_journal);
} }
static inline void journal_abort_handle(handle_t *handle) static inline void jbd2_journal_abort_handle(handle_t *handle)
{ {
handle->h_aborted = 1; handle->h_aborted = 1;
} }
...@@ -1051,7 +1051,7 @@ static inline int tid_geq(tid_t x, tid_t y) ...@@ -1051,7 +1051,7 @@ static inline int tid_geq(tid_t x, tid_t y)
return (difference >= 0); return (difference >= 0);
} }
extern int journal_blocks_per_page(struct inode *inode); extern int jbd2_journal_blocks_per_page(struct inode *inode);
/* /*
* Return the minimum number of blocks which must be free in the journal * Return the minimum number of blocks which must be free in the journal
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册