On 7/6/26 13:50, Li Zhe wrote:
> On Mon, Jul 6, 2026 at 11:13:45AM +0200, [email protected] wrote:
> 
>>> +static inline bool pagemap_resets_refcount(const struct dev_pagemap *pgmap)
>>> +{
>>> +   /*
>>> +    * MEMORY_DEVICE_GENERIC pages regain a refcount of 1 in the free
>>> +    * path. The remaining ZONE_DEVICE types start from 0 here and raise
>>> +    * the count again when the allocator or driver hands the page out.
>>> +    */
>>> +   switch (pgmap->type) {
>>> +   case MEMORY_DEVICE_FS_DAX:
>>> +   case MEMORY_DEVICE_PRIVATE:
>>> +   case MEMORY_DEVICE_COHERENT:
>>> +   case MEMORY_DEVICE_PCI_P2PDMA:
>>> +           return false;
>>> +   case MEMORY_DEVICE_GENERIC:
>>> +           return true;
>>> +   default:
>>> +           WARN_ONCE(1, "Unknown memory type!");
>>> +           return true;
>>
>> Wouldn't the compiler warn if we would define a new type but forgot to 
>> update it
>> here? We're using an enum, and I thought the compiler would bail out in that 
>> case.
>>
>> Or are we scared of some other garbage ending up in there?
>>
>> Apart from that LGTM.
> 
> Thanks.
> 
> I will drop the default case in v6 so a newly added enum memory_type
> value is easier to catch during build review.
> 
> I will move the WARN_ONCE() after the switch so we still keep a
> runtime guard in case some invalid value ever shows up there.

If the compiler complains, we won't need the WARN_ONCE().

-- 
Cheers,

David

Reply via email to