qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] qapi: clarify that the default is backend dependent
@ 2024-05-23 13:33 Stefano Garzarella
  2024-06-03  9:34 ` Markus Armbruster
  0 siblings, 1 reply; 5+ messages in thread
From: Stefano Garzarella @ 2024-05-23 13:33 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eric Blake, Daniel P. Berrangé, Markus Armbruster,
	Eduardo Habkost, Paolo Bonzini, Stefano Garzarella

The default value of the @share option of the @MemoryBackendProperties
eally depends on the backend type, so let's document it explicitly and
add the default value where it was missing.

Cc: David Hildenbrand <david@redhat.com>
Suggested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
---
I followed how we document @share in memfd and epc, but I don't like it
very much, I just can't think of a better way, so if you have a suggestion
I can change them in all of them.

Thanks,
Stefano
---
 qapi/qom.json | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/qapi/qom.json b/qapi/qom.json
index 38dde6d785..8463bd32a2 100644
--- a/qapi/qom.json
+++ b/qapi/qom.json
@@ -600,7 +600,7 @@
 #     preallocation threads (default: none) (since 7.2)
 #
 # @share: if false, the memory is private to QEMU; if true, it is
-#     shared (default: false)
+#     shared (default depends on the backend type)
 #
 # @reserve: if true, reserve swap space (or huge pages) if applicable
 #     (default: true) (since 6.1)
@@ -639,6 +639,8 @@
 #
 # Properties for memory-backend-file objects.
 #
+# The @share boolean option is false by default with file.
+#
 # @align: the base address alignment when QEMU mmap(2)s @mem-path.
 #     Some backend stores specified by @mem-path require an alignment
 #     different than the default one used by QEMU, e.g. the device DAX
-- 
2.45.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] qapi: clarify that the default is backend dependent
  2024-05-23 13:33 [PATCH] qapi: clarify that the default is backend dependent Stefano Garzarella
@ 2024-06-03  9:34 ` Markus Armbruster
  2024-06-04 13:21   ` Stefano Garzarella
  0 siblings, 1 reply; 5+ messages in thread
From: Markus Armbruster @ 2024-06-03  9:34 UTC (permalink / raw)
  To: Stefano Garzarella
  Cc: qemu-devel, Eric Blake, Daniel P. Berrangé, Eduardo Habkost,
	Paolo Bonzini

Stefano Garzarella <sgarzare@redhat.com> writes:

> The default value of the @share option of the @MemoryBackendProperties
> eally depends on the backend type, so let's document it explicitly and
> add the default value where it was missing.
>
> Cc: David Hildenbrand <david@redhat.com>
> Suggested-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
> ---
> I followed how we document @share in memfd and epc, but I don't like it
> very much, I just can't think of a better way, so if you have a suggestion
> I can change them in all of them.
>
> Thanks,
> Stefano
> ---
>  qapi/qom.json | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/qapi/qom.json b/qapi/qom.json
> index 38dde6d785..8463bd32a2 100644
> --- a/qapi/qom.json
> +++ b/qapi/qom.json
> @@ -600,7 +600,7 @@
   ##
   # @MemoryBackendProperties:
   #
   # Properties for objects of classes derived from memory-backend.
   #

[...]

>  #     preallocation threads (default: none) (since 7.2)
>  #
>  # @share: if false, the memory is private to QEMU; if true, it is
> -#     shared (default: false)
> +#     shared (default depends on the backend type)

Note for later: the backends are the branches of ObjectOptions that use
MemoryBackendProperties as branch type or as base of their branch type.
These are

    memory-backend-epc (uses MemoryBackendEpcProperties)
    memory-backend-file (uses MemoryBackendFileProperties)
    memory-backend-memfd (uses MemoryBackendMemfdProperties)
    memory-backend-ram (uses MemoryBackendProperties)

>  #
>  # @reserve: if true, reserve swap space (or huge pages) if applicable
>  #     (default: true) (since 6.1)
> @@ -639,6 +639,8 @@
>  #
>  # Properties for memory-backend-file objects.
>  #
> +# The @share boolean option is false by default with file.
> +#
>  # @align: the base address alignment when QEMU mmap(2)s @mem-path.
>  #     Some backend stores specified by @mem-path require an alignment
>  #     different than the default one used by QEMU, e.g. the device DAX

As stated in the commit message, this matches existing documentation in
memory-backend-epc

   # The @share boolean option is true by default with epc

and memory-backend-memfd

   # The @share boolean option is true by default with memfd.

I think "with FOO" could be clearer.  Perhaps something like "with
backend 'memory-backend-FOO'.

However, even with your patch, we're still missing memory-backend-ram.
I can see two solutions:

1. Create MemoryBackendRamProperties just to have a place for
documenting @share's default.

2. Document @share's default right where it's defined, roughly like
this:

   # @share: if false, the memory is private to QEMU; if true, it is
   #     shared (default false for backends memory-backend-file and
   #     memory-backend-ram, true for backends memory-backend-epc and
   #     memory-backend-memfd)

CON: we need to remember to update this whenever we add another backend.

PRO: generated documentation is better, in my opinion.

Thoughts?



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] qapi: clarify that the default is backend dependent
  2024-06-03  9:34 ` Markus Armbruster
