]> git.karo-electronics.de Git - karo-tx-linux.git/commit
reiserfs: properly honor read-only devices
authorJeff Mahoney <jeffm@suse.com>
Tue, 23 Mar 2010 20:35:39 +0000 (13:35 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 13 Aug 2010 20:20:19 +0000 (13:20 -0700)
commitee0f79ddf59966d514dae5b6c9fcfca0aec46492
treef805244b8ac8eff0bd3cb1cc048220d3d10b506b
parent670a13a74e34d9fff0cd03df73d8a2b77f7decb7
reiserfs: properly honor read-only devices

commit 3f8b5ee33293d43ca360771b535dfae8c57259dc upstream.

The reiserfs journal behaves inconsistently when determining whether to
allow a mount of a read-only device.

This is due to the use of the continue_replay variable to short circuit
the journal scanning.  If it's set, it's assumed that there are
transactions to replay, but there may not be.  If it's unset, it's assumed
that there aren't any, and that may not be the case either.

I've observed two failure cases:
1) Where a clean file system on a read-only device refuses to mount
2) Where a clean file system on a read-only device passes the
   optimization and then tries writing the journal header to update
   the latest mount id.

The former is easily observable by using a freshly created file system on
a read-only loopback device.

This patch moves the check into journal_read_transaction, where it can
bail out before it's about to replay a transaction.  That way it can go
through and skip transactions where appropriate, yet still refuse to mount
a file system with outstanding transactions.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/reiserfs/journal.c