[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH v2 10/12] nvdimm: convert "label-size" into a stat
From: |
David Hildenbrand |
Subject: |
Re: [Qemu-ppc] [PATCH v2 10/12] nvdimm: convert "label-size" into a static property |
Date: |
Fri, 15 Jun 2018 15:40:41 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 15.06.2018 15:30, David Hildenbrand wrote:
> On 15.06.2018 14:53, Igor Mammedov wrote:
>> On Fri, 15 Jun 2018 13:24:58 +0200
>> David Hildenbrand <address@hidden> wrote:
>>
>>> We don't allow to modify it after realization. So we can simply turn
>>> it into a static property. The value is now validated during realize().
>>>
>>> Signed-off-by: David Hildenbrand <address@hidden>
>>> ---
>>> hw/mem/nvdimm.c | 53 ++++++++-----------------------------------------
>>> 1 file changed, 8 insertions(+), 45 deletions(-)
>>>
>>> diff --git a/hw/mem/nvdimm.c b/hw/mem/nvdimm.c
>>> index 7260c9c6b1..d3e8a5bcbb 100644
>>> --- a/hw/mem/nvdimm.c
>>> +++ b/hw/mem/nvdimm.c
>>> @@ -27,50 +27,6 @@
>>> #include "qapi/visitor.h"
>>> #include "hw/mem/nvdimm.h"
>>>
>>> -static void nvdimm_get_label_size(Object *obj, Visitor *v, const char
>>> *name,
>>> - void *opaque, Error **errp)
>>> -{
>>> - NVDIMMDevice *nvdimm = NVDIMM(obj);
>>> - uint64_t value = nvdimm->label_size;
>>> -
>>> - visit_type_size(v, name, &value, errp);
>>> -}
>>> -
>>> -static void nvdimm_set_label_size(Object *obj, Visitor *v, const char
>>> *name,
>>> - void *opaque, Error **errp)
>>> -{
>>> - NVDIMMDevice *nvdimm = NVDIMM(obj);
>>> - Error *local_err = NULL;
>>> - uint64_t value;
>>> -
>>> - if (memory_region_size(&nvdimm->nvdimm_mr)) {
>>> - error_setg(&local_err, "cannot change property value");
>>> - goto out;
>>> - }
>>> -
>>> - visit_type_size(v, name, &value, &local_err);
>>> - if (local_err) {
>>> - goto out;
>>> - }
>>> - if (value < MIN_NAMESPACE_LABEL_SIZE) {
>>> - error_setg(&local_err, "Property '%s.%s' (0x%" PRIx64 ") is
>>> required"
>>> - " at least 0x%lx", object_get_typename(obj),
>>> - name, value, MIN_NAMESPACE_LABEL_SIZE);
>>> - goto out;
>>> - }
>> doesn't seem right,
>> property setter should throw out error at the time it's set if possible.
>>
>> I'd keep this one check where it is and property dynamic.
>>
>> and fix only access to uninitialized "if
>> (memory_region_size(&nvdimm->nvdimm_mr)) {"
>
> Do we really want to simulate a static property with 25+ LOC?
>
> But if you insist, to get this stuff of my list, I will turn the
>
> if (memory_region_size(&nvdimm->nvdimm_mr)) {
> into a
> if (dev->realized)
or rather a pointer check as you said.
>
> And allow setting the property to 0, too (which is also broken right now).
>
--
Thanks,
David / dhildenb