• Jaegeuk Kim's avatar
    f2fs: add recovery routines for roll-forward · d624c96f
    Jaegeuk Kim authored
    This adds roll-forward routines to recover fsynced data.
    
    - F2FS uses basically roll-back model with checkpointing.
    
    - In order to implement fsync(), there are two approaches as follows.
    
    1. A roll-back model with checkpointing at every fsync()
     : This is a naive method, but suffers from very low performance.
    
    2. A roll-forward model
     : F2FS adopts this model where all the fsynced data should be recovered, which
       were written after checkpointing was done. In order to figure out the data,
       F2FS keeps a "fsync" mark in direct node blocks. In addition, F2FS remains
       the location of next node block in each direct node block for reconstructing
       the chain of node blocks during the recovery.
    
    - In order to enhance the performance, F2FS keeps a "dentry" mark also in direct
      node blocks. If this is set during the recovery, F2FS replays adding a dentry.
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
    d624c96f
recovery.c 9.09 KB