osd: Add hit_set_flushing to track current flushes and prevent races

When flushing a HitSet track in hit_set_flushing map so that
agent_load_hit_sets() doesn't try to read it too soon.

Fixes: #7575

Signed-off-by: David Zafman <david.zafman@inktank.com>
mon: OSDMonitor: don't remove unamanaged snaps from not-unmanaged pools

Although we should allow creating unmanaged snaps on not-unamanaged pools,
as long as those pools don't have any managed snapshots in them, we cannot
allow removal -- because the pool will not have any unmanaged snapshots.

Fixes: 7210

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
qa: workunits/mon/rbd_snaps_ops.sh: ENOTSUP on snap rm from copied pool

'rados cppool' copies the contents but that doesn't make the destination
pool an unmanaged snaps pool.  Therefore, we must get an ENOTSUP when
we try to remove an unmanaged snap from a not-unmanaged pool.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
mon/OSDMonitor: prevent set primary-affinity unless all OSDs support it

Make sure all running OSDs support the feature before we start using it
(even if the config option is on!).

Fixes: #7642
Signed-off-by: Sage Weil <sage@inktank.com>
mon/OSDMonitor: make osdmap feature checks non-racy

The check for OSD features may race with the boot of an OSD that does not
have the necessary features.  Check the pending info too, and if there is
a missing feature, return -EAGAIN.  In the callers, wait on -EAGAIN.

Signed-off-by: Sage Weil <sage@inktank.com>
mon/PGMonitor: improve debugging on PGMap updates slightly

Chasing #7652
Signed-off-by: Sage Weil <sage@inktank.com>
mon/PGMap: send pg create messages to primary, not acting[0]

For erasure pools, these may not match.

In the case of #7652, this caused pg_create messages to be send
indefinitely.  register_pg() added it to the list for acting_primary, and
when we got the (non-creating) pg stat update we removed it from the list
for acting[0].

Fixes: #7652
Signed-off-by: Sage Weil <sage@inktank.com>
Merge pull request #1404 from ceph/wip-7652

mon: fix infininte pg create msgs for erasure pools

Reviewed-by: Samuel Just <sam.just@inktank.com>
mon/OSDMonitor: feature feature check bit arithmetic

Make sure all features are present (instead of just any of them).

Signed-off-by: Sage Weil <sage@inktank.com>
Merge pull request #1403 from ceph/wip-7642

mon: fix check for primary-affinity feature bit, and fix a race in similar checks

Reviewed-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
qa/workunits/cephtool/test.sh: fix 'osd thrash' test

- fix the wait check for osds to come back up
- make sure they get marked back in, too

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Dan Mick <dan.mick@inktank.com>
mds: introduce LOOKUPNAME MDS request

The new MDS request is used for connecting a given inode to its
parent inode. It allows client to have efficient implementation of
get_rename() NFS export callback.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Merge remote-tracking branch 'gh/wip-7210' into firefly

Reviewed-by: Sage Weil <sage@inktank.com>
client: fix Client::getcwd()

An recent commit made MDS not include dentry trace in LOOKUPPARENT
reply. It broke Client::getcwd. The fix is change getcwd() to use
LOOKUPNAME MDS request

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
TestPGLog::proc_replica_log: call doesn't adjust olog

We don't adjust head with proc_replica_log, don't assert that
it's been adjusted.

Signed-off-by: Samuel Just <sam.just@inktank.com>
TestPGLog: check on last_update in run_test_case

Signed-off-by: Samuel Just <sam.just@inktank.com>
TestPGLog: add a test case verifying case where we have the prior_version

Signed-off-by: Samuel Just <sam.just@inktank.com>
PGLog::_merge_object_divergent_entries: handle missing.have == prior_version

Fixes: #7658
Signed-off-by: Samuel Just <sam.just@inktank.com>
PGLog::proc_replica_log: select divergent log entries correctly

Looking for an entry in olog which matches one of ours might add
extra divergent entries.  Instead, do what merge_log does and
walk back through the auth log looking for an entry in olog.

Fixes: 7657
Signed-off-by: Samuel Just <sam.just@inktank.com>
rados/operations/control.rst: fix typo

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>