| From 8263746e63ecdc586b2d0c969d905dd78645fa6f Mon Sep 17 00:00:00 2001 |
| From: Theodore Ts'o <tytso@mit.edu> |
| Date: Wed, 9 Sep 2009 21:32:41 -0400 |
| Subject: [PATCH 22/85] ext4: Use bforget() in no journal mode for ext4_journal_{forget,revoke}() |
| |
| (cherry picked from commit c7acb4c16646943180bd221c167a077e0a084f9c) |
| |
| When ext4 is using a journal, a metadata block which is deallocated |
| must be passed into the journal layer so it can be dropped from the |
| current transaction and/or revoked. This is done by calling the |
| functions ext4_journal_forget() and ext4_journal_revoke(), which call |
| jbd2_journal_forget(), and jbd2_journal_revoke(), respectively. |
| |
| Since the jbd2_journal_forget() and jbd2_journal_revoke() call |
| bforget(), if ext4 is not using a journal, ext4_journal_forget() and |
| ext4_journal_revoke() must call bforget() to avoid a dirty metadata |
| block overwriting a block after it has been reallocated and reused for |
| another inode's data block. |
| |
| Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| fs/ext4/ext4_jbd2.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/fs/ext4/ext4_jbd2.c |
| +++ b/fs/ext4/ext4_jbd2.c |
| @@ -44,7 +44,7 @@ int __ext4_journal_forget(const char *wh |
| handle, err); |
| } |
| else |
| - brelse(bh); |
| + bforget(bh); |
| return err; |
| } |
| |
| @@ -60,7 +60,7 @@ int __ext4_journal_revoke(const char *wh |
| handle, err); |
| } |
| else |
| - brelse(bh); |
| + bforget(bh); |
| return err; |
| } |
| |