From: Jan Kara Date: Wed, 15 Aug 2012 11:50:27 +0000 (+0200) Subject: jbd: don't write superblock when unmounting an ro filesystem X-Git-Tag: upstream/snapshot3+hdmi~6775^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2e84f2641ea91a730642ead558a4ee3bd52310c9;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git jbd: don't write superblock when unmounting an ro filesystem This sequence: results in an IO error when unmounting the RO filesystem. The bug was introduced by: commit 9754e39c7bc51328f145e933bfb0df47cd67b6e9 Author: Jan Kara Date: Sat Apr 7 12:33:03 2012 +0200 jbd: Split updating of journal superblock and marking journal empty which lost some of the magic in journal_update_superblock() which used to test for a journal with no outstanding transactions. This is a port of a jbd2 fix by Eric Sandeen. CC: # 3.4.x Signed-off-by: Jan Kara --- diff --git a/fs/jbd/journal.c b/fs/jbd/journal.c index 0935750..a286233 100644 --- a/fs/jbd/journal.c +++ b/fs/jbd/journal.c @@ -1113,6 +1113,11 @@ static void mark_journal_empty(journal_t *journal) BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex)); spin_lock(&journal->j_state_lock); + /* Is it already empty? */ + if (sb->s_start == 0) { + spin_unlock(&journal->j_state_lock); + return; + } jbd_debug(1, "JBD: Marking journal as empty (seq %d)\n", journal->j_tail_sequence);