• Jeff Mahoney's avatar
    reiserfs: properly honor read-only devices · 3f8b5ee3
    Jeff Mahoney authored
    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: default avatarJeff Mahoney <jeffm@suse.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    3f8b5ee3
journal.c 124 KB