[PATCH 2/4] ubi: Expose mean erase counter for fastmap in sysfs

Zhihao Cheng chengzhihao1 at huawei.com
Wed Oct 9 20:07:43 PDT 2024


在 2024/10/10 10:58, Zhihao Cheng 写道:
> 在 2024/10/9 21:44, Rickard x Andersson 写道:
>> On 10/8/24 11:27, Zhihao Cheng wrote:
>>> 在 2024/10/4 16:22, Rickard Andersson 写道:
>>>> Since the fastmap area has its own wear levelling it is valuable to
>>>> provide a mean value for that area. This value can be used in order
>>>> to estimate life expectancy of the flash.
>>>>
>>>
>>> There are 2 cases shown as following:
>>> 1) fastmap is disabled: We can determine whether the wear-leveling 
>>> algorithm works fine by comparing 'max_ec' with 'mean_ec'.
>>> 2) fastmap is enabled: The max_ec may come from first 64 PEBs(fastmap 
>>> area), or it may come from data area(pnum > 64), how can we determine 
>>> whether the wear-leveling algorithm works fine for data area?
>>
>> Thanks for the feedback.
>>
>> My main goal is to provide mean values to determine how worn down the 
>> flash is. I am sort of assuming that the wear leveling algorithm works 
>> but that it previously had bugs, which made it difficult to use max_ec 
>> to get a complete picture of the wear.
>> I could add max_ec_fastmap for symmetry if you want? Then I will make 
>> max_ec_fastmap cover blocks 0 - 63, and max_ec will cover 0 - LAST_BLOCK.
>>
> 
> How about providing four variables:
> 1. mean_ec_data: mean ec for data area
> 2. max_ec_data:max ec for data area
> 3. mean_ec_fastmap:mean ec for fastmap area
> 4. max_ec_fastmap:max ec for fastmap area
> 
> If CONFIG_MTD_UBI_FASTMAP is enabled, all variables are displayed under 
> sysfs, mean_ec_data and max_ec_data are calculated by 64~LAST_PEB, 
> mean_ec_fastmap and max_ec_fastmap are calculated by 0~64 PEBs, despite 
> whatever 'ubi->fm_disabled' is.
> If CONFIG_MTD_UBI_FASTMAP is disabled, only mean_ec_data and max_ec_data 
> are displayed under sysfs, the mean_ec_data and max_ec_data are 
> calculated by all PEBs.
> 

Besides that, you can add a variable named mean_ec which could store the 
average ec counter from all PEBs, so you can know the overall worn down 
of the flash. Although this value can be calculated by mean_ec_fastmap, 
mean_ec_data and total_eraseblocks.
>>>
>>> 'if (!ubi->fm_disabled))' is enough.
>>>> +            peb_count = UBI_FM_MAX_START;
>>>> +        else
>>>> +            return 0; /* No fastmap on this UBI device */
>>>
>>> If we format /dev/mtdX by command 'ubiformat -e 0', the return value 
>>> '0' may confuse us, it means that the fastmap is disabled or the 
>>> mean_ec_fastmap is 0.
>>
>> Do you prefer the function "dev_attribute_show" to return -ENODEV in 
>> case we have no fastmap? I.e this behavior:
>>
>> /sys/class/ubi/ubi0 # cat mean_ec_fastmap
>> cat: read error: No such device
>>
>> Best regards,
>> Rickard Andersson
>>
>>
>> .
> 
> 
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/




More information about the linux-mtd mailing list