• Chao Yu's avatar
    f2fs: fix to recover quota data correctly · e1bb7d3d
    Chao Yu authored
    With -O quota mkfs option, xfstests generic/417 fails due to fsck detects
    data corruption on quota inodes.
    
    [ASSERT] (fsck_chk_quota_files:2051)  --> Quota file is missing or invalid quota file content found.
    
    The root cause is there is a hole f2fs doesn't hold quota inodes,
    so all recovered quota data will be dropped due to SBI_POR_DOING
    flag was set.
    - f2fs_fill_super
     - f2fs_recover_orphan_inodes
      - f2fs_enable_quota_files
      - f2fs_quota_off_umount
    <--- quota inodes were dropped --->
     - f2fs_recover_fsync_data
      - f2fs_enable_quota_files
      - f2fs_quota_off_umount
    
    This patch tries to eliminate the hole by holding quota inodes
    during entire recovery flow as below:
    - f2fs_fill_super
     - f2fs_recover_quota_begin
     - f2fs_recover_orphan_inodes
     - f2fs_recover_fsync_data
     - f2fs_recover_quota_end
    
    Then, recovered quota data can be persisted after SBI_POR_DOING
    is cleared.
    Signed-off-by: default avatarChao Yu <chao@kernel.org>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    e1bb7d3d
recovery.c 22.3 KB