• Ryusuke Konishi's avatar
    nilfs2: add routines to roll back state of DAT file · ebdfed4d
    Ryusuke Konishi authored
    This adds optional function to metadata files which makes a copy of
    bmap, page caches, and b-tree node cache, and rolls back to the copy
    as needed.
    
    This enhancement is intended to displace gcdat inode that provides a
    similar function in a different way.
    
    In this patch, nilfs_shadow_map structure is added to store a copy of
    the foregoing states.  nilfs_mdt_setup_shadow_map relates this
    structure to a metadata file.  And, nilfs_mdt_save_to_shadow_map() and
    nilfs_mdt_restore_from_shadow_map() provides save and restore
    functions respectively.  Finally, nilfs_mdt_clear_shadow_map() clears
    states of nilfs_shadow_map.
    
    The copy of b-tree node cache and page cache is made by duplicating
    only dirty pages into corresponding caches in nilfs_shadow_map.  Their
    restoration is done by clearing dirty pages from original caches and
    by copying dirty pages back from nilfs_shadow_map.
    Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    ebdfed4d
btnode.c 8.03 KB