@ 2024-06-04 13:21   ` Stefano Garzarella
  2024-06-04 14:58     ` Markus Armbruster
  0 siblings, 1 reply; 5+ messages in thread
From: Stefano Garzarella @ 2024-06-04 13:21 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: qemu-devel, Eric Blake, Daniel P. Berrangé, Eduardo Habkost,
	Paolo Bonzini

On Mon, Jun 03, 2024 at 11:34:10AM GMT, Markus Armbruster wrote:
>Stefano Garzarella <sgarzare@redhat.com> writes:
>
>> The default value of the @share option of the @MemoryBackendProperties
>> eally depends on the backend type, so let's document it explicitly and
>> add the default value where it was missing.
>>
>> Cc: David Hildenbrand <david@redhat.com>
>> Suggested-by: Markus Armbruster <armbru@redhat.com>
>> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
>> ---
>> I followed how we document @share in memfd and epc, but I don't like it
>> very much, I just can't think of a better way, so if you have a suggestion
>> I can change them in all of them.
>>
>> Thanks,
>> Stefano
>> ---
>>  qapi/qom.json | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/qapi/qom.json b/qapi/qom.json
>> index 38dde6d785..8463bd32a2 100644
>> --- a/qapi/qom.json
>> +++ b/qapi/qom.json
>> @@ -600,7 +600,7 @@
>   ##
>   # @MemoryBackendProperties:
>   #
>   # Properties for objects of classes derived from memory-backend.
>   #
>
>[...]
>
>>  #     preallocation threads (default: none) (since 7.2)
>>  #
>>  # @share: if false, the memory is private to QEMU; if true, it is
>> -#     shared (default: false)
>> +#     shared (default depends on the backend type)
>
>Note for later: the backends are the branches of ObjectOptions that use
>MemoryBackendProperties as branch type or as base of their branch type.
>These are
>
>    memory-backend-epc (uses MemoryBackendEpcProperties)
>    memory-backend-file (uses MemoryBackendFileProperties)
>    memory-backend-memfd (uses MemoryBackendMemfdProperties)
>    memory-backend-ram (uses MemoryBackendProperties)
>
>>  #
>>  # @reserve: if true, reserve swap space (or huge pages) if applicable
>>  #     (default: true) (since 6.1)
>> @@ -639,6 +639,8 @@
>>  #
>>  # Properties for memory-backend-file objects.
>>  #
>> +# The @share boolean option is false by default with file.
>> +#
>>  # @align: the base address alignment when QEMU mmap(2)s @mem-path.
>>  #     Some backend stores specified by @mem-path require an alignment
>>  #     different than the default one used by QEMU, e.g. the device DAX
>
>As stated in the commit message, this matches existing documentation in
>memory-backend-epc
>
>   # The @share boolean option is true by default with epc
>
>and memory-backend-memfd
>
>   # The @share boolean option is true by default with memfd.
>
>I think "with FOO" could be clearer.  Perhaps something like "with
>backend 'memory-backend-FOO'.

Ack, I'll do.

>
>However, even with your patch, we're still missing memory-backend-ram.
>I can see two solutions:
>
>1. Create MemoryBackendRamProperties just to have a place for
>documenting @share's default.
>
>2. Document @share's default right where it's defined, roughly like
>this:
>
>   # @share: if false, the memory is private to QEMU; if true, it is
>   #     shared (default false for backends memory-backend-file and
>   #     memory-backend-ram, true for backends memory-backend-epc and
>   #     memory-backend-memfd)
>
>CON: we need to remember to update this whenever we add another backend.
>
>PRO: generated documentation is better, in my opinion.
>
>Thoughts?
>

Maybe option 2 is slightly better and it's also clearer how to document 
the default for other backends.

When I added a new backend, it was not clear to me how to define the 
default for an inherited parameter.

I would go with 2 if you agree.

