[ 
https://issues.apache.org/jira/browse/MYNEWT-160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christopher Collins closed MYNEWT-160.
--------------------------------------
    Resolution: Fixed

> NFFS - Files with scattered data blocks can cause restore failures
> ------------------------------------------------------------------
>
>                 Key: MYNEWT-160
>                 URL: https://issues.apache.org/jira/browse/MYNEWT-160
>             Project: Mynewt
>          Issue Type: Bug
>          Components: NFFS
>            Reporter: Christopher Collins
>            Assignee: Christopher Collins
>             Fix For: v0_8_0_beta2
>
>
> If a file's data blocks are written to disk in an "unexpected" order, the 
> subsequent restore operation can fail in a few ways:
> 1. The restore fails with an FS_ECORRUPT error code.
> 2. The file is only partially restored; the end of the file will be 
> inaccessible.
> This bug is rooted in the inconvenient data structure that NFFS uses for 
> chained data blocks (reverse singly-linked list).  The data structure is 
> inconvenient, but it is used to minimize RAM and flash usage.
> On disk, each data block indicates the ID of the preceding data block in the 
> parent file.  In RAM, a file inode provides access to all the constituent 
> data blocks by maintaining a pointer to the last data block.
> The bug is that the NFFS code does not always ensure that a file inode points 
> to its last data block.  The code assumes that data blocks will be restored 
> in order of increasing file offset.  If data blocks are restored in any other 
> order, this bug occurs.
> The correct fix will be quite involved.  I am going to implement a quick fix 
> for 0.8.0 which fixes the bug, but introduces some horrible inefficiencies 
> when large files are restored.  I will schedule a proper fix for 0.9.0.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to