On 04/20/22 18:49, Richard W.M. Jones wrote:
> On Wed, Apr 20, 2022 at 06:23:26PM +0200, Laszlo Ersek wrote:
>> Squash the patterns
>>
>> | None, None -> ()
>> | Some _, None -> ()
>>
>> into the identical
>>
>> | _, None -> ()
>>
>> We preserve the behavior added by commit 2a576b7cc5c3 ("v2v: -o libvirt:
>> Don't write only <vendor> without <model> (RHBZ#1591789).",
2018-06-21);
>> the change only simplifies the code.
>>
>> Bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=2076013
>> Signed-off-by: Laszlo Ersek <lersek(a)redhat.com>
>> ---
>> output/create_libvirt_xml.ml | 8 +++++---
>> 1 file changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/output/create_libvirt_xml.ml b/output/create_libvirt_xml.ml
>> index 36173e58cd6c..4e5bbceffabd 100644
>> --- a/output/create_libvirt_xml.ml
>> +++ b/output/create_libvirt_xml.ml
>> @@ -162,55 +162,57 @@ let create_libvirt_xml ?pool source inspect
>>
>>
>> (match get_osinfo_id inspect with
>> | None -> ()
>> | Some osinfo_id ->
>> List.push_back_list body [
>> e "metadata" [] [
>> e "libosinfo:libosinfo" ["xmlns:libosinfo",
"http://libosinfo.org/xmlns/libvirt/domain/1.0"] [
>> e "libosinfo:os" ["id", osinfo_id] [];
>> ];
>> ];
>> ];
>> );
>>
>> let memory_k = source.s_memory /^ 1024L in
>> List.push_back_list body [
>> e "memory" ["unit", "KiB"] [PCData
(Int64.to_string memory_k)];
>> e "currentMemory" ["unit", "KiB"] [PCData
(Int64.to_string memory_k)];
>> e "vcpu" [] [PCData (string_of_int source.s_vcpu)]
>> ];
>>
>> if source.s_cpu_vendor <> None || source.s_cpu_model <> None ||
>> source.s_cpu_topology <> None then (
>> let cpu = ref [] in
>>
>> (match source.s_cpu_vendor, source.s_cpu_model with
>> - | None, None
>> - (* Avoid libvirt error: "CPU vendor specified without CPU model"
*)
>> - | Some _, None -> ()
>> + | _, None ->
>> + (* This also avoids the libvirt error:
>> + * "CPU vendor specified without CPU model".
>> + *)
>> + ()
>> | None, Some model ->
>> List.push_back cpu (e "model" ["fallback",
"allow"] [PCData model])
>> | Some vendor, Some model ->
>> List.push_back_list cpu [
>> e "vendor" [] [PCData vendor];
>> e "model" ["fallback", "allow"] [PCData
model]
>> ]
>> );
>> (match source.s_cpu_topology with
>> | None -> ()
>> | Some { s_cpu_sockets; s_cpu_cores; s_cpu_threads } ->
>> let topology_attrs = [
>> "sockets", string_of_int s_cpu_sockets;
>> "cores", string_of_int s_cpu_cores;
>> "threads", string_of_int s_cpu_threads;
>> ] in
>> List.push_back cpu (e "topology" topology_attrs [])
>> );
>>
>> List.push_back_list body [ e "cpu" [ "match",
"minimum" ] !cpu ]
>> );
>>
>> let uefi_firmware =
>> match target_firmware with
>> | TargetBIOS -> None
>> | TargetUEFI -> Some (find_uefi_firmware guestcaps.gcaps_arch) in
>
> Reviewed-by: Richard W.M. Jones <rjones(a)redhat.com>
>
> As an aside, your git includes a crazy large amount of context around
> the changes ... Is that a configuration change?
It was intentional: I passed "-U26" to git-format-patch.
Before I post a patch series, I review each patch in "gitk", and
determine the minimal context size that makes it easy for reviewers to
get a complete understanding of the change, without having to apply the
series, and to re-display the patches locally with a larger context.
Most of the time, the option "--function-context" (aka -W) works well
for this, and that option supports even OCaml -- but only to an extent.
When definitions are nested, and/or introduced with "and" (not
"let"),
the function boundaries are not determined well. So in that case, I
start with a standard context size of 3 lines in gitk, and increase it
as needed, as I traverse the patches.
In this case, I arrived at "-U26" because of patch#4:
create_libvirt_xml: eliminate childless <cpu match="minimum"/> element
Because you really need 26 lines of context to see that the patch is
correct.
This doesn't tell you anything:
> diff --git a/output/create_libvirt_xml.ml b/output/create_libvirt_xml.ml
> index d2ca894d60bb..4a71f8bb27f5 100644
> --- a/output/create_libvirt_xml.ml
> +++ b/output/create_libvirt_xml.ml
> @@ -180,7 +180,7 @@ let create_libvirt_xml ?pool source inspect
> e "vcpu" [] [PCData (string_of_int source.s_vcpu)]
> ];
>
> - if source.s_cpu_vendor <> None || source.s_cpu_model <> None ||
> + if source.s_cpu_model <> None ||
> source.s_cpu_topology <> None then (
> let cpu = ref [] in
>
but this does:
> diff --git a/output/create_libvirt_xml.ml b/output/create_libvirt_xml.ml
> index d2ca894d60bb..4a71f8bb27f5 100644
> --- a/output/create_libvirt_xml.ml
> +++ b/output/create_libvirt_xml.ml
> @@ -157,53 +157,53 @@ let create_libvirt_xml ?pool source inspect
>
> (match source.s_genid with
> | None -> ()
> | Some genid -> List.push_back body (e "genid" [] [PCData genid])
> );
>
>
> (match get_osinfo_id inspect with
> | None -> ()
> | Some osinfo_id ->
> List.push_back_list body [
> e "metadata" [] [
> e "libosinfo:libosinfo" ["xmlns:libosinfo",
"http://libosinfo.org/xmlns/libvirt/domain/1.0"] [
> e "libosinfo:os" ["id", osinfo_id] [];
> ];
> ];
> ];
> );
>
> let memory_k = source.s_memory /^ 1024L in
> List.push_back_list body [
> e "memory" ["unit", "KiB"] [PCData
(Int64.to_string memory_k)];
> e "currentMemory" ["unit", "KiB"] [PCData
(Int64.to_string memory_k)];
> e "vcpu" [] [PCData (string_of_int source.s_vcpu)]
> ];
>
> - if source.s_cpu_vendor <> None || source.s_cpu_model <> None ||
> + if source.s_cpu_model <> None ||
> source.s_cpu_topology <> None then (
> let cpu = ref [] in
>
> (match source.s_cpu_model with
> | None -> ()
> | Some model ->
> (match source.s_cpu_vendor with
> | None -> ()
> | Some vendor ->
> List.push_back cpu (e "vendor" [] [PCData vendor])
> );
> List.push_back cpu (e "model" ["fallback",
"allow"] [PCData model])
> );
> (match source.s_cpu_topology with
> | None -> ()
> | Some { s_cpu_sockets; s_cpu_cores; s_cpu_threads } ->
> let topology_attrs = [
> "sockets", string_of_int s_cpu_sockets;
> "cores", string_of_int s_cpu_cores;
> "threads", string_of_int s_cpu_threads;
> ] in
> List.push_back cpu (e "topology" topology_attrs [])
> );
>
> List.push_back_list body [ e "cpu" [ "match",
"minimum" ] !cpu ]
> );
Unfortunately, I don't know of a way to attach this "useful context
size" information to the individual patches; especially so that the info
survive rebases. I could format each patch individually with a different
-U option, but that's something I'm not ready to do :) If I could attach
specially formatted notes, or commit message lines, to the patches, for
driving "-U", that would be really nice.
Also I usually spell out my quirky -U options in the cover letter, but
this time I didn't do it.
Understood - I think it does improve the ability to review patches.
Rich.
--
Richard Jones, Virtualization Group, Red Hat