Thanks,
Stefano



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] qapi: clarify that the default is backend dependent
  2024-06-04 13:21   ` Stefano Garzarella
@ 2024-06-04 14:58     ` Markus Armbruster
  2024-06-06 14:06       ` Stefano Garzarella
  0 siblings, 1 reply; 5+ messages in thread
From: Markus Armbruster @ 2024-06-04 14:58 UTC (permalink / raw)
  To: Stefano Garzarella
  Cc: Markus Armbruster, qemu-devel, Eric Blake,
	Daniel P. Berrangé, Eduardo Habkost, Paolo Bonzini

Stefano Garzarella <sgarzare@redhat.com> writes:

> On Mon, Jun 03, 2024 at 11:34:10AM GMT, Markus Armbruster wrote:
>>Stefano Garzarella <sgarzare@redhat.com> writes:
>>
>>> The default value of the @share option of the @MemoryBackendProperties
>>> eally depends on the backend type, so let's document it explicitly and
>>> add the default value where it was missing.
>>>
>>> Cc: David Hildenbrand <david@redhat.com>
>>> Suggested-by: Markus Armbruster <armbru@redhat.com>
>>> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
>>> ---
>>> I followed how we document @share in memfd and epc, but I don't like it
>>> very much, I just can't think of a better way, so if you have a suggestion
>>> I can change them in all of them.
>>>
>>> Thanks,
>>> Stefano
>>> ---
>>>  qapi/qom.json | 4 +++-
>>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/qapi/qom.json b/qapi/qom.json
>>> index 38dde6d785..8463bd32a2 100644
>>> --- a/qapi/qom.json
>>> +++ b/qapi/qom.json
>>> @@ -600,7 +600,7 @@
>>   ##
>>   # @MemoryBackendProperties:
>>   #
>>   # Properties for objects of classes derived from memory-backend.
>>   #
>>
>>[...]
>>
>>>  #     preallocation threads (default: none) (since 7.2)
>>>  #
>>>  # @share: if false, the memory is private to QEMU; if true, it is
>>> -#     shared (default: false)
>>> +#     shared (default depends on the backend type)
>>
>>Note for later: the backends are the branches of ObjectOptions that use
>>MemoryBackendProperties as branch type or as base of their branch type.
>>These are
>>
>>    memory-backend-epc (uses MemoryBackendEpcProperties)
>>    memory-backend-file (uses MemoryBackendFileProperties)
>>    memory-backend-memfd (uses MemoryBackendMemfdProperties)
>>    memory-backend-ram (uses MemoryBackendProperties)
>>
>>>  #
>>>  # @reserve: if true, reserve swap space (or huge pages) if applicable
>>>  #     (default: true) (since 6.1)
>>> @@ -639,6 +639,8 @@
>>>  #
>>>  # Properties for memory-backend-file objects.
>>>  #
>>> +# The @share boolean option is false by default with file.
>>> +#
>>>  # @align: the base address alignment when QEMU mmap(2)s @mem-path.
>>>  #     Some backend stores specified by @mem-path require an alignment
>>>  #     different than the default one used by QEMU, e.g. the device DAX
>>
>>As stated in the commit message, this matches existing documentation in
>>memory-backend-epc
>>
>>   # The @share boolean option is true by default with epc
>>
>>and memory-backend-memfd
>>
>>   # The @share boolean option is true by default with memfd.
>>
>>I think "with FOO" could be clearer.  Perhaps something like "with
>>backend 'memory-backend-FOO'.
>
> Ack, I'll do.
>
>>
>>However, even with your patch, we're still missing memory-backend-ram.
>>I can see two solutions:
>>
>>1. Create MemoryBackendRamProperties just to have a place for
>>documenting @share's default.
>>
>>2. Document @share's default right where it's defined, roughly like
>>this:
>>
>>   # @share: if false, the memory is private to QEMU; if true, it is
>>   #     shared (default false for backends memory-backend-file and
>>   #     memory-backend-ram, true for backends memory-backend-epc and
>>   #     memory-backend-memfd)
>>
>>CON: we need to remember to update this whenever we add another backend.
>>
>>PRO: generated documentation is better, in my opinion.
>>
>>Thoughts?
>>
>
> Maybe option 2 is slightly better and it's also clearer how to document the default for other backends.
>
> When I added a new backend, it was not clear to me how to define the default for an inherited parameter.
>
> I would go with 2 if you agree.

I actually like 2 better :)



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] qapi: clarify that the default is backend dependent
  2024-06-04 14:58     ` Markus Armbruster
