diff options
author | Mark Fasheh <mark.fasheh@oracle.com> | 2007-12-03 19:43:01 -0500 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2007-12-17 13:51:23 -0500 |
commit | e8aed3450c0afd6fdb79ec233f806e3e69454dfe (patch) | |
tree | aa83824230c1b0c58fe9ec68d007c35f42b90fa7 /fs/ocfs2/journal.c | |
parent | 0879c584ffcccd50a8d0f72cab3a51702613f901 (diff) |
ocfs2: Re-journal buffers after transaction extend
ocfs2_extend_trans() might call journal_restart() which will commit dirty
buffers and then restart the transaction. This means that any buffers which
still need changes should be passed to journal_access() again. Some paths
during extend weren't doing this right.
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2/journal.c')
-rw-r--r-- | fs/ocfs2/journal.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index 0e1250c2ef44..8d81f6c1b877 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c | |||
@@ -174,6 +174,12 @@ int ocfs2_commit_trans(struct ocfs2_super *osb, | |||
174 | * transaction. extend_trans will either extend the current handle by | 174 | * transaction. extend_trans will either extend the current handle by |
175 | * nblocks, or commit it and start a new one with nblocks credits. | 175 | * nblocks, or commit it and start a new one with nblocks credits. |
176 | * | 176 | * |
177 | * This might call journal_restart() which will commit dirty buffers | ||
178 | * and then restart the transaction. Before calling | ||
179 | * ocfs2_extend_trans(), any changed blocks should have been | ||
180 | * dirtied. After calling it, all blocks which need to be changed must | ||
181 | * go through another set of journal_access/journal_dirty calls. | ||
182 | * | ||
177 | * WARNING: This will not release any semaphores or disk locks taken | 183 | * WARNING: This will not release any semaphores or disk locks taken |
178 | * during the transaction, so make sure they were taken *before* | 184 | * during the transaction, so make sure they were taken *before* |
179 | * start_trans or we'll have ordering deadlocks. | 185 | * start_trans or we'll have ordering deadlocks. |