diff options
-rw-r--r-- | fs/btrfs/qgroup.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index b9c5dff960de..63fdbbf61f15 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -1341,12 +1341,14 @@ static int flush_reservations(struct btrfs_fs_info *fs_info) if (ret) return ret; btrfs_wait_ordered_roots(fs_info, U64_MAX, NULL); - trans = btrfs_join_transaction(fs_info->tree_root); - if (IS_ERR(trans)) - return PTR_ERR(trans); - ret = btrfs_commit_transaction(trans); - return ret; + trans = btrfs_attach_transaction_barrier(fs_info->tree_root); + if (IS_ERR(trans)) { + ret = PTR_ERR(trans); + return (ret == -ENOENT) ? 0 : ret; + } + + return btrfs_commit_transaction(trans); } int btrfs_quota_disable(struct btrfs_fs_info *fs_info) |