• Jaegeuk Kim's avatar
    f2fs: fix writing incorrect orphan blocks · ccaaca25
    Jaegeuk Kim authored
    Previously, there was a erroneous scenario like below.
    thread 1:                       thread 2:
     f2fs_unlink
      - acquire_orphan_inode
        : sbi->n_orphans++           write_checkpoint
                                     - block_operations
                                      : f2fs_lock_all
                                     - do_checkpoint
                                      : write orphan blocks with sbi->n_orphans
                                     - unblock_operations
      - f2fs_lock_op
      - release_orphan_inode
      - f2fs_unlock_op
    
    During the checkpoint by thread 2, f2fs stores a wrong orphan block according
    to the wrong sbi->n_orphans.
    To avoid this, simply we should make cover acquire_orphan_inode too with
    f2fs_lock_op.
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
    ccaaca25
namei.c 11.5 KB