flexnbd: Move building the allocation map to before server socket bind()

Building the allocation map takes time, which scales with the size of the disc
being presented. By building that map in the space between bind() and accept(),
we leave the process in a useless state after the only good signal we have for
"we are ready" and the state where it is actually ready. This was breaking
migrations of large files.
This commit is contained in:
nick
2012-09-25 11:47:44 +01:00
parent ccbfce1075
commit 32cae67a75
3 changed files with 43 additions and 8 deletions

View File

@@ -816,8 +816,8 @@ int do_serve(struct server* params)
int has_control;
error_set_handler((cleanup_handler*) serve_cleanup, params);
serve_open_server_socket(params);
serve_init_allocation_map(params);
serve_open_server_socket(params);
serve_accept_loop(params);
has_control = params->has_control;
serve_cleanup(params, 0);