• Theodore Ts'o's avatar
    jbd2: call __jbd2_log_start_commit with j_state_lock write locked · e4471831
    Theodore Ts'o authored
    On an SMP ARM system running ext4, I've received a report that the
    first J_ASSERT in jbd2_journal_commit_transaction has been triggering:
    
    	J_ASSERT(journal->j_running_transaction != NULL);
    
    While investigating possible causes for this problem, I noticed that
    __jbd2_log_start_commit() is getting called with j_state_lock only
    read-locked, in spite of the fact that it's possible for it might
    j_commit_request.  Fix this by grabbing the necessary information so
    we can test to see if we need to start a new transaction before
    dropping the read lock, and then calling jbd2_log_start_commit() which
    will grab the write lock.
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    e4471831
journal.c 66.2 KB