1. 30 5月, 2020 1 次提交
    • C
      f2fs: fix wrong discard space · ca7f76e6
      Chao Yu 提交于
      Under heavy fsstress, we may triggle panic while issuing discard,
      because __check_sit_bitmap() detects that discard command may earse
      valid data blocks, the root cause is as below race stack described,
      since we removed lock when flushing quota data, quota data writeback
      may race with write_checkpoint(), so that it causes inconsistency in
      between cached discard entry and segment bitmap.
      
      - f2fs_write_checkpoint
       - block_operations
        - set_sbi_flag(sbi, SBI_QUOTA_SKIP_FLUSH)
       - f2fs_flush_sit_entries
        - add_discard_addrs
         - __set_bit_le(i, (void *)de->discard_map);
      						- f2fs_write_data_pages
      						 - f2fs_write_single_data_page
      						   : inode is quota one, cp_rwsem won't be locked
      						  - f2fs_do_write_data_page
      						   - f2fs_allocate_data_block
      						    - f2fs_wait_discard_bio
      						      : discard entry has not been added yet.
      						    - update_sit_entry
       - f2fs_clear_prefree_segments
        - f2fs_issue_discard
        : add discard entry
      
      In order to fix this, this patch uses node_write to serialize
      f2fs_allocate_data_block and checkpoint.
      
      Fixes: 435cbab9 ("f2fs: fix quota_sync failure due to f2fs_lock_op")
      Signed-off-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      ca7f76e6
  2. 29 5月, 2020 4 次提交
  3. 27 5月, 2020 1 次提交
  4. 25 5月, 2020 1 次提交
  5. 19 5月, 2020 2 次提交
  6. 12 5月, 2020 21 次提交
  7. 08 5月, 2020 6 次提交
  8. 24 4月, 2020 1 次提交
  9. 18 4月, 2020 3 次提交