Re: [PATCH 5/7] memory: Register the RamDiscardManager instance upon guest_memfd creation

Chenyi Qiang
2025-01-09T08:18:00Z

Thanks Zhao for your review!

On 1/9/2025 4:14 PM, Zhao Liu wrote:
>> #ifdef CONFIG_FALLOCATE_PUNCH_HOLE
>> @@ -1885,6 +1886,9 @@ static void ram_block_add(RAMBlock *new_block, Error **errp)
>> qemu_mutex_unlock_ramlist();
>> goto out_free;
>> }
>> +
>> + GuestMemfdManager *gmm = GUEST_MEMFD_MANAGER(object_new(TYPE_GUEST_MEMFD_MANAGER));
>> + guest_memfd_manager_realize(gmm, new_block->mr, new_block->mr->size);
>
> realize & unrealize are usually used for QDev. I think it's not good to use
> *realize and *unrealize here.
>
> Why about "guest_memfd_manager_attach_ram"?
>
> In addition, it seems the third parameter is unnecessary and we can access
> MemoryRegion.size directly in guest_memfd_manager_realize().

LGTM. Will follow your suggestion if we still wrap the operations in one
function. (We may change to the HostMemoryBackend RDM then unpack the
operations).

>
>> }
>>
>> ram_size = (new_block->offset + new_block->max_length) >> TARGET_PAGE_BITS;
>> @@ -2139,6 +2143,9 @@ static void reclaim_ramblock(RAMBlock *block)
>>
>> if (block->guest_memfd >= 0) {
>> close(block->guest_memfd);
>> + GuestMemfdManager *gmm = GUEST_MEMFD_MANAGER(block->mr->rdm);
>> + guest_memfd_manager_unrealize(gmm);
>
> Similiarly, what about "guest_memfd_manager_unattach_ram"?

Ditto. thanks.

>
>> + object_unref(OBJECT(gmm));
>> ram_block_discard_require(false);
>> }
>>
>
> Regards,
> Zhao
>