Btrfs: make flushoncommit mount option correctly wait on ordered_extents
The commit_transaction call to wait_ordered_extents when snap_pending passes nocow_only=1 to process only NOCOW or PREALLOC extents. This isn't correct for the 'flushoncommit' mode, as it skips extents we just started IO on in start_delalloc_inodes. So, in the flushoncommit case, wait on all ordered extents. Otherwise, only pass the nocow_only flag to wait_ordered_extents if snap_pending. Signed-off-by: Sage Weil <sage@newdream.net> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
d717aa1d31
commit
ebecd3d9d2
1 changed files with 5 additions and 3 deletions
|
@ -942,9 +942,11 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
|
|||
|
||||
mutex_unlock(&root->fs_info->trans_mutex);
|
||||
|
||||
if (flush_on_commit || snap_pending) {
|
||||
if (flush_on_commit)
|
||||
btrfs_start_delalloc_inodes(root);
|
||||
if (flush_on_commit) {
|
||||
btrfs_start_delalloc_inodes(root);
|
||||
ret = btrfs_wait_ordered_extents(root, 0);
|
||||
BUG_ON(ret);
|
||||
} else if (snap_pending) {
|
||||
ret = btrfs_wait_ordered_extents(root, 1);
|
||||
BUG_ON(ret);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue