mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge branch 'next' into upstream-merge
Conflicts: fs/ext4/inode.c fs/ext4/mballoc.c include/trace/events/ext4.h
This commit is contained in:
commit
a107e5a3a4
33 changed files with 2510 additions and 1131 deletions
|
|
@ -299,6 +299,16 @@ static int __process_buffer(journal_t *journal, struct journal_head *jh,
|
|||
transaction->t_chp_stats.cs_forced_to_close++;
|
||||
spin_unlock(&journal->j_list_lock);
|
||||
jbd_unlock_bh_state(bh);
|
||||
if (unlikely(journal->j_flags & JBD2_UNMOUNT))
|
||||
/*
|
||||
* The journal thread is dead; so starting and
|
||||
* waiting for a commit to finish will cause
|
||||
* us to wait for a _very_ long time.
|
||||
*/
|
||||
printk(KERN_ERR "JBD2: %s: "
|
||||
"Waiting for Godot: block %llu\n",
|
||||
journal->j_devname,
|
||||
(unsigned long long) bh->b_blocknr);
|
||||
jbd2_log_start_commit(journal, tid);
|
||||
jbd2_log_wait_commit(journal, tid);
|
||||
ret = 1;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,9 @@
|
|||
#include <linux/backing-dev.h>
|
||||
#include <linux/bio.h>
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <trace/events/jbd2.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
/*
|
||||
* Default IO end handler for temporary BJ_IO buffer_heads.
|
||||
|
|
@ -201,7 +203,7 @@ static int journal_submit_data_buffers(journal_t *journal,
|
|||
spin_lock(&journal->j_list_lock);
|
||||
list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) {
|
||||
mapping = jinode->i_vfs_inode->i_mapping;
|
||||
jinode->i_flags |= JI_COMMIT_RUNNING;
|
||||
set_bit(__JI_COMMIT_RUNNING, &jinode->i_flags);
|
||||
spin_unlock(&journal->j_list_lock);
|
||||
/*
|
||||
* submit the inode data buffers. We use writepage
|
||||
|
|
@ -216,7 +218,8 @@ static int journal_submit_data_buffers(journal_t *journal,
|
|||
spin_lock(&journal->j_list_lock);
|
||||
J_ASSERT(jinode->i_transaction == commit_transaction);
|
||||
commit_transaction->t_flushed_data_blocks = 1;
|
||||
jinode->i_flags &= ~JI_COMMIT_RUNNING;
|
||||
clear_bit(__JI_COMMIT_RUNNING, &jinode->i_flags);
|
||||
smp_mb__after_clear_bit();
|
||||
wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING);
|
||||
}
|
||||
spin_unlock(&journal->j_list_lock);
|
||||
|
|
@ -237,7 +240,7 @@ static int journal_finish_inode_data_buffers(journal_t *journal,
|
|||
/* For locking, see the comment in journal_submit_data_buffers() */
|
||||
spin_lock(&journal->j_list_lock);
|
||||
list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) {
|
||||
jinode->i_flags |= JI_COMMIT_RUNNING;
|
||||
set_bit(__JI_COMMIT_RUNNING, &jinode->i_flags);
|
||||
spin_unlock(&journal->j_list_lock);
|
||||
err = filemap_fdatawait(jinode->i_vfs_inode->i_mapping);
|
||||
if (err) {
|
||||
|
|
@ -253,7 +256,8 @@ static int journal_finish_inode_data_buffers(journal_t *journal,
|
|||
ret = err;
|
||||
}
|
||||
spin_lock(&journal->j_list_lock);
|
||||
jinode->i_flags &= ~JI_COMMIT_RUNNING;
|
||||
clear_bit(__JI_COMMIT_RUNNING, &jinode->i_flags);
|
||||
smp_mb__after_clear_bit();
|
||||
wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,12 +42,14 @@
|
|||
#include <linux/log2.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/backing-dev.h>
|
||||
#include <linux/bitops.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/jbd2.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
EXPORT_SYMBOL(jbd2_journal_extend);
|
||||
EXPORT_SYMBOL(jbd2_journal_stop);
|
||||
|
|
@ -2210,7 +2212,7 @@ void jbd2_journal_release_jbd_inode(journal_t *journal,
|
|||
restart:
|
||||
spin_lock(&journal->j_list_lock);
|
||||
/* Is commit writing out inode - we have to wait */
|
||||
if (jinode->i_flags & JI_COMMIT_RUNNING) {
|
||||
if (test_bit(__JI_COMMIT_RUNNING, &jinode->i_flags)) {
|
||||
wait_queue_head_t *wq;
|
||||
DEFINE_WAIT_BIT(wait, &jinode->i_flags, __JI_COMMIT_RUNNING);
|
||||
wq = bit_waitqueue(&jinode->i_flags, __JI_COMMIT_RUNNING);
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@ alloc_transaction:
|
|||
*/
|
||||
repeat:
|
||||
read_lock(&journal->j_state_lock);
|
||||
BUG_ON(journal->j_flags & JBD2_UNMOUNT);
|
||||
if (is_journal_aborted(journal) ||
|
||||
(journal->j_errno != 0 && !(journal->j_flags & JBD2_ACK_ERR))) {
|
||||
read_unlock(&journal->j_state_lock);
|
||||
|
|
|
|||
Loading…
Reference in a new issue