10 May, 2011

2 commits

  • This replaces nilfs_mdt_mark_buffer_dirty and nilfs_btnode_mark_dirty
    macros with mark_buffer_dirty and gets rid of nilfs_mark_buffer_dirty,
    an own mark buffer dirty function.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     
  • This replaces all references of NILFS_I_NILFS(inode)->ns_bdev with
    inode->i_sb->s_bdev and unfolds remaining uses of NILFS_I_NILFS inline
    function.

    Before 2.6.37, referring to a nilfs object from inodes needed a
    conditional judgement, and NILFS_I_NILFS was helpful to simplify it.
    But now we can simply do it by going through a super block instance
    like inode->i_sb->s_fs_info.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     

09 Mar, 2011

1 commit

  • This directly uses sb->s_fs_info to keep a nilfs filesystem object and
    fully removes the intermediate nilfs_sb_info structure. With this
    change, the hierarchy of on-memory structures of nilfs will be
    simplified as follows:

    Before:
    super_block
    -> nilfs_sb_info
    -> the_nilfs
    -> cptree --+-> nilfs_root (current file system)
    +-> nilfs_root (snapshot A)
    +-> nilfs_root (snapshot B)
    :
    -> nilfs_sc_info (log writer structure)
    After:
    super_block
    -> the_nilfs
    -> cptree --+-> nilfs_root (current file system)
    +-> nilfs_root (snapshot A)
    +-> nilfs_root (snapshot B)
    :
    -> nilfs_sc_info (log writer structure)

    The reason why we didn't design so from the beginning is because the
    initial shape also differed from the above. The early hierachy was
    composed of "per-mount-point" super_block -> nilfs_sb_info pairs and a
    shared nilfs object. On the kernel 2.6.37, it was changed to the
    current shape in order to unify super block instances into one per
    device, and this cleanup became applicable as the result.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     

23 Oct, 2010

7 commits

  • This finally removes own inode allocator and destructor functions for
    metadata files. Several routines, nilfs_mdt_new(),
    nilfs_mdt_new_common(), nilfs_mdt_clear(), nilfs_mdt_destroy(), and
    nilfs_alloc_inode_common() will be gone.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     
  • This removes a back pointer to nilfs object from nilfs_mdt_info
    structure that is attached to metadata files.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     
  • This makes use of iget5_locked to allocate or get inode for metadata
    files to stop using own inode allocator.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     
  • This applies prepared rollback function and redirect function of
    metadata file to DAT file, and eliminates GCDAT inode.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     
  • During garbage collection (GC), DAT file, which converts virtual block
    number to real block number, may return disk block number that is not
    yet written to the device.

    To avoid access to unwritten blocks, the current implementation stores
    changes to the caches of GCDAT during GC and atomically commit the
    changes into the DAT file after they are written to the device.

    This patch, instead, adds a function that makes a copy of specified
    buffer and stores it in nilfs_shadow_map, and a function to get the
    backup copy as needed (nilfs_mdt_freeze_buffer and
    nilfs_mdt_get_frozen_buffer respectively).

    Before DAT changes block number in an entry block, it makes a copy and
    redirect access to the buffer so that address conversion function
    (i.e. nilfs_dat_translate) refers to the old address saved in the
    copy.

    This patch gives requisites for such redirection.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     
  • 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: Ryusuke Konishi

    Ryusuke Konishi
     
  • This separates a part of initialization code of metadata file inode,
    and makes it available from the nilfs iget function that a later patch
    will add to.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     

20 Nov, 2009

4 commits

  • This adds setup and cleanup routines of the persistent object
    allocator cache.

    According to ftrace analyses, accessing buffers of the DAT file
    suffers indispensable overhead many times. To mitigate the overhead,
    This introduce cache framework for the persistent object allocator
    (palloc) which the DAT file and ifile are using.

    struct nilfs_palloc_cache represents the cache object per metadata
    file using palloc.

    The cache is initialized through nilfs_palloc_setup_cache() and
    destroyed by nilfs_palloc_destroy_cache(); callers of the former
    function will be added to individual allocators of DAT and ifile on
    successive patches.

    nilfs_palloc_destroy_cache() will be called from nilfs_mdt_destroy()
    if the cache is attached to a metadata file. A companion function
    nilfs_palloc_clear_cache() is provided to allow releasing buffer head
    references independently with the cleanup task. This adjunctive
    function will be used before invalidating pages of metadata file with
    the cache.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     
  • This will hide a function call of nilfs_mdt_clear() in
    nilfs_mdt_destroy().

    This ensures nilfs_mdt_destroy() to do cleanup jobs included in
    nilfs_mdt_clear().

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     
  • Removes two inline functions: nilfs_mdt_read_inode_direct() and
    nilfs_mdt_write_inode_direct().

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     
  • This adds an optional "object size" argument to nilfs_mdt_new_common()
    function; the argument specifies the size of private object attached
    to a newly allocated metadata file inode.

    This will afford space to keep local variables for meta data files.

    Signed-off-by: Ryusuke Konishi

    Ryusuke Konishi
     

14 Sep, 2009

1 commit


07 Apr, 2009

1 commit

  • This adds the meta data file, which serves common buffer functions to the
    DAT, sufile, cpfile, ifile, and so forth.

    Signed-off-by: Ryusuke Konishi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ryusuke Konishi