• Chao Yu's avatar
    f2fs: fix to check readonly condition correctly · d78dfefc
    Chao Yu authored
    With below case, it can mount multi-device image w/ rw option, however
    one of secondary device is set as ro, later update will cause panic, so
    let's introduce f2fs_dev_is_readonly(), and check multi-devices rw status
    in f2fs_remount() w/ it in order to avoid such inconsistent mount status.
    
    mkfs.f2fs -c /dev/zram1 /dev/zram0 -f
    blockdev --setro /dev/zram1
    mount -t f2fs dev/zram0 /mnt/f2fs
    mount: /mnt/f2fs: WARNING: source write-protected, mounted read-only.
    mount -t f2fs -o remount,rw mnt/f2fs
    dd if=/dev/zero  of=/mnt/f2fs/file bs=1M count=8192
    
    kernel BUG at fs/f2fs/inline.c:258!
    RIP: 0010:f2fs_write_inline_data+0x23e/0x2d0 [f2fs]
    Call Trace:
      f2fs_write_single_data_page+0x26b/0x9f0 [f2fs]
      f2fs_write_cache_pages+0x389/0xa60 [f2fs]
      __f2fs_write_data_pages+0x26b/0x2d0 [f2fs]
      f2fs_write_data_pages+0x2e/0x40 [f2fs]
      do_writepages+0xd3/0x1b0
      __writeback_single_inode+0x5b/0x420
      writeback_sb_inodes+0x236/0x5a0
      __writeback_inodes_wb+0x56/0xf0
      wb_writeback+0x2a3/0x490
      wb_do_writeback+0x2b2/0x330
      wb_workfn+0x6a/0x260
      process_one_work+0x270/0x5e0
      worker_thread+0x52/0x3e0
      kthread+0xf4/0x120
      ret_from_fork+0x29/0x50
    Signed-off-by: default avatarChao Yu <chao@kernel.org>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    d78dfefc
f2fs.h 147 KB