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: Kent Overstreet <kent.overstreet@linux.dev>
 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);