Start listings consistently with the current PG state, add wait_up_timeout

This still doesn't make listings 100% consistent yet; for 100% consistent
listings we have to receive listings only from the primary OSD, not from all
peer OSDs, but this issue will be fixed separately.
This commit is contained in:
Vitaliy Filippov
2025-01-01 10:58:22 +03:00
parent d0396267d0
commit d9f9b0bca5
8 changed files with 416 additions and 252 deletions
+4 -4
View File
@@ -389,8 +389,8 @@ struct snap_merger_t
if (lower ? (sp.second < target_rank) : (sp.second > target_rank))
{
lists_todo++;
inode_list_t* lst = parent->cli->list_inode_start(src, [this, src](
inode_list_t *lst, std::set<object_id>&& objects, pg_num_t pg_num, osd_num_t primary_osd, int errcode, int status)
inode_list_t* lst = parent->cli->list_inode_start(src, parent->parallel_osds, [this, src](
inode_list_t *lst, std::set<object_id>&& objects, pg_num_t pg_num, std::vector<osd_num_t> && inactive_osds, int errcode, int status)
{
if (errcode)
{
@@ -439,10 +439,10 @@ struct snap_merger_t
}
else
{
parent->cli->list_inode_next(lst, 1);
parent->cli->list_inode_next(lst);
}
});
parent->cli->list_inode_next(lst, parent->parallel_osds);
parent->cli->list_inode_next(lst);
}
}
}