diff options
| author | Theodore Ts'o <tytso@mit.edu> | 2010-10-27 23:44:47 -0400 |
|---|---|---|
| committer | Theodore Ts'o <tytso@mit.edu> | 2010-10-27 23:44:47 -0400 |
| commit | a107e5a3a473a2ea62bd5af24e11b84adf1486ff (patch) | |
| tree | d36c2cb38d8be88d4d75cdebc354aa140aa0e470 /fs/jbd2/commit.c | |
| parent | e3e1288e86a07cdeb0aee5860a2dff111c6eff79 (diff) | |
| parent | a269029d0e2192046be4c07ed78a45022469ee4c (diff) | |
Merge branch 'next' into upstream-merge
Conflicts:
fs/ext4/inode.c
fs/ext4/mballoc.c
include/trace/events/ext4.h
Diffstat (limited to 'fs/jbd2/commit.c')
| -rw-r--r-- | fs/jbd2/commit.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index bc6be8bda1cc..f3ad1598b201 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c | |||
| @@ -26,7 +26,9 @@ | |||
| 26 | #include <linux/backing-dev.h> | 26 | #include <linux/backing-dev.h> |
| 27 | #include <linux/bio.h> | 27 | #include <linux/bio.h> |
| 28 | #include <linux/blkdev.h> | 28 | #include <linux/blkdev.h> |
| 29 | #include <linux/bitops.h> | ||
| 29 | #include <trace/events/jbd2.h> | 30 | #include <trace/events/jbd2.h> |
| 31 | #include <asm/system.h> | ||
| 30 | 32 | ||
| 31 | /* | 33 | /* |
| 32 | * Default IO end handler for temporary BJ_IO buffer_heads. | 34 | * Default IO end handler for temporary BJ_IO buffer_heads. |
| @@ -201,7 +203,7 @@ static int journal_submit_data_buffers(journal_t *journal, | |||
| 201 | spin_lock(&journal->j_list_lock); | 203 | spin_lock(&journal->j_list_lock); |
| 202 | list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) { | 204 | list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) { |
| 203 | mapping = jinode->i_vfs_inode->i_mapping; | 205 | mapping = jinode->i_vfs_inode->i_mapping; |
| 204 | jinode->i_flags |= JI_COMMIT_RUNNING; | 206 | set_bit(__JI_COMMIT_RUNNING, &jinode->i_flags); |
| 205 | spin_unlock(&journal->j_list_lock); | 207 | spin_unlock(&journal->j_list_lock); |
| 206 | /* | 208 | /* |
| 207 | * submit the inode data buffers. We use writepage | 209 | * submit the inode data buffers. We use writepage |
| @@ -216,7 +218,8 @@ static int journal_submit_data_buffers(journal_t *journal, | |||
| 216 | spin_lock(&journal->j_list_lock); | 218 | spin_lock(&journal->j_list_lock); |
| 217 | J_ASSERT(jinode->i_transaction == commit_transaction); | 219 | J_ASSERT(jinode->i_transaction == commit_transaction); |
| 218 | commit_transaction->t_flushed_data_blocks = 1; | 220 | commit_transaction->t_flushed_data_blocks = 1; |
| 219 | jinode->i_flags &= ~JI_COMMIT_RUNNING; | 221 | clear_bit(__JI_COMMIT_RUNNING, &jinode->i_flags); |
| 222 | smp_mb__after_clear_bit(); | ||
| 220 | wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING); | 223 | wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING); |
| 221 | } | 224 | } |
| 222 | spin_unlock(&journal->j_list_lock); | 225 | spin_unlock(&journal->j_list_lock); |
| @@ -237,7 +240,7 @@ static int journal_finish_inode_data_buffers(journal_t *journal, | |||
| 237 | /* For locking, see the comment in journal_submit_data_buffers() */ | 240 | /* For locking, see the comment in journal_submit_data_buffers() */ |
| 238 | spin_lock(&journal->j_list_lock); | 241 | spin_lock(&journal->j_list_lock); |
| 239 | list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) { | 242 | list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) { |
| 240 | jinode->i_flags |= JI_COMMIT_RUNNING; | 243 | set_bit(__JI_COMMIT_RUNNING, &jinode->i_flags); |
| 241 | spin_unlock(&journal->j_list_lock); | 244 | spin_unlock(&journal->j_list_lock); |
| 242 | err = filemap_fdatawait(jinode->i_vfs_inode->i_mapping); | 245 | err = filemap_fdatawait(jinode->i_vfs_inode->i_mapping); |
| 243 | if (err) { | 246 | if (err) { |
| @@ -253,7 +256,8 @@ static int journal_finish_inode_data_buffers(journal_t *journal, | |||
| 253 | ret = err; | 256 | ret = err; |
| 254 | } | 257 | } |
| 255 | spin_lock(&journal->j_list_lock); | 258 | spin_lock(&journal->j_list_lock); |
| 256 | jinode->i_flags &= ~JI_COMMIT_RUNNING; | 259 | clear_bit(__JI_COMMIT_RUNNING, &jinode->i_flags); |
| 260 | smp_mb__after_clear_bit(); | ||
| 257 | wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING); | 261 | wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING); |
| 258 | } | 262 | } |
| 259 | 263 | ||
