• C
    f2fs: fix panic of IO alignment feature · c72db71e
    Chao Yu 提交于
    Since 07173c3e ("block: enable multipage bvecs"), one bio vector
    can store multi pages, so that we can not calculate max IO size of
    bio as PAGE_SIZE * bio->bi_max_vecs. However IO alignment feature of
    f2fs always has that assumption, so finally, it may cause panic during
    IO submission as below stack.
    
     kernel BUG at fs/f2fs/data.c:317!
     RIP: 0010:__submit_merged_bio+0x8b0/0x8c0
     Call Trace:
      f2fs_submit_page_write+0x3cd/0xdd0
      do_write_page+0x15d/0x360
      f2fs_outplace_write_data+0xd7/0x210
      f2fs_do_write_data_page+0x43b/0xf30
      __write_data_page+0xcf6/0x1140
      f2fs_write_cache_pages+0x3ba/0xb40
      f2fs_write_data_pages+0x3dd/0x8b0
      do_writepages+0xbb/0x1e0
      __writeback_single_inode+0xb6/0x800
      writeback_sb_inodes+0x441/0x910
      wb_writeback+0x261/0x650
      wb_workfn+0x1f9/0x7a0
      process_one_work+0x503/0x970
      worker_thread+0x7d/0x820
      kthread+0x1ad/0x210
      ret_from_fork+0x35/0x40
    
    This patch adds one extra condition to check left space in bio while
    trying merging page to bio, to avoid panic.
    
    This bug was reported in bugzilla:
    
    https://bugzilla.kernel.org/show_bug.cgi?id=204043Signed-off-by: NChao Yu <yuchao0@huawei.com>
    Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
    c72db71e
super.c 93.6 KB