lkml.org 
[lkml]   [2013]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 112/221] ext4: do not try to write superblock on ro remount w/o journal
    Date
    3.7-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Michael Tokarev <mjt@tls.msk.ru>

    commit d096ad0f79a782935d2e06ae8fb235e8c5397775 upstream.

    When a journal-less ext4 filesystem is mounted on a read-only block
    device (blockdev --setro will do), each remount (for other, unrelated,
    flags, like suid=>nosuid etc) results in a series of scary messages
    from kernel telling about I/O errors on the device.

    This is becauese of the following code ext4_remount():

    if (sbi->s_journal == NULL)
    ext4_commit_super(sb, 1);

    at the end of remount procedure, which forces writing (flushing) of
    a superblock regardless whenever it is dirty or not, if the filesystem
    is readonly or not, and whenever the device itself is readonly or not.

    We only need call ext4_commit_super when the file system had been
    previously mounted read/write.

    Thanks to Eric Sandeen for help in diagnosing this issue.

    Signed-off-By: Michael Tokarev <mjt@tls.msk.ru>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/ext4/super.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/fs/ext4/super.c
    +++ b/fs/ext4/super.c
    @@ -4729,7 +4729,7 @@ static int ext4_remount(struct super_blo
    }

    ext4_setup_system_zone(sb);
    - if (sbi->s_journal == NULL)
    + if (sbi->s_journal == NULL && !(old_sb_flags & MS_RDONLY))
    ext4_commit_super(sb, 1);

    #ifdef CONFIG_QUOTA



    \
     
     \ /
      Last update: 2013-01-16 02:21    [W:3.148 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site