@ 2024-06-06 14:06       ` Stefano Garzarella
  0 siblings, 0 replies; 5+ messages in thread
From: Stefano Garzarella @ 2024-06-06 14:06 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: qemu-devel, Eric Blake, Daniel P. Berrangé, Eduardo Habkost,
	Paolo Bonzini

On Tue, Jun 04, 2024 at 04:58:49PM GMT, Markus Armbruster wrote:
>Stefano Garzarella <sgarzare@redhat.com> writes:
>
>> On Mon, Jun 03, 2024 at 11:34:10AM GMT, Markus Armbruster wrote:
>>>Stefano Garzarella <sgarzare@redhat.com> writes:
>>>
>>>> The default value of the @share option of the @MemoryBackendProperties
>>>> eally depends on the backend type, so let's document it explicitly and
>>>> add the default value where it was missing.
>>>>
>>>> Cc: David Hildenbrand <david@redhat.com>
>>>> Suggested-by: Markus Armbruster <armbru@redhat.com>
>>>> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
>>>> ---
>>>> I followed how we document @share in memfd and epc, but I don't like it
>>>> very much, I just can't think of a better way, so if you have a suggestion
>>>> I can change them in all of them.
>>>>
>>>> Thanks,
>>>> Stefano
>>>> ---
>>>>  qapi/qom.json | 4 +++-
>>>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/qapi/qom.json b/qapi/qom.json
>>>> index 38dde6d785..8463bd32a2 100644
>>>> --- a/qapi/qom.json
>>>> +++ b/qapi/qom.json
>>>> @@ -600,7 +600,7 @@
>>>   ##
>>>   # @MemoryBackendProperties:
>>>   #
>>>   # Properties for objects of classes derived from memory-backend.
>>>   #
>>>
>>>[...]
>>>
>>>>  #     preallocation threads (default: none) (since 7.2)
>>>>  #
>>>>  # @share: if false, the memory is private to QEMU; if true, it is
>>>> -#     shared (default: false)
>>>> +#     shared (default depends on the backend type)
>>>
>>>Note for later: the backends are the branches of ObjectOptions that use
>>>MemoryBackendProperties as branch type or as base of their branch type.
>>>These are
>>>
>>>    memory-backend-epc (uses MemoryBackendEpcProperties)
>>>    memory-backend-file (uses MemoryBackendFileProperties)
>>>    memory-backend-memfd (uses MemoryBackendMemfdProperties)
>>>    memory-backend-ram (uses MemoryBackendProperties)
>>>
>>>>  #
>>>>  # @reserve: if true, reserve swap space (or huge pages) if applicable
>>>>  #     (default: true) (since 6.1)
>>>> @@ -639,6 +639,8 @@
>>>>  #
>>>>  # Properties for memory-backend-file objects.
>>>>  #
>>>> +# The @share boolean option is false by default with file.
>>>> +#
>>>>  # @align: the base address alignment when QEMU mmap(2)s @mem-path.
>>>>  #     Some backend stores specified by @mem-path require an alignment
>>>>  #     different than the default one used by QEMU, e.g. the device DAX
>>>
>>>As stated in the commit message, this matches existing documentation in
>>>memory-backend-epc
>>>
>>>   # The @share boolean option is true by default with epc
>>>
>>>and memory-backend-memfd
>>>
>>>   # The @share boolean option is true by default with memfd.
>>>
>>>I think "with FOO" could be clearer.  Perhaps something like "with
>>>backend 'memory-backend-FOO'.
>>
>> Ack, I'll do.
>>
>>>
>>>However, even with your patch, we're still missing memory-backend-ram.
>>>I can see two solutions:
>>>
>>>1. Create MemoryBackendRamProperties just to have a place for
>>>documenting @share's default.
>>>
>>>2. Document @share's default right where it's defined, roughly like
>>>this:
>>>
>>>   # @share: if false, the memory is private to QEMU; if true, it is
>>>   #     shared (default false for backends memory-backend-file and
>>>   #     memory-backend-ram, true for backends memory-backend-epc and
>>>   #     memory-backend-memfd)
>>>
>>>CON: we need to remember to update this whenever we add another backend.
>>>
>>>PRO: generated documentation is better, in my opinion.
>>>
>>>Thoughts?
>>>
>>
>> Maybe option 2 is slightly better and it's also clearer how to document the default for other backends.
>>
>> When I added a new backend, it was not clear to me how to define the default for an inherited parameter.
>>
>> I would go with 2 if you agree.
>
>I actually like 2 better :)
>

Yeah, I'll do it ;-)

Thanks,
Stefano



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-06-06 14:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-23 13:33 [PATCH] qapi: clarify that the default is backend dependent Stefano Garzarella
2024-06-03  9:34 ` Markus Armbruster
2024-06-04 13:21   ` Stefano Garzarella
2024-06-04 14:58     ` Markus Armbruster
2024-06-06 14:06       ` Stefano Garzarella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).