Re: [PATCH 2/7] guest_memfd: Introduce an object to manage the guest-memfd with RamDiscardManager

Chenyi Qiang
2025-01-24T03:40:32Z

Sorry I missed this mail.

On 1/21/2025 11:38 PM, Peter Xu wrote:
> On Tue, Jan 21, 2025 at 05:00:45PM +0800, Chenyi Qiang wrote:
>>>> +
>>>> + /* block size and alignment */
>>>> + uint64_t block_size;
>>>
>>> Can we always fetch it from the MR/ramblock? If this is needed, better add
>>> some comment explaining why.
>>
>> The block_size is the granularity used to track the private/shared
>> attribute in the bitmap. It is currently hardcoded to 4K as guest_memfd
>> may manipulate the page conversion in at least 4K size and alignment.
>> I think It is somewhat a variable to cache the size and can avoid many
>> getpagesize() calls.
>
> Though qemu does it frequently.. e.g. qemu_real_host_page_size() wraps
> that. So IIUC that's not a major concern, and if it's a concern maybe we
> can cache it globally instead.
>
> OTOH, this is not a per-ramblock limitation either, IIUC. So maybe instead
> of caching it per manager, we could have memory_attr_manager_get_psize()
> helper (or any better name..):
>
> memory_attr_manager_get_psize(MemoryAttrManager *mgr)
> {
> /* Due to limitation of ... always notify with host psize */
> return qemu_real_host_page_size();
> }
>
> Then in the future if necessary, switch to:
>
> memory_attr_manager_get_psize(MemoryAttrManager *mgr)
> {
> return mgr->mr->ramblock->pagesize;
> }

This looks good to me. I'll change in this way.

>
> Thanks,
>