std::stack<SyncEntry> sync_stack;
sync_stack.emplace(SyncEntry(".", tdirp, tstx));
+ if (prev) {
+ set_sync_type(dir_root, "local_scan");
+ } else {
+ set_sync_type(dir_root, "remote_scan");
+ }
+
while (!sync_stack.empty()) {
if (should_backoff(dir_root, &r)) {
dout(0) << ": backing off r=" << r << dendl;
f->dump_string("state", "idle");
} else {
f->dump_string("state", "syncing");
+ f->dump_string("sync_type", sync_stat.type);
f->open_object_section("current_sycning_snap");
f->dump_unsigned("id", (*sync_stat.current_syncing_snap).first);
f->dump_string("name", (*sync_stat.current_syncing_snap).second);
uint64_t nr_failures = 0; // number of consecutive failures
boost::optional<time> last_failed; // lat failed timestamp
bool failed = false; // hit upper cap for consecutive failures
+ std::string type;
boost::optional<std::pair<uint64_t, std::string>> last_synced_snap;
boost::optional<std::pair<uint64_t, std::string>> current_syncing_snap;
uint64_t synced_snap_count = 0;
++sync_stat.synced_snap_count;
}
+ void set_sync_type(const std::string &dir_root, const std::string &type) {
+ std::scoped_lock locker(m_lock);
+ auto &sync_stat = m_snap_sync_stats.at(dir_root);
+ sync_stat.type = type;
+ }
+
bool should_backoff(const std::string &dir_root, int *retval) {
if (m_fs_mirror->is_blocklisted()) {
*retval = -EBLOCKLISTED;