osd/ReplicatedPG: check agent_mode if agent is enabled but hit_sets aren't

It is probably not a good idea to try to run the tiering agent without a
hit_set to inform its actions, but it is technically possible.  For
example, one could simply blindly evict when we reach the full point.
However, this doesn't work because the agent mode is guarded by a hit_set
check, even though agent_setup() is not.  Fix that.

Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 5d1c76f641310f5f65600f70ae76945b2aa472d7)
osd/ReplicatedPG: evict blindly if there is no hit_set

If there is no hit set for a PG, blindly evict objects.  This avoids an
assert(hit_set) in agent_estimate_atime_temp().

Fixes: #8982
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit ea4996d3ef15c5d5a776d162b08d9fad6859c976)
osd/ReplicatedPG: improve agent_choose_mode args

Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit caf554bf2f752b50670d118c99843b7c4a2967b4)
mon/OSDMonitor: warn when cache pools do not have hit_sets configured

Give users a clue when cache pools are enabled but the hit_set is not
configured.  Note that technically this will work, but not well, so for
now let's just steer them away.

Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 383536a2ef2506c5591b25c0fd61dc8c181fdab9)