)]}'
{
  "log": [
    {
      "commit": "5fc7b14177b1a1c2f2511aed62a4ca870d0332e7",
      "tree": "f64f2b0f424e7506dd6bb07c133348a9796b2212",
      "parents": [
        "aa405b1f4238401616e7d98620170b424b2dbefc"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu May 05 12:56:51 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue May 10 22:21:57 2011 +0900"
      },
      "message": "nilfs2: use mark_buffer_dirty to mark btnode or meta data dirty\n\nThis replaces nilfs_mdt_mark_buffer_dirty and nilfs_btnode_mark_dirty\nmacros with mark_buffer_dirty and gets rid of nilfs_mark_buffer_dirty,\nan own mark buffer dirty function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "0ef28f9aec4dccfba33cef74412f601c1b48b658",
      "tree": "12018cde66a20b8e8804c11296ac19a3aec59fea",
      "parents": [
        "0cc1283881d3fcc9011c713e067795ccec322ae7"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu May 05 12:56:51 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue May 10 22:21:56 2011 +0900"
      },
      "message": "nilfs2: get rid of NILFS_I_NILFS\n\nThis replaces all references of NILFS_I_NILFS(inode)-\u003ens_bdev with\ninode-\u003ei_sb-\u003es_bdev and unfolds remaining uses of NILFS_I_NILFS inline\nfunction.\n\nBefore 2.6.37, referring to a nilfs object from inodes needed a\nconditional judgement, and NILFS_I_NILFS was helpful to simplify it.\nBut now we can simply do it by going through a super block instance\nlike inode-\u003ei_sb-\u003es_fs_info.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e3154e9748f0f337e9f6ff9dc7d7bf24d426bd1a",
      "tree": "ac2a3f3dca6189b8a608571c49da66386fd1bdec",
      "parents": [
        "f7545144c2e3d280139260df934043e0a6ccce6f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:54:26 2011 +0900"
      },
      "message": "nilfs2: get rid of nilfs_sb_info structure\n\nThis directly uses sb-\u003es_fs_info to keep a nilfs filesystem object and\nfully removes the intermediate nilfs_sb_info structure.  With this\nchange, the hierarchy of on-memory structures of nilfs will be\nsimplified as follows:\n\nBefore:\n  super_block\n       -\u003e nilfs_sb_info\n             -\u003e the_nilfs\n                   -\u003e cptree --+-\u003e nilfs_root (current file system)\n                               +-\u003e nilfs_root (snapshot A)\n                               +-\u003e nilfs_root (snapshot B)\n                               :\n             -\u003e nilfs_sc_info (log writer structure)\nAfter:\n  super_block\n       -\u003e the_nilfs\n             -\u003e cptree --+-\u003e nilfs_root (current file system)\n                         +-\u003e nilfs_root (snapshot A)\n                         +-\u003e nilfs_root (snapshot B)\n                         :\n             -\u003e nilfs_sc_info (log writer structure)\n\nThe reason why we didn\u0027t design so from the beginning is because the\ninitial shape also differed from the above.  The early hierachy was\ncomposed of \"per-mount-point\" super_block -\u003e nilfs_sb_info pairs and a\nshared nilfs object.  On the kernel 2.6.37, it was changed to the\ncurrent shape in order to unify super block instances into one per\ndevice, and this cleanup became applicable as the result.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "2879ed66e4c6da1dfc6bb0bd04566b61824f9256",
      "tree": "f6d5b47abac374fb9ecd516eaea424d990821d83",
      "parents": [
        "090fd5b10165033d7c30afde0a7e59141d820602"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Sep 05 13:35:53 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:39 2010 +0900"
      },
      "message": "nilfs2: remove own inode allocator and destructor for metadata files\n\nThis finally removes own inode allocator and destructor functions for\nmetadata files.  Several routines, nilfs_mdt_new(),\nnilfs_mdt_new_common(), nilfs_mdt_clear(), nilfs_mdt_destroy(), and\nnilfs_alloc_inode_common() will be gone.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c6e071884aca360a14c21757d760e76ec34b4894",
      "tree": "341d4130f06f1063bd63ed8a8cdb3f602848ff17",
      "parents": [
        "032dbb3b503a30fce732ec4c05525d0abed1f1d6"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Sep 05 00:23:50 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:38 2010 +0900"
      },
      "message": "nilfs2: get rid of mi_nilfs back pointer to nilfs object\n\nThis removes a back pointer to nilfs object from nilfs_mdt_info\nstructure that is attached to metadata files.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f1e89c86fdd0f5e59f6768146c86437934202033",
      "tree": "c5ba8766a3a029f0c10d6d0d09a57a7e28b7a51b",
      "parents": [
        "c1c1d7092072093ad960db2f6c08f06705c57fa4"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Sep 05 12:20:59 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:38 2010 +0900"
      },
      "message": "nilfs2: use iget for all metadata files\n\nThis makes use of iget5_locked to allocate or get inode for metadata\nfiles to stop using own inode allocator.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c1c1d7092072093ad960db2f6c08f06705c57fa4",
      "tree": "115796528882ed5d8d21258ad8cf481765a5035a",
      "parents": [
        "b1f6a4f294088b3fcf9ae67915ca550a1ded2819"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 29 12:44:56 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:38 2010 +0900"
      },
      "message": "nilfs2: get rid of GCDAT inode\n\nThis applies prepared rollback function and redirect function of\nmetadata file to DAT file, and eliminates GCDAT inode.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b1f6a4f294088b3fcf9ae67915ca550a1ded2819",
      "tree": "e4eab590fddc20111138e97ee4d55f10af519c8c",
      "parents": [
        "ebdfed4dc59d177cf26013a0c9b8ee9652e9a140"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Aug 31 11:40:34 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:37 2010 +0900"
      },
      "message": "nilfs2: add routines to redirect access to buffers of DAT file\n\nDuring garbage collection (GC), DAT file, which converts virtual block\nnumber to real block number, may return disk block number that is not\nyet written to the device.\n\nTo avoid access to unwritten blocks, the current implementation stores\nchanges to the caches of GCDAT during GC and atomically commit the\nchanges into the DAT file after they are written to the device.\n\nThis patch, instead, adds a function that makes a copy of specified\nbuffer and stores it in nilfs_shadow_map, and a function to get the\nbackup copy as needed (nilfs_mdt_freeze_buffer and\nnilfs_mdt_get_frozen_buffer respectively).\n\nBefore DAT changes block number in an entry block, it makes a copy and\nredirect access to the buffer so that address conversion function\n(i.e. nilfs_dat_translate) refers to the old address saved in the\ncopy.\n\nThis patch gives requisites for such redirection.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "ebdfed4dc59d177cf26013a0c9b8ee9652e9a140",
      "tree": "6ef90f068ae41c55234181c93d8e30a303126c43",
      "parents": [
        "a8070dd365dd995f6139a2fc3aeee10159bdcc45"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 06 12:05:43 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:37 2010 +0900"
      },
      "message": "nilfs2: add routines to roll back state of DAT file\n\nThis adds optional function to metadata files which makes a copy of\nbmap, page caches, and b-tree node cache, and rolls back to the copy\nas needed.\n\nThis enhancement is intended to displace gcdat inode that provides a\nsimilar function in a different way.\n\nIn this patch, nilfs_shadow_map structure is added to store a copy of\nthe foregoing states.  nilfs_mdt_setup_shadow_map relates this\nstructure to a metadata file.  And, nilfs_mdt_save_to_shadow_map() and\nnilfs_mdt_restore_from_shadow_map() provides save and restore\nfunctions respectively.  Finally, nilfs_mdt_clear_shadow_map() clears\nstates of nilfs_shadow_map.\n\nThe copy of b-tree node cache and page cache is made by duplicating\nonly dirty pages into corresponding caches in nilfs_shadow_map.  Their\nrestoration is done by clearing dirty pages from original caches and\nby copying dirty pages back from nilfs_shadow_map.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5e19a995f4ad8a8f20749a396bb01ebb6d4df96c",
      "tree": "a6012a5f553a29d02101c81595a368c4eb90b101",
      "parents": [
        "0e14a3595bddedfb27b51a6b0a29b5173aa2511a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 21 22:01:51 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:34 2010 +0900"
      },
      "message": "nilfs2: separate initializer of metadata file inode\n\nThis separates a part of initialization code of metadata file inode,\nand makes it available from the nilfs iget function that a later patch\nwill add to.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "db38d5ad323362bfca118b52fe5906f97a69fb45",
      "tree": "11940fedf0eb0ff80527094bd435ec89641f8adc",
      "parents": [
        "141bbdba9c2c1592d56b019277774099a5412aea"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 14 15:54:27 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: add cache framework for persistent object allocator\n\nThis adds setup and cleanup routines of the persistent object\nallocator cache.\n\nAccording to ftrace analyses, accessing buffers of the DAT file\nsuffers indispensable overhead many times.  To mitigate the overhead,\nThis introduce cache framework for the persistent object allocator\n(palloc) which the DAT file and ifile are using.\n\nstruct nilfs_palloc_cache represents the cache object per metadata\nfile using palloc.\n\nThe cache is initialized through nilfs_palloc_setup_cache() and\ndestroyed by nilfs_palloc_destroy_cache(); callers of the former\nfunction will be added to individual allocators of DAT and ifile on\nsuccessive patches.\n\nnilfs_palloc_destroy_cache() will be called from nilfs_mdt_destroy()\nif the cache is attached to a metadata file.  A companion function\nnilfs_palloc_clear_cache() is provided to allow releasing buffer head\nreferences independently with the cleanup task.  This adjunctive\nfunction will be used before invalidating pages of metadata file with\nthe cache.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "fd66c0d5c377ee8146909d0eb9258539e4b0f293",
      "tree": "7fefab4c3108aff9d18943a17cd3522a53bdc3bd",
      "parents": [
        "3961f0e2775f84a8f81b0dcddb0b356ebfe0696b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 02:25:41 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: hide nilfs_mdt_clear calls in nilfs_mdt_destroy\n\nThis will hide a function call of nilfs_mdt_clear() in\nnilfs_mdt_destroy().\n\nThis ensures nilfs_mdt_destroy() to do cleanup jobs included in\nnilfs_mdt_clear().\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3961f0e2775f84a8f81b0dcddb0b356ebfe0696b",
      "tree": "908bf31a9a3ae79c8f122bdcaa6102e0996a6ac1",
      "parents": [
        "8707df38478c8e0958b706f0ea1cdf99d00a9469"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 01:55:02 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: eliminate inlines to directly read/write inode of metadata files\n\nRemoves two inline functions: nilfs_mdt_read_inode_direct() and\nnilfs_mdt_write_inode_direct().\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5731e191f254af9135ad843119804a500528ecf3",
      "tree": "1ababce01647674af0e9c6bfb36f5ab5e96ab76c",
      "parents": [
        "9cb4e0d2b99e8b0e5e269d898ae6ab1967647c5a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 12 22:42:04 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: add size option of private object to metadata file allocator\n\nThis adds an optional \"object size\" argument to nilfs_mdt_new_common()\nfunction; the argument specifies the size of private object attached\nto a newly allocated metadata file inode.\n\nThis will afford space to keep local variables for meta data files.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7a102b09232be1ad7c180dfd1f46c7aa95dff1e0",
      "tree": "81691c3a48e3108db1a5341c8dcf4531ac404cac",
      "parents": [
        "3218929dbd25245e0f601df1e359a3ed3f7fb03b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 13:47:09 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: remove individual gfp constants for each metadata file\n\nThis gets rid of NILFS_CPFILE_GFP, NILFS_SUFILE_GFP, NILFS_DAT_GFP,\nand NILFS_IFILE_GFP.  All of these constants refer to NILFS_MDT_GFP,\nand can be removed.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5eb563f5f299a2ed488d9eb52acede45ccb14c7b",
      "tree": "965243b138a7beb5f8e2700160903a051e0510de",
      "parents": [
        "0bd49f9446130a6a3914eb07b54db489e3222b34"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: meta data file\n\nThis adds the meta data file, which serves common buffer functions to the\nDAT, sufile, cpfile, ifile, and so forth.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
