During resolve, orphan dirfrags are purged which may result in dentry commits.
If the snapclient is not sync'd (which normally happens as the last step of
up:resolve), then the snapclient indicates the last sequence is 1 which is
always less than a dentry's legitimate "first" value.
Fixes: https://tracker.ceph.com/issues/64058
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit
caa34c1f6102f88e2c07f58af72bd886cbcc33b3)
{
auto&& snapclient = dir->mdcache->mds->snapclient;
auto next_snap = snapclient->get_last_seq()+1;
- if (first > last || (snapclient->is_server_ready() && first > next_snap)) {
+ if (first > last || (snapclient->is_synced() && first > next_snap)) {
if (load) {
dout(1) << "loaded already corrupt dentry: " << *this << dendl;
corrupt_first_loaded = true;