Luc Van Oostenryck wrote:
>
> I've tested the disk full problem:
> two problems remains:
>
> 1) when the disk is almost full, the GC seems to select block 1, 2 and 3
> again and again
>
> block 1: 352 times
> block 2: 287 times
> block 3: 313 times
> block 4-125: 55 times
> block 126: 141 times
> block 127: 10 times
> Is this an artefact of my worload or is it a real problem ?
> I can't see the code for the infrequent random block selection, is it
> implemented ?
>
> 2) after the write finally return -ENOSPC, the deletion of the file
> cause an Linux kernel oops.
> I will investigate this tomorrow.
>
The oops is also comming from yaffs_UpdateObjectHeader() at the line:
oh->parentObjectID = in->parent->objectId;
but in->parent is NULL.
There is another problem in the follwing case:
1) mount YAFFS on a freshly erased NAND.
2) copy to the FS a file bigger than the size of the partition.
3) only blocks 1, 2 and 3 are garbage collected. !!!
4) eventually the write fail returning ENOSPC
5) umount the FS
=> failure because no more space to store the inode !!!
Shouldn't be possible to reserve space for dirty inode?
otherwise, we will loose some data for which the write return successfully.
---------------------------------------------------------------------------------------
This mailing list is hosted by Toby Churchill open software (
www.toby-churchill.org).
If mailing list membership is no longer wanted you can remove yourself from the list by
sending an email to
yaffs-request@toby-churchill.org with the text "unsubscribe"
(without the quotes) as the subject.