|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 08/12] libxc/restore: Support v3 streams, and cope with v2 compatibilty
Andrew Cooper writes ("[PATCH 08/12] libxc/restore: Support v3 streams, and
cope with v2 compatibilty"):
> Introduce a static_data_complete() hook which is called when a
> STATIC_DATA_END record is found (v3) or inferred (v2).
>
> Modify handle_page_data() and handle_x86_pv_p2m_frames() to infer the
> position in v2 streams.
>
> The implementation of x86_static_data_complete() needs to wait until
> more plumbing is in place, to make a combined libxl/libxc change to
> maintain (functional) bisectability.
>
> No practical change to behaviour - this is all plumbing work.
These parts are confusing to me:
> + /*
> + * This is a bit of a bodge, but it is less bad than duplicating
> + * handle_page_data() between different architectures.
> + */
> +#if defined(__i386__) || defined(__x86_64__)
> + /* v2 compat. Infer the position of STATIC_DATA_END. */
> + if ( ctx->restore.format_version < 3 &&
> !ctx->restore.seen_static_data_end )
> + {
> + rc = handle_static_data_end(ctx);
> + if ( rc )
> + {
> + ERROR("Inferred STATIC_DATA_END record failed");
> + goto err;
> + }
> + rc = -1;
> + }
> +
> + if ( !ctx->restore.seen_static_data_end )
> + {
> + ERROR("No STATIC_DATA_END seen");
> + goto err;
> + }
> +#endif
...
> + /* v2 compat. Infer the position of STATIC_DATA_END. */
> + if ( ctx->restore.format_version < 3 &&
> !ctx->restore.seen_static_data_end )
> + {
> + rc = handle_static_data_end(ctx);
> + if ( rc )
> + {
> + ERROR("Inferred STATIC_DATA_END record failed");
> + return rc;
> + }
> + }
> +
> + if ( !ctx->restore.seen_static_data_end )
> + {
> + ERROR("No STATIC_DATA_END seen");
> + return -1;
> + }
Firstly, this code is remarkably similar. Surely it should be
factored out into something like
possible_implicit_static_data_end()
?
And secondly, I don't understand why the first part in
handle_page_data is arch-qualified. Maybe this would make more sense
if I looked at the code in context rather than just the diff ?
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |