diff options
author | Maciej Żenczykowski <zenczykowski@gmail.com> | 2010-09-26 12:38:28 +0000 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2011-01-06 11:52:14 +0100 |
commit | 31d710a7bd42f0d89e30d53bdaad427c5f191d0d (patch) | |
tree | 8f0d6e4786c8c0d58c39843a57119aef0015c55d /fs/ext3/super.c | |
parent | 3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5 (diff) | |
download | lwn-31d710a7bd42f0d89e30d53bdaad427c5f191d0d.tar.gz lwn-31d710a7bd42f0d89e30d53bdaad427c5f191d0d.zip |
ext3: don't update sb journal_devnum when RO dev
An ext3 filesystem on a read-only device, with an external journal
which is at a different device number then recorded in the superblock
will fail to honor the read-only setting of the device and trigger
a superblock update (write).
For example:
- ext3 on a software raid which is in read-only mode
- external journal on a read-write device which has changed device num
- attempt to mount with -o journal_dev=<new_number>
- hits BUG_ON(mddev->ro = 1) in md.c
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Maciej Żenczykowski <zenczykowski@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/ext3/super.c')
-rw-r--r-- | fs/ext3/super.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ext3/super.c b/fs/ext3/super.c index acf8695fa8f0..04169318e6ba 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c @@ -2290,7 +2290,7 @@ static int ext3_load_journal(struct super_block *sb, EXT3_SB(sb)->s_journal = journal; ext3_clear_journal_err(sb, es); - if (journal_devnum && + if (!really_read_only && journal_devnum && journal_devnum != le32_to_cpu(es->s_journal_dev)) { es->s_journal_dev = cpu_to_le32(journal_devnum); |