summary refs log tree commit diff
path: root/fs/f2fs/inode.c
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk.kim@samsung.com>2013-10-08 10:19:28 +0900
committerJaegeuk Kim <jaegeuk.kim@samsung.com>2013-10-08 10:19:28 +0900
commitccaaca25919a2cdeccd8fdce5f546e3ed7f6a9e9 (patch)
tree225d4bc2a01b6e6331081754af1beb9875ea34be /fs/f2fs/inode.c
parent5887d291d792773368f6eaf1759aad109bcd78eb (diff)
downloadlinux-ccaaca25919a2cdeccd8fdce5f546e3ed7f6a9e9.tar.gz
f2fs: fix writing incorrect orphan blocks
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: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs/f2fs/inode.c')
0 files changed, 0 insertions, 0 deletions