[PATCH] UBI: fix refill_wl_user_pool()

David Mosberger-Tang dmosberger at gmail.com
Wed Sep 4 11:50:46 EDT 2013


Richard,

Is there more background on the bug this patch fixes?
We are working on root-causing an issue where a UBIFS write fails with
ENOSPC, even though there is no plausible reason that the filesystem
should be out of space.  The ENOSPC errors persist across multiple
reboots, only to disappear magically later on.  We haven't found a
reliable way to reproduce this so far, so we're still tapping a bit in
the dark.

  --david

On Wed, Sep 4, 2013 at 2:20 AM, Richard Weinberger <richard at nod.at> wrote:
> Am 26.08.2013 12:08, schrieb Richard Weinberger:
>> If no free PEBs are available refill_wl_user_pool() must not
>> return with -ENOSPC immediately.
>> It has to block till produce_free_peb() produced a free PEB.
>>
>> Reported-and-Tested-by: Richard Genoud <richard.genoud at gmail.com>
>> Signed-off-by: Richard Weinberger <richard at nod.at>
>> ---
>>  drivers/mtd/ubi/wl.c | 4 ----
>>  1 file changed, 4 deletions(-)
>>
>> diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
>> index c95bfb1..02317c1 100644
>> --- a/drivers/mtd/ubi/wl.c
>> +++ b/drivers/mtd/ubi/wl.c
>> @@ -599,10 +599,6 @@ static void refill_wl_user_pool(struct ubi_device *ubi)
>>       return_unused_pool_pebs(ubi, pool);
>>
>>       for (pool->size = 0; pool->size < pool->max_size; pool->size++) {
>> -             if (!ubi->free.rb_node ||
>> -                (ubi->free_count - ubi->beb_rsvd_pebs < 1))
>> -                     break;
>> -
>>               pool->pebs[pool->size] = __wl_get_peb(ubi);
>>               if (pool->pebs[pool->size] < 0)
>>                       break;
>>
>
> Artem, please don't forget do apply this patch.
>
> Thanks,
> //richard
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/



More information about the linux-mtd mailing list