upmap does not respect osd reweights
upmap currently ignores reweighted osds. In other words, out osds, or those with some fractional reweight, get items upmapped to them, which is counter productive when trying to balance OSDs.
In particular, out OSDs will continually get PGs upmapped to them since they have 0 PGs by design.
To demonstrate we added a --mark-out option to osdmaptool, add a new upmap-out test, and fix the problem in OSDMap::calc_pg_upmaps.
Bug and fix here: https://github.com/ceph/ceph/pull/17944