Commit 844f766e authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: Improve want_cached_ptr()



If promote target isn't set, rebalance should still leave a cached copy
on the faster device.

Fall back to foreground_target if it's set, or allow a cached copy on
any device if neither are set.

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent df2e19a8
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1056,8 +1056,9 @@ bch2_extent_has_ptr(struct bkey_s_c k1, struct extent_ptr_decoded p1, struct bke
static bool want_cached_ptr(struct bch_fs *c, struct bch_io_opts *opts,
			    struct bch_extent_ptr *ptr)
{
	if (!opts->promote_target ||
	    !bch2_dev_in_target(c, ptr->dev, opts->promote_target))
	unsigned target = opts->promote_target ?: opts->foreground_target;

	if (target && !bch2_dev_in_target(c, ptr->dev, target))
		return false;

	struct bch_dev *ca = bch2_dev_rcu_noerror(c, ptr->dev);