Btrfs: fix missing flush when committing a transaction
authorMiao Xie <miaox@cn.fujitsu.com>
Thu, 1 Nov 2012 07:33:14 +0000 (07:33 +0000)
committerJosef Bacik <jbacik@fusionio.com>
Wed, 12 Dec 2012 22:15:21 +0000 (17:15 -0500)
commitca46963718ef7368c84267c9f5e7394c3890442a
treea6799d2d2f1b624bca121c0bd3d019d6794bdc03
parentb7d5b0a819498a9c04e1d18201a42468f7edd92a
Btrfs: fix missing flush when committing a transaction

Consider the following case:
Task1 Task2
start_transaction
commit_transaction
  check pending snapshots list and the
  list is empty.
add pending snapshot into list
  skip the delalloc flush
end_transaction
  ...

And then the problem that the snapshot is different with the source subvolume
happen.

This patch fixes the above problem by flush all pending stuffs when all the
other tasks end the transaction.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
fs/btrfs/transaction.c