forked from Minki/linux
Merge branch 'for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
Pull btrfs fixes from Chris Mason: "I'm still prepping a set of fixes for btrfs fsync, just nailing down a hard to trigger memory corruption. For now, these are tested and ready." * 'for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: btrfs: fix one bug that process may endlessly wait for ticket in wait_reserve_ticket() Btrfs: fix endless loop in balancing block groups Btrfs: kill invalid ASSERT() in process_all_refs()
This commit is contained in:
commit
4b30b6d126
@ -4901,11 +4901,6 @@ btrfs_calc_reclaim_metadata_size(struct btrfs_root *root,
|
||||
u64 expected;
|
||||
u64 to_reclaim = 0;
|
||||
|
||||
to_reclaim = min_t(u64, num_online_cpus() * SZ_1M, SZ_16M);
|
||||
if (can_overcommit(root, space_info, to_reclaim,
|
||||
BTRFS_RESERVE_FLUSH_ALL))
|
||||
return 0;
|
||||
|
||||
list_for_each_entry(ticket, &space_info->tickets, list)
|
||||
to_reclaim += ticket->bytes;
|
||||
list_for_each_entry(ticket, &space_info->priority_tickets, list)
|
||||
@ -4913,6 +4908,11 @@ btrfs_calc_reclaim_metadata_size(struct btrfs_root *root,
|
||||
if (to_reclaim)
|
||||
return to_reclaim;
|
||||
|
||||
to_reclaim = min_t(u64, num_online_cpus() * SZ_1M, SZ_16M);
|
||||
if (can_overcommit(root, space_info, to_reclaim,
|
||||
BTRFS_RESERVE_FLUSH_ALL))
|
||||
return 0;
|
||||
|
||||
used = space_info->bytes_used + space_info->bytes_reserved +
|
||||
space_info->bytes_pinned + space_info->bytes_readonly +
|
||||
space_info->bytes_may_use;
|
||||
|
@ -4200,9 +4200,11 @@ restart:
|
||||
err = PTR_ERR(trans);
|
||||
goto out_free;
|
||||
}
|
||||
err = qgroup_fix_relocated_data_extents(trans, rc);
|
||||
if (err < 0) {
|
||||
btrfs_abort_transaction(trans, err);
|
||||
ret = qgroup_fix_relocated_data_extents(trans, rc);
|
||||
if (ret < 0) {
|
||||
btrfs_abort_transaction(trans, ret);
|
||||
if (!err)
|
||||
err = ret;
|
||||
goto out_free;
|
||||
}
|
||||
btrfs_commit_transaction(trans, rc->extent_root);
|
||||
|
@ -4268,10 +4268,12 @@ static int process_all_refs(struct send_ctx *sctx,
|
||||
}
|
||||
btrfs_release_path(path);
|
||||
|
||||
/*
|
||||
* We don't actually care about pending_move as we are simply
|
||||
* re-creating this inode and will be rename'ing it into place once we
|
||||
* rename the parent directory.
|
||||
*/
|
||||
ret = process_recorded_refs(sctx, &pending_move);
|
||||
/* Only applicable to an incremental send. */
|
||||
ASSERT(pending_move == 0);
|
||||
|
||||
out:
|
||||
btrfs_free_path(path);
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user