[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Second revision of TODO list for NAND and JFFS...



Here is the updated list. Comments appreciated.

-Steve

*****************************************************************
TODO
----
 1) ECC handled in NAND/NOR low-level MTD driver.
 2) JFFS will quit treating flash device as linear and keep track
    of blocks in various conditions.
 3) Implement 'get_next_usable_block' algorithm for
    garbage collection in JFFS:
                        if jiffies % 5
                          recycle_the_block_with_most_dirty_space;
                        else
                          recycle_the_oldest block;

 4) Utilize 'drivers/char/flash_mem.c' for caching 512 byte blocks
    and write out data only when different page is to be written to
    within JFFS.
 5) Low-level flash MTD driver should be configurable to do read after
    write of data.
 6) JFFS will do bad block marking.
 7) JFFS mount option to reserve a set percentage of blocks for bad
    block management. Default value will be percentange based on all
    flash devices' minimum bad block guarantee.
 8) Utilize 'drivers/mtd/pnc2000.c' for partitioning so that JFFS will
    not utilize flash blocks outside of its space in case there are
    other images on the flash device.
 9) Remove necessity of scanning entire flash for JFFS nodes. 

COMMENTS ON EACH ITEM
---------------------
 1) Piece of cake.

 2) Some support is already present. This should not be too hard.
    I am guessing that three functions in 'jffs_fm.c' are going
    to get an overhaul along with minor changes throughout this
    module. 'jffs_free_size1' , 'jffs_free_size2' and 'jffs_fmalloc'
    will be changed.

 3) Algorithm looks good to me. Changes in 'intrep.c' for GC.

 4) Still trying to find the source code for this.

 5) Piece of cake.

 6) When JFFS detects an error in a block, it will do its best
    to copy all the data it can into another block and then write
    '0xDEADBEEF' over the entire bad block. NOTE: Initial bad
    block testing should be done using the NAND test utility
    located in the 'utils' directory of the MTD CVS repository.
    I will be making a few modifications to this.

 7) Implementing this should not be difficult. I know what we
    discussed and I will take a crack at myself. I plan on
    creating a raw inode with a value of 0xfefefefe or a special
    magic number that will contain the reserved blocks as well
    as a bad block list.
 8) Looks pretty straight-forward.

 9) Implemented by placing a special indexing 'jffs_node' at the
    beginning of each erase block.

-- 
 Steven J. Hill - Embedded SW Engineer
 Public Key: 'finger sjhill@xxxxxxx.com'
 FPR1: E124 6E1C AF8E 7802 A815
 FPR2: 7D72 829C 3386 4C4A E17D