)]}'
{
  "log": [
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b7ab39f631f505edc2bbdb86620d5493f995c9da",
      "tree": "62be97ebc7fc69ceb601f23312d335ebb8038ee7",
      "parents": [
        "2304450783dfde7b0b94ae234edd0dbffa865073"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:32 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale dentry refcount\n\nMake d_count non-atomic and protect it with d_lock. This allows us to ensure a\n0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when\nwe start protecting many other dentry members with d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "947b10ae0aeda89fc066a7470fdba55f72b0b8fc",
      "tree": "93934dcf6b7709ed40e861d3b586f2c3f37f4151",
      "parents": [
        "b0c3844d8af6b9f3f18f31e1b0502fbefa2166be"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Dec 16 09:57:57 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Dec 16 14:35:18 2010 +0900"
      },
      "message": "nilfs2: fix regression of garbage collection ioctl\n\nOn 2.6.37-rc1, garbage collection ioctl of nilfs was broken due to the\ncommit 263d90cefc7d82a0 (\"nilfs2: remove own inode hash used for GC\"),\nand leading to filesystem corruption.\n\nThe patch doesn\u0027t queue gc-inodes for log writer if they are reused\nthrough the vfs inode cache.  Here, gc-inode is the inode which\nbuffers blocks to be relocated on GC.  That patch queues gc-inodes in\nnilfs_init_gcinode() function, but this function is not called when\nthey don\u0027t have I_NEW flag.  Thus, some of live blocks are wrongly\noverrode without being moved to new logs.\n\nThis resolves the problem by moving the gc-inode queueing to an outer\nfunction to ensure it\u0027s done right.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f6c26ec5085be805c9dc72d074ef5f504b9cd7df",
      "tree": "4b7e1439d62a409a4589a46ae71b6bf07ba57881",
      "parents": [
        "103cfcf522cefe00d8c322c6beac9a711acbf235"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 24 02:18:59 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 24 12:51:48 2010 +0900"
      },
      "message": "nilfs2: fix typo in comment of nilfs_dat_move function\n\nFixes a typo: \"uncommited\" -\u003e \"uncommitted\".\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "103cfcf522cefe00d8c322c6beac9a711acbf235",
      "tree": "92199ed8ad67cd128f9899e644361a7c4504467a",
      "parents": [
        "3561d43fd289f590fdae672e5eb831b8d5cf0bf6"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Tue Nov 23 09:26:02 2010 +0300"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 23 16:32:19 2010 +0900"
      },
      "message": "nilfs2: nilfs_iget_for_gc() returns ERR_PTR\n\nnilfs_iget_for_gc() returns an ERR_PTR() on failure and doesn\u0027t return\nNULL.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e4c59d61e80529aebca4a3690b4378f2c6fc4e82",
      "tree": "b222689f42121011920f15a378e24a68bd65f582",
      "parents": [
        "a1da9e8ab687e6496482b7b2aa17d0da31e55b20"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 26 12:19:34 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:53 2010 -0400"
      },
      "message": "convert nilfs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "f629d1c9bd0dbc44a6c4f9a4a67d1646c42bfc6f",
      "tree": "22ac36b494b40e17bfa68e85a094b9cc4b2f6093",
      "parents": [
        "0def08e3acc2c9c934e4671487029aed52202d42"
      ],
      "author": {
        "name": "Michael Rubin",
        "email": "mrubin@google.com",
        "time": "Tue Oct 26 14:21:33 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "mm: add account_page_writeback()\n\nTo help developers and applications gain visibility into writeback\nbehaviour this patch adds two counters to /proc/vmstat.\n\n  # grep nr_dirtied /proc/vmstat\n  nr_dirtied 3747\n  # grep nr_written /proc/vmstat\n  nr_written 3618\n\nThese entries allow user apps to understand writeback behaviour over time\nand learn how it is impacting their performance.  Currently there is no\nway to inspect dirty and writeback speed over time.  It\u0027s not possible for\nnr_dirty/nr_writeback.\n\nThese entries are necessary to give visibility into writeback behaviour.\nWe have /proc/diskstats which lets us understand the io in the block\nlayer.  We have blktrace for more in depth understanding.  We have\ne2fsprogs and debugsfs to give insight into the file systems behaviour,\nbut we don\u0027t offer our users the ability understand what writeback is\ndoing.  There is no way to know how active it is over the whole system, if\nit\u0027s falling behind or to quantify it\u0027s efforts.  With these values\nexported users can easily see how much data applications are sending\nthrough writeback and also at what rates writeback is processing this\ndata.  Comparing the rates of change between the two allow developers to\nsee when writeback is not able to keep up with incoming traffic and the\nrate of dirty memory being sent to the IO back end.  This allows folks to\nunderstand their io workloads and track kernel issues.  Non kernel\nengineers at Google often use these counters to solve puzzling performance\nproblems.\n\nPatch #4 adds a pernode vmstat file with nr_dirtied and nr_written\n\nPatch #5 add writeback thresholds to /proc/vmstat\n\nCurrently these values are in debugfs. But they should be promoted to\n/proc since they are useful for developers who are writing databases\nand file servers and are not debugging the kernel.\n\nThe output is as below:\n\n # grep threshold /proc/vmstat\n nr_pages_dirty_threshold 409111\n nr_pages_dirty_background_threshold 818223\n\nThis patch:\n\nThis allows code outside of the mm core to safely manipulate page\nwriteback state and not worry about the other accounting.  Not using these\nroutines means that some code will lose track of the accounting and we get\nbugs.\n\nModify nilfs2 to use interface.\n\nSigned-off-by: Michael Rubin \u003cmrubin@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ab34c02afeafd047a831e6fe2a4dd875ce86bee0",
      "tree": "833e385e8387e3d4d4531ade23c1d92fba8ed075",
      "parents": [
        "7f3883962870dd28b5f2322ac44a9d03640ef448",
        "6b81e14e645016597c81e71cd27ee5c57c3a3c36"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 01:26:47 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 01:26:47 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: (36 commits)\n  nilfs2: eliminate sparse warning - \"context imbalance\"\n  nilfs2: eliminate sparse warnings - \"symbol not declared\"\n  nilfs2: get rid of bdi from nilfs object\n  nilfs2: change license of exported header file\n  nilfs2: add bdev freeze/thaw support\n  nilfs2: accept 64-bit checkpoint numbers in cp mount option\n  nilfs2: remove own inode allocator and destructor for metadata files\n  nilfs2: get rid of back pointer to writable sb instance\n  nilfs2: get rid of mi_nilfs back pointer to nilfs object\n  nilfs2: see state of root dentry for mount check of snapshots\n  nilfs2: use iget for all metadata files\n  nilfs2: get rid of GCDAT inode\n  nilfs2: add routines to redirect access to buffers of DAT file\n  nilfs2: add routines to roll back state of DAT file\n  nilfs2: add routines to save and restore bmap state\n  nilfs2: do not allocate nilfs_mdt_info structure to gc-inodes\n  nilfs2: allow nilfs_clear_inode to clear metadata file inodes\n  nilfs2: get rid of snapshot mount flag\n  nilfs2: simplify life cycle management of nilfs object\n  nilfs2: do not allocate multiple super block instances for a device\n  ...\n"
    },
    {
      "commit": "6b81e14e645016597c81e71cd27ee5c57c3a3c36",
      "tree": "d8b8626db72c0c417056b608399e8abb434139e3",
      "parents": [
        "abc0b50b6b9a9de8ae210f059598265a5438f2c4"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Oct 14 13:52:00 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:40 2010 +0900"
      },
      "message": "nilfs2: eliminate sparse warning - \"context imbalance\"\n\ninsert sparse annotations to fix following sparse warning.\n\nfs/nilfs2/segment.c:2681:3: warning: context imbalance in \u0027nilfs_segctor_kill_thread\u0027 - unexpected unlock\n\nnilfs_segctor_kill_thread is only called inside sc_state_lock lock.\nsparse doesn\u0027t detect the context and warn \"unexpected unlock\".\n__acquires/__releases pretend to lock/unlock the sc_state_lock for sparse.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "abc0b50b6b9a9de8ae210f059598265a5438f2c4",
      "tree": "ebfde65b5472e4e7c2c5073d58e5778cb742648a",
      "parents": [
        "026a7d63d55ba8656ed8c8a0733265cc7d47bb8c"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Oct 08 22:37:27 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:40 2010 +0900"
      },
      "message": "nilfs2: eliminate sparse warnings - \"symbol not declared\"\n\nchange nilfs_dat_commit_free and nilfs_inode_cachep static\nto fix following warnings\n\nfs/nilfs2/super.c:72:19: warning: symbol \u0027nilfs_inode_cachep\u0027 was not declared. Should it be static?\nfs/nilfs2/dat.c:106:6: warning: symbol \u0027nilfs_dat_commit_free\u0027 was not declared. Should it be static?\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "026a7d63d55ba8656ed8c8a0733265cc7d47bb8c",
      "tree": "094f32e7aec1c514153b880ce1c6ef4f700fe481",
      "parents": [
        "c486f3895d6dc751f7c0f04f0fa67390ce4d168e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Oct 07 14:19:48 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:39 2010 +0900"
      },
      "message": "nilfs2: get rid of bdi from nilfs object\n\nNilfs now can use sb-\u003es_bdi to get backing_dev_info, so we use it\ninstead of ns_bdi on the nilfs object and remove ns_bdi.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5beb6e0b2008386571fd342d0a4a14f5c8c0baf8",
      "tree": "b5b86e48c3fe5041ce495ca9bee2e5f93f788293",
      "parents": [
        "c05dbfc2609993ccc067879579e2a7726e12b3f1"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 20 18:19:06 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:39 2010 +0900"
      },
      "message": "nilfs2: add bdev freeze/thaw support\n\nNilfs hasn\u0027t supported the freeze/thaw feature because it didn\u0027t work\ndue to the peculiar design that multiple super block instances could\nbe allocated for a device.  This limitation was removed by the patch\n\"nilfs2: do not allocate multiple super block instances for a device\".\n\nSo now this adds the freeze/thaw support to nilfs.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c05dbfc2609993ccc067879579e2a7726e12b3f1",
      "tree": "d5b20ce06901a05b8649d31eb8694fef8f2dddb7",
      "parents": [
        "2879ed66e4c6da1dfc6bb0bd04566b61824f9256"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Sep 16 00:36:24 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:39 2010 +0900"
      },
      "message": "nilfs2: accept 64-bit checkpoint numbers in cp mount option\n\nThe current implementation doesn\u0027t mount snapshots with checkpoint\nnumbers larger than INT_MAX since it uses match_int() for parsing\n\"cp\u003d\" mount option.\n\nThis uses simple_strtoull() for the conversion to resolve the issue.\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": "090fd5b10165033d7c30afde0a7e59141d820602",
      "tree": "cbb3ec5b29719457cd45f72624d03d7e31af4a4c",
      "parents": [
        "c6e071884aca360a14c21757d760e76ec34b4894"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Sep 05 16:17:35 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 back pointer to writable sb instance\n\nNilfs object holds a back pointer to a writable super block instance\nin nilfs-\u003ens_writer, and this became eliminable since sb is now made\nper device and all inodes have a valid pointer to it.\n\nThis deletes the ns_writer pointer and a reader/writer semaphore\nprotecting it.\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": "032dbb3b503a30fce732ec4c05525d0abed1f1d6",
      "tree": "462696abcf0783d50efe97a3ca2641beecc91a3e",
      "parents": [
        "f1e89c86fdd0f5e59f6768146c86437934202033"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 13 11:16:34 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:38 2010 +0900"
      },
      "message": "nilfs2: see state of root dentry for mount check of snapshots\n\nAfter applied the patch that unified sb instances, root dentry of\nsnapshots can be left in dcache even after their trees are unmounted.\n\nThe orphan root dentry/inode keeps a root object, and this causes\nfalse positive of nilfs_checkpoint_is_mounted function.\n\nThis resolves the issue by having nilfs_checkpoint_is_mounted test\nwhether the root dentry is busy or not.\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": "a8070dd365dd995f6139a2fc3aeee10159bdcc45",
      "tree": "11a16157b10ed0b6d3f773ded6bd5b82c3f8c4bc",
      "parents": [
        "adbb39b5485b72dca963a2bc9b1b22bfc19d4967"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Aug 30 23:42:18 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 save and restore bmap state\n\nThis adds routines to save and restore the state of bmap structure.\nThe bmap state is stored in a given nilfs_bmap_store object.\n\nThese routines will be used to roll back the state of dat inode\nwithout using gcdat inode.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "adbb39b5485b72dca963a2bc9b1b22bfc19d4967",
      "tree": "7c28b2011ee35b2407140de15381d9c417755dd9",
      "parents": [
        "518d1a6a1d6610a014875a2fe3252e89b6260d2f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Sep 05 10:14: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: do not allocate nilfs_mdt_info structure to gc-inodes\n\nGC-inode now doesn\u0027t need the nilfs_mdt_info structure and there is no\nreason that it is a sort of metadata files.\n\nThis stops the allocation and makes them not dependent on metadata\nfile routines.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "518d1a6a1d6610a014875a2fe3252e89b6260d2f",
      "tree": "375624bb35302cac1c4acff40af16bf3ca681a48",
      "parents": [
        "b453c95eb8d6a3b2348e9c7bc28a7d223cb640e3"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Aug 20 23:40:54 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:37 2010 +0900"
      },
      "message": "nilfs2: allow nilfs_clear_inode to clear metadata file inodes\n\nAllows clear inode function (nilfs_clear_inode) to handle metadata\nfiles that uses bitmap-based object alloctor.  DAT and ifile\ncorrespond to this.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "348fe8da13621b3d14ab2d156e74551611997017",
      "tree": "82e60058d2af36e5f6e8bb7851b5b25ba3e72909",
      "parents": [
        "f11459ad7dab9e9eb5a05b8bd3bec338ea8f485d"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Sep 09 02:07:56 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:36 2010 +0900"
      },
      "message": "nilfs2: simplify life cycle management of nilfs object\n\nThis stops pre-allocating nilfs object in nilfs_get_sb routine, and\nstops managing its life cycle by reference counting.\n\nnilfs_find_or_create_nilfs() function, nilfs-\u003ens_mount_mutex,\nnilfs_objects list, and the reference counter will be removed through\nthe simplification.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f11459ad7dab9e9eb5a05b8bd3bec338ea8f485d",
      "tree": "91808a1f88f6ad24f381473e1bde22f10cac49e6",
      "parents": [
        "ab4d8f7ebf33beff97e766d18db47f1ea9635769"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Aug 16 01:54:52 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:36 2010 +0900"
      },
      "message": "nilfs2: do not allocate multiple super block instances for a device\n\nThis stops allocating multiple super block instances for a device.\n\nAll snapshots and a current mode mount (i.e. latest tree) will be\ncontrolled with nilfs_root objects that are kept within an sb\ninstance.\n\nnilfs_get_sb() is rewritten so that it always has a root object for\nthe latest tree and snapshots make additional root objects.\n\nThe root dentry of the latest tree is binded to sb-\u003es_root even if it\nisn\u0027t attached on a directory.  Root dentries of snapshots or the\nlatest tree are binded to mnt-\u003emnt_root on which they are mounted.\n\nWith this patch, nilfs_find_sbinfo() function, nilfs-\u003ens_supers list,\nand nilfs-\u003ens_current back pointer, are deleted.  In addition,\ninit_nilfs() and load_nilfs() are simplified since they will be called\nonce for a device, not repeatedly called for mount points.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "ab4d8f7ebf33beff97e766d18db47f1ea9635769",
      "tree": "063af215681e934d5b0d62a997f0811e4d85684a",
      "parents": [
        "367ea33486a68f935a01311a3be9b7e97d2e5ead"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Aug 26 02:15:41 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:36 2010 +0900"
      },
      "message": "nilfs2: split out nilfs_attach_snapshot\n\nThis splits the code to attach snapshots into a separate routine for\nconvenience sake.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "367ea33486a68f935a01311a3be9b7e97d2e5ead",
      "tree": "de5ccfd05a527bc85ba63b9f22fdef57bfa80053",
      "parents": [
        "dc3d3b810a644dfa329efaa230cd514226f8981d"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Aug 26 01:52:51 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:35 2010 +0900"
      },
      "message": "nilfs2: split out nilfs_get_root_dentry\n\nThis splits the code to allocate root dentry into a separate routine\nfor convenience in successive changes.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "dc3d3b810a644dfa329efaa230cd514226f8981d",
      "tree": "e0a2c2bfb3edb6b1fa4383cb2d1f52adb653c9e2",
      "parents": [
        "fd52202930b7e8db48bee5a6fc6b1f438e822a23"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 15 23:33:57 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:35 2010 +0900"
      },
      "message": "nilfs2: deny write access to inodes in snapshots\n\nSnapshots of nilfs are read-only.\n\nAfter super block instances (sb) will be unified, nilfs will need to\ncheck write access by a way other than implicit test with\nIS_RDONLY(inode).  This is because IS_RDONLY() refers to MS_RDONLY bit\nof inode-\u003ei_sb-\u003es_flags and it will become inaccurate after the\nunification of sb.\n\nTo prepare for the issue, this uses i_op-\u003epermission to deny write\naccess to inodes in snapshots.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "fd52202930b7e8db48bee5a6fc6b1f438e822a23",
      "tree": "1ecb7ce60634b5575dd463417447555ef9f1576a",
      "parents": [
        "b7c0634204993d7c6678c852e4bd118426599111"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 14 21:44:51 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:35 2010 +0900"
      },
      "message": "nilfs2: use checkpoint tree for mount check of snapshots\n\nThis rewrites nilfs_checkpoint_is_mounted() function so that it\ndecides whether a checkpoint is mounted by whether the corresponding\nroot object is found in checkpoint tree.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b7c0634204993d7c6678c852e4bd118426599111",
      "tree": "4934238a49a56aaa072b4dea79b836439be760d8",
      "parents": [
        "e912a5b66837ee89fb025e67b5efeaa11930c2ce"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 14 14:48:32 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:35 2010 +0900"
      },
      "message": "nilfs2: move inode count and block count into root object\n\nThis moves sbi-\u003es_inodes_count and sbi-\u003es_blocks_count into nilfs_root\nobject.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e912a5b66837ee89fb025e67b5efeaa11930c2ce",
      "tree": "46209cdf7417863024131ff54f56120e43ae7a7b",
      "parents": [
        "8e656fd518784b49453f60c5f78b78703bc85cb2"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 14 13:07:15 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:35 2010 +0900"
      },
      "message": "nilfs2: use root object to get ifile\n\nThis rewrites functions using ifile so that they get ifile from\nnilfs_root object, and will remove sbi-\u003es_ifile.  Some functions that\ndon\u0027t know the root object are extended to receive it from caller.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "8e656fd518784b49453f60c5f78b78703bc85cb2",
      "tree": "7adf4b71aba4bdf31dc05489a06933c48a0ea6f2",
      "parents": [
        "4d8d9293dce503eb0e083e17a02a328d397e7f00"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Aug 27 00:23:02 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:34 2010 +0900"
      },
      "message": "nilfs2: make snapshots in checkpoint tree exportable\n\nThe previous export operations cannot handle multiple versions of\na filesystem if they belong to the same sb instance.\n\nThis adds a new type of file handle and extends export operations so\nthat they can get the inode specified by a checkpoint number as well\nas an inode number and a generation number.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4d8d9293dce503eb0e083e17a02a328d397e7f00",
      "tree": "ffa2dce7f100b1346131adc01cf93e280b225509",
      "parents": [
        "ba65ae4729bf81c58d9fc847f67d57eec525b042"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Aug 25 17:45:44 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:34 2010 +0900"
      },
      "message": "nilfs2: set pointer to root object in inodes\n\nThis puts a pointer to nilfs_root object in the private part of\non-memory inode, and makes nilfs_iget function pick up the inode with\nthe same root object.\n\nNon-root inodes inherit its nilfs_root object from parent inode.  That\nof the root inode is allocated through nilfs_attach_checkpoint()\nfunction.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "ba65ae4729bf81c58d9fc847f67d57eec525b042",
      "tree": "6b2a4499a1e67bf858ce55cfe2e806b24c3697e7",
      "parents": [
        "263d90cefc7d82a01c296c59532ff59d67c63509"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 14 12:59:15 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:34 2010 +0900"
      },
      "message": "nilfs2: add checkpoint tree to nilfs object\n\nTo hold multiple versions of a filesystem in one sb instance, a new\non-memory structure is necessary to handle one or more checkpoints.\n\nThis adds a red-black tree of checkpoints to nilfs object, and adds\nlookup and create functions for them.\n\nEach checkpoint is represented by \"nilfs_root\" structure, and this\nstructure has rb_node to configure the rb-tree.\n\nThe nilfs_root object is identified with a checkpoint number.  For\neach snapshot, a nilfs_root object is allocated and the checkpoint\nnumber of snapshot is assigned to it.  For a regular mount\n(i.e. current mode mount), NILFS_CPTREE_CURRENT_CNO constant is\nassigned to the corresponding nilfs_root object.\n\nEach nilfs_root object has an ifile inode and some counters.  These\nitems will displace those of nilfs_sb_info structure in successive\npatches.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "263d90cefc7d82a01c296c59532ff59d67c63509",
      "tree": "df289cc3bbb8681b3a42e3c0a25202b085fc9362",
      "parents": [
        "5e19a995f4ad8a8f20749a396bb01ebb6d4df96c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Aug 20 19:06:11 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:34 2010 +0900"
      },
      "message": "nilfs2: remove own inode hash used for GC\n\nThis uses inode hash function that vfs provides instead of the own\nhash table for caching gc inodes.  This finally removes the own inode\nhash from nilfs.\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": "0e14a3595bddedfb27b51a6b0a29b5173aa2511a",
      "tree": "ec1e831c77a7de04315871e687082bb9230a17d7",
      "parents": [
        "6c43f41000312fefa482c3bfdd97e7f81d6be0ec"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Aug 20 21:20:29 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:33 2010 +0900"
      },
      "message": "nilfs2: use iget5_locked to get inode\n\nThis uses iget5_locked instead of iget_locked so that gc cache can\nlook up inodes with an inode number and an optional checkpoint number.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "6c43f41000312fefa482c3bfdd97e7f81d6be0ec",
      "tree": "de22a81c028f33d9fc2354bfdc218191b96240cf",
      "parents": [
        "7d6cd92fe2de3c286b8e95f43223f09db9302635"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Aug 20 20:10:38 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:33 2010 +0900"
      },
      "message": "nilfs2: keep zero value in i_cno except for gc-inodes\n\nOn-memory inode structures of nilfs have a member \"i_cno\" which stores\na checkpoint number related to the inode.  For gc-inodes, this field\nindicates version of data each gc-inode caches for GC.  Log writer\ntemporarily uses \"i_cno\" to transfer the latest checkpoint number.\n\nThis stops the latter use and lets only gc-inodes use it.\n\nThe purpose of this patch is to allow the successive change use\n\"i_cno\" for inode lookup.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7d6cd92fe2de3c286b8e95f43223f09db9302635",
      "tree": "24aded0ed7e0cd73c6930209a2d47df42b775d73",
      "parents": [
        "b91c9a97c9333c87fe2a0c94b3b22b24df1c5fc2"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 21 00:30:39 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:33 2010 +0900"
      },
      "message": "nilfs2: allow nilfs_dirty_inode to mark metadata file inodes dirty\n\nThis allows sop-\u003edirty_inode callback function (nilfs_dirty_inode) to\nhandle metadata file inodes.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b91c9a97c9333c87fe2a0c94b3b22b24df1c5fc2",
      "tree": "c407ef3a87117f9ecb92b54bebb055110cafb64f",
      "parents": [
        "9566a7a851eb7201e3207eab53ee81efd0850fee"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Aug 20 23:46:06 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:33 2010 +0900"
      },
      "message": "nilfs2: allow nilfs_destroy_inode to destroy metadata file inodes\n\nThe current nilfs_destroy_inode() doesn\u0027t handle metadata file inodes\nincluding gc inodes (dummy inodes used for garbage collection).\n\nThis allows nilfs_destroy_inode() to destroy inodes of metadata files.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9566a7a851eb7201e3207eab53ee81efd0850fee",
      "tree": "b2f57198a208e64576b951d001c6deb2c428770e",
      "parents": [
        "f5d9d249b9a6884daff513ef08afa43d3f7e085f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Aug 10 00:58:41 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 23 09:24:33 2010 +0900"
      },
      "message": "nilfs2: accept future revisions\n\nCompatibility of nilfs partitions is now managed with three feature\nsets.  This changes old compatibility check with revision number so\nthat it can accept future revisions.\n\nNote that we can stop support of experimental versions of nilfs that\ndoesn\u0027t know the feature sets by incrementing NILFS_CURRENT_REV.  We\ndon\u0027t have to do it soon, but it would be a possible option whenever\nthe need arises.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d6d4c19c5f9ac5972e30e89b3c81ad1fd6e11fee",
      "tree": "e2f2e8204e0ff1f7af40aacbf50ee5fbbaa14030",
      "parents": [
        "22b26db6f82bfa9a7f2b44443af3b5541927a130"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@infradead.org",
        "time": "Wed Feb 24 13:25:32 2010 +0100"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Oct 04 21:10:41 2010 +0200"
      },
      "message": "BKL: Remove BKL from NILFS2\n\nThe BKL is only used in put_super, fill_super and remount_fs that are all\nthree protected by the superblocks s_umount rw_semaphore. Therefore it is\nsafe to remove the BKL entirely.\n\nSigned-off-by: Jan Blunck \u003cjblunck@infradead.org\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "db71922217a214e5c9268448e537b54fc1f301ea",
      "tree": "9c9afbf29411547891f6968e5ade29ce59d66c07",
      "parents": [
        "899611ee7d373e5eeda08e9a8632684e1ebbbf00"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@infradead.org",
        "time": "Sun Aug 15 22:51:10 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Oct 04 21:10:10 2010 +0200"
      },
      "message": "BKL: Explicitly add BKL around get_sb/fill_super\n\nThis patch is a preparation necessary to remove the BKL from do_new_mount().\nIt explicitly adds calls to lock_kernel()/unlock_kernel() around\nget_sb/fill_super operations for filesystems that still uses the BKL.\n\nI\u0027ve read through all the code formerly covered by the BKL inside\ndo_kern_mount() and have satisfied myself that it doesn\u0027t need the BKL\nany more.\n\ndo_kern_mount() is already called without the BKL when mounting the rootfs\nand in nfsctl. do_kern_mount() calls vfs_kern_mount(), which is called\nfrom various places without BKL: simple_pin_fs(), nfs_do_clone_mount()\nthrough nfs_follow_mountpoint(), afs_mntpt_do_automount() through\nafs_mntpt_follow_link(). Both later functions are actually the filesystems\nfollow_link inode operation. vfs_kern_mount() is calling the specified\nget_sb function and lets the filesystem do its job by calling the given\nfill_super function.\n\nTherefore I think it is safe to push down the BKL from the VFS to the\nlow-level filesystems get_sb/fill_super operation.\n\n[arnd: do not add the BKL to those file systems that already\n       don\u0027t use it elsewhere]\n\nSigned-off-by: Jan Blunck \u003cjblunck@infradead.org\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "dd3932eddf428571762596e17b65f5dc92ca361b",
      "tree": "57cec5ae2f862037f78b7e993323d77955bb6463",
      "parents": [
        "8786fb70ccb36c7cff64680bb80c46d3a09d44db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Sep 16 20:51:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:52:58 2010 +0200"
      },
      "message": "block: remove BLKDEV_IFL_WAIT\n\nAll the blkdev_issue_* helpers can only sanely be used for synchronous\ncaller.  To issue cache flushes or barriers asynchronously the caller needs\nto set up a bio by itself with a completion callback to move the asynchronous\nstate machine ahead.  So drop the BLKDEV_IFL_WAIT flag that is always\nspecified when calling blkdev_issue_* and also remove the now unused flags\nargument to blkdev_issue_flush and blkdev_issue_zeroout.  For\nblkdev_issue_discard we need to keep it for the secure discard flag, which\ngains a more descriptive name and loses the bitops vs flag confusion.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f8c131f5b6ffc899a70b30e541f367d47f89691c",
      "tree": "c1f4bc92dc382b80004b5b63223f16e67219986e",
      "parents": [
        "7cd33ad23ec41d685902159be8b2c6552fab8bd0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Aug 18 05:29:15 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:39 2010 +0200"
      },
      "message": "nilfs2: replace barriers with explicit flush / FUA usage\n\nSwitch to the WRITE_FLUSH_FUA flag for log writes, remove the EOPNOTSUPP\ndetection for barriers and stop setting the barrier flag for discards.\n\ntj: nilfs is now fixed to wait for discard completion.  Updated this\n    patch accordingly and dropped warning about it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4afc31345e5f543e5d89a47aeadaaad1d91a5bc8",
      "tree": "698cd37b9f285343e2c309a897d566501760bb9f",
      "parents": [
        "2bfc96a127bc1cc94d26bfaa40159966064f9c8c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 29 01:55:38 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Aug 30 10:18:03 2010 +0900"
      },
      "message": "nilfs2: fix leak of shadow dat inode in error path of load_nilfs\n\nIf load_nilfs() gets an error while doing recovery, it will fail to\nfree the shadow inode of dat (nilfs-\u003ens_gc_dat).\n\nThis fixes the leak issue.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a28e0852d45e65d9edf249c36e432b5e0a80f01d",
      "tree": "b19f4725757252eb070157b06765235138384813",
      "parents": [
        "e36c886a0f9d624377977fa6cae309cfd7f362fa",
        "1cb0c924fa2d616e5e3b5bc62d97191aac9ff442"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 22 09:44:47 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 22 09:44:47 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2:\n  nilfs2: wait for discard to finish\n"
    },
    {
      "commit": "145c3ae46b37993b0debb0b3da6256daea4a6ec5",
      "tree": "0dbff382ce36b23b3d2dbff87d3eaab73a07a2a4",
      "parents": [
        "81ca03a0e2ea0207b2df80e0edcf4c775c07a505",
        "99b7db7b8ffd6bb755eb0a175596421a0b581cb2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 18 09:35:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 18 09:35:08 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  fs: brlock vfsmount_lock\n  fs: scale files_lock\n  lglock: introduce special lglock and brlock spin locks\n  tty: fix fu_list abuse\n  fs: cleanup files_lock locking\n  fs: remove extra lookup in __lookup_hash\n  fs: fs_struct rwlock to spinlock\n  apparmor: use task path helpers\n  fs: dentry allocation consolidation\n  fs: fix do_lookup false negative\n  mbcache: Limit the maximum number of cache entries\n  hostfs -\u003efollow_link() braino\n  hostfs: dumb (and usually harmless) tpyo - strncpy instead of strlcpy\n  remove SWRITE* I/O types\n  kill BH_Ordered flag\n  vfs: update ctime when changing the file\u0027s permission by setfacl\n  cramfs: only unlock new inodes\n  fix reiserfs_evict_inode end_writeback second call\n"
    },
    {
      "commit": "1cb0c924fa2d616e5e3b5bc62d97191aac9ff442",
      "tree": "199a9ffc425033d27620e70d8ffd44a9e44ad931",
      "parents": [
        "3b89f56783a4ef796190ef1192c25e72e0b986b6"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Aug 18 21:11:11 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Aug 19 00:11:06 2010 +0900"
      },
      "message": "nilfs2: wait for discard to finish\n\nnilfs_discard_segment() doesn\u0027t wait for completion of discard\nrequests.  This specifies BLKDEV_IFL_WAIT flag when calling\nblkdev_issue_discard() in order to fix the sync failure.\n\nReported-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "87e99511ea54510ffb60b98001d108794d5037f8",
      "tree": "359228828515e02302d9b259a066a1f1118eba0a",
      "parents": [
        "dad5eb6daa7eeb63d4fc9d982892c59faa07e797"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Aug 11 17:05:45 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 18 01:09:00 2010 -0400"
      },
      "message": "kill BH_Ordered flag\n\nInstead of abusing a buffer_head flag just add a variant of\nsync_dirty_buffer which allows passing the exact type of write\nflag required.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ea1a16f7168ac19d974ac51b47593b92280e7992",
      "tree": "e16e89f6f8f3a440476bba74a1c28d2f5bc0f5f4",
      "parents": [
        "af4e36318edb848fcc0a8d5f75000ca00cdc7595"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 15 20:16:11 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Aug 16 11:08:36 2010 +0900"
      },
      "message": "nilfs2: fix false warning saying one of two super blocks is broken\n\nAfter applying commit b2ac86e1, the following message got appeared\nafter unclean shutdown:\n\n\u003e NILFS warning: broken superblock. using spare superblock.\n\nThis turns out to be a false message due to the change which updates\ntwo super blocks alternately.  The secondary super block now can be\nselected if it\u0027s newer than the primary one.\n\nThis kills the false warning by suppressing it if another super block\nis not actually broken.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "af4e36318edb848fcc0a8d5f75000ca00cdc7595",
      "tree": "c23ce8d1839f31ec4c472da184f16542a59752dd",
      "parents": [
        "da5cabf80e2433131bf0ed8993abc0f7ea618c73"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Aug 13 12:42:24 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Aug 16 11:08:36 2010 +0900"
      },
      "message": "nilfs2: fix list corruption after ifile creation failure\n\nIf nilfs_attach_checkpoint() gets a memory allocation failure during\ncreation of ifile, it will return without removing nilfs_sb_info\nstruct from ns_supers list.  When a concurrently mounted snapshot is\nunmounted or another new snapshot is mounted after that, this causes\nkernel oops as below:\n\n\u003e BUG: unable to handle kernel NULL pointer dereference at (null)\n\u003e IP: [\u003cf83662ff\u003e] nilfs_find_sbinfo+0x74/0xa4 [nilfs2]\n\u003e *pde \u003d 00000000\n\u003e Oops: 0000 [#1] SMP\n\u003csnip\u003e\n\u003e Call Trace:\n\u003e  [\u003cf835dc29\u003e] ? nilfs_get_sb+0x165/0x532 [nilfs2]\n\u003e  [\u003cc1173c87\u003e] ? ida_get_new_above+0x16d/0x187\n\u003e  [\u003cc109a7f8\u003e] ? alloc_vfsmnt+0x7e/0x10a\n\u003e  [\u003cc1070790\u003e] ? kstrdup+0x2c/0x40\n\u003e  [\u003cc1089041\u003e] ? vfs_kern_mount+0x96/0x14e\n\u003e  [\u003cc108913d\u003e] ? do_kern_mount+0x32/0xbd\n\u003e  [\u003cc109b331\u003e] ? do_mount+0x642/0x6a1\n\u003e  [\u003cc101a415\u003e] ? do_page_fault+0x0/0x2d1\n\u003e  [\u003cc1099c00\u003e] ? copy_mount_options+0x80/0xe2\n\u003e  [\u003cc10705d8\u003e] ? strndup_user+0x48/0x67\n\u003e  [\u003cc109b3f1\u003e] ? sys_mount+0x61/0x90\n\u003e  [\u003cc10027cc\u003e] ? sysenter_do_call+0x12/0x22\n\nThis fixes the problem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "2f9e825d3e0e2b407ae8f082de5c00afcf7378fb",
      "tree": "f8b3ee40674ce4acd5508a0a0bf52a30904caf6c",
      "parents": [
        "7ae0dea900b027cd90e8a3e14deca9a19e17638b",
        "de75d60d5ea235e6e09f4962ab22541ce0fe176a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block: (149 commits)\n  block: make sure that REQ_* types are seen even with CONFIG_BLOCK\u003dn\n  xen-blkfront: fix missing out label\n  blkdev: fix blkdev_issue_zeroout return value\n  block: update request stacking methods to support discards\n  block: fix missing export of blk_types.h\n  writeback: fix bad _bh spinlock nesting\n  drbd: revert \"delay probes\", feature is being re-implemented differently\n  drbd: Initialize all members of sync_conf to their defaults [Bugz 315]\n  drbd: Disable delay probes for the upcomming release\n  writeback: cleanup bdi_register\n  writeback: add new tracepoints\n  writeback: remove unnecessary init_timer call\n  writeback: optimize periodic bdi thread wakeups\n  writeback: prevent unnecessary bdi threads wakeups\n  writeback: move bdi threads exiting logic to the forker thread\n  writeback: restructure bdi forker loop a little\n  writeback: move last_active to bdi\n  writeback: do not remove bdi from bdi_list\n  writeback: simplify bdi code a little\n  writeback: do not lose wake-ups in bdi threads\n  ...\n\nFixed up pretty trivial conflicts in drivers/block/virtio_blk.c and\ndrivers/scsi/scsi_error.c as per Jens.\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "6fd1e5c994c392ebdbe45600051b2a32ec4860f1",
      "tree": "672de56405c3a7dd4ffb079304661e4ef14401b7",
      "parents": [
        "4ec70c9b46b032e7f1b41b543c607d6a33b78a1a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 11:55:00 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:25 2010 -0400"
      },
      "message": "convert nilfs2 to -\u003eevict_inode()\n\n[folded build fix from sfr]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4ffdde6e56fdf8c34ddadc2674d6eb978083369",
      "tree": "0fa07df92d804cb7d0482135195e4835cb16403a",
      "parents": [
        "b5fc510c48f631882ccec3c0f02a25d5b67de09f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 02 17:38:30 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:44 2010 -0400"
      },
      "message": "simplify checks for I_CLEAR/I_FREEING\n\nadd I_CLEAR instead of replacing I_FREEING with it.  I_CLEAR is\nequivalent to I_FREEING for almost all code looking at either;\nit\u0027s there to keep track of having called clear_inode() exactly\nonce per inode lifetime, at some point after having set I_FREEING.\nI_CLEAR and I_FREEING never get set at the same time with the\ncurrent code, so we can switch to setting i_flags to I_FREEING | I_CLEAR\ninstead of I_CLEAR without loss of information.  As the result of\nsuch change, checks become simpler and the amount of code that needs\nto know about I_CLEAR shrinks a lot.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1025774ce411f2bd4b059ad7b53f0003569b74fa",
      "tree": "2be221c205cb5579652a6063e8ee27d1c72d1bbd",
      "parents": [
        "eef2380c187890816b73b1a4cb89a09203759469"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:02 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:37 2010 -0400"
      },
      "message": "remove inode_setattr\n\nReplace inode_setattr with opencoded variants of it in all callers.  This\nmoves the remaining call to vmtruncate into the filesystem methods where it\ncan be replaced with the proper truncate sequence.\n\nIn a few cases it was obvious that we would never end up calling vmtruncate\nso it was left out in the opencoded variant:\n\n spufs: explicitly checks for ATTR_SIZE earlier\n btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier\n ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above\n\nIn addition to that ncpfs called inode_setattr with handcrafted iattrs,\nwhich allowed to trim down the opencoded variant.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "155130a4f7848b1aac439cab6bda1a175507c71c",
      "tree": "5019b14b0a9221b08959196e01e3f9326957d678",
      "parents": [
        "6e1db88d536adcbbfe562b2d4b7d6425784fff12"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:58 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:33 2010 -0400"
      },
      "message": "get rid of block_write_begin_newtrunc\n\nMove the call to vmtruncate to get rid of accessive blocks to the callers\nin preparation of the new truncate sequence and rename the non-truncating\nversion to block_write_begin.\n\nWhile we\u0027re at it also remove several unused arguments to block_write_begin.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6e1db88d536adcbbfe562b2d4b7d6425784fff12",
      "tree": "8cfcb5a6190722db6249b2e4978f39247975abcf",
      "parents": [
        "f4e420dc423148fba637af1ab618fa8896dfb2d6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:57 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:32 2010 -0400"
      },
      "message": "introduce __block_write_begin\n\nSplit up the block_write_begin implementation - __block_write_begin is a new\ntrivial wrapper for block_prepare_write that always takes an already\nallocated page and can be either called from block_write_begin or filesystem\ncode that already has a page allocated.  Remove the handling of already\nallocated pages from block_write_begin after switching all callers that\ndo it to __block_write_begin.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f4e420dc423148fba637af1ab618fa8896dfb2d6",
      "tree": "df0e81f5f4b8448dd6b3929e5537dcc46e7d7dde",
      "parents": [
        "282dc178849882289d30e58b54be6b2799b351aa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:56 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:31 2010 -0400"
      },
      "message": "clean up write_begin usage for directories in pagecache\n\nFor filesystem that implement directories in pagecache we call\nblock_write_begin with an already allocated page for this code, while the\nnormal regular file write path uses the default block_write_begin behaviour.\n\nGet rid of the __foofs_write_begin helper and opencode the normal write_begin\ncall in foofs_write_begin, while adding a new foofs_prepare_chunk helper for\nthe directory code.  The added benefit is that foofs_prepare_chunk has\na much saner calling convention.\n\nNote that the interruptible flag passed into block_write_begin is always\nignored if we already pass in a page (see next patch for details), and\nwe never were doing truncations of exessive blocks for this case either so we\ncan switch directly to block_write_begin_newtrunc.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eafdc7d190a944c755a9fe68573c193e6e0217e7",
      "tree": "915c3cc8004706fabf88eae1ab123a3fa0147516",
      "parents": [
        "256249584bda1a9357e2d29987a37f5b2df035f6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:53 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:29 2010 -0400"
      },
      "message": "sort out blockdev_direct_IO variants\n\nMove the call to vmtruncate to get rid of accessive blocks to the callers\nin prepearation of the new truncate calling sequence.  This was only done\nfor DIO_LOCKING filesystems, so the __blockdev_direct_IO_newtrunc variant\nwas not needed anyway.  Get rid of blockdev_direct_IO_no_locking and\nits _newtrunc variant while at it as just opencoding the two additional\nparamters is shorted than the name suffix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "89c0fd014d34d409a7b196667c2b9a4813b6c968",
      "tree": "9fad0ab3ce77b7537ed7d8db45c40e746e26692f",
      "parents": [
        "6cda9fa2575ec0869fe77b0bdf295c0e51868cab"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 25 22:44:53 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 25 23:29:21 2010 +0900"
      },
      "message": "nilfs2: reject filesystem with unsupported block size\n\nThis inserts sanity check that refuses to mount a filesystem with\nunsupported block size.\n\nPreviously, kernel code of nilfs was looking only limitation of\ndevices though mkfs.nilfs2 limits the range of block sizes; there was\nno check that prevents rec_len overflow with larger block sizes.\n\nWith this change, block sizes larger than 64KB or smaller than 1KB\nwill get rejected explicitly by kernel.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "6cda9fa2575ec0869fe77b0bdf295c0e51868cab",
      "tree": "09f160f79f2ab135cd0c9ce0a2099d96423e5e00",
      "parents": [
        "c28e69d9332aab739920082a0a5677d861390824"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 25 20:39:03 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 25 20:46:43 2010 +0900"
      },
      "message": "nilfs2: avoid rec_len overflow with 64KB block size\n\nWith 64KB blocksize, a directory entry can have size 64KB which does\nnot fit into 16 bits we have for entry length.  So this patch stores\n0xffff instead and converts value when read from / written to disk.\n\nNilfs derives its directory implementation from ext2 filesystem, and\nthis draws upon the corresponding change on ext2.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c28e69d9332aab739920082a0a5677d861390824",
      "tree": "b51e3cb03298c8f2d3d1443647b7a6e75af5d4c6",
      "parents": [
        "c5ca48aabe8b11674bf1102abe52d17ecc053f9c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Jul 24 17:09:10 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Jul 24 17:36:29 2010 +0900"
      },
      "message": "nilfs2: simplify nilfs_get_page function\n\nImplementation of nilfs_get_page() is a bit old as below:\n\n - A common read_mapping_page inline function is now available instead\n   of its read_cache_page use.\n - wait_on_page_locked() use in the function is eliminable since\n   read_cache_page function does the same thing through wait_on_page_read().\n - PageUptodate() check is eliminable for the same reason.\n\nThis renews nilfs_get_page() based on these points.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c5ca48aabe8b11674bf1102abe52d17ecc053f9c",
      "tree": "18c7647b42981d457c59cd4a842ca342a239770d",
      "parents": [
        "1a80a1763fb760b3a84a28df87515f7cdc07a4f4"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jul 22 03:22:20 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:16 2010 +0900"
      },
      "message": "nilfs2: reject incompatible filesystem\n\nThis forces nilfs to check compatibility of feature flags so as to\nreject a filesystem with unknown features when it mounts or remounts\nthe filesystem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "03bdb5ac58a2144dfe8cfd73347fdb9f57e2e062",
      "tree": "1ac37bb7c8020a2cf40ff5d8996d51725b190e8d",
      "parents": [
        "4e13e66bee2d792c1aae21797f16c181024834eb"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 18 10:42:26 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:16 2010 +0900"
      },
      "message": "nilfs2: apply read-ahead for nilfs_btree_lookup_contig\n\nThis applies read-ahead to nilfs_btree_do_lookup and\nnilfs_btree_lookup_contig functions and extends them to read ahead\nsiblings of level 1 btree nodes that hold data blocks.\n\nAt present, the read-ahead is not applied to most btree operations;\nonly get_block() callback function, which is used during read of\nregular files or directories, receives the benefit.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4e13e66bee2d792c1aae21797f16c181024834eb",
      "tree": "1fa51dade28bc025d9bda0e09dec1f202281a498",
      "parents": [
        "464ece88630d0fb715ca942eabb1da825046a534"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 18 10:42:25 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:15 2010 +0900"
      },
      "message": "nilfs2: introduce check flag to btree node buffer\n\nnilfs_btree_get_block() now may return untested buffer due to\nread-ahead.  This adds a new flag for buffer heads so that the btree\ncode can check whether the buffer is already verified or not.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "464ece88630d0fb715ca942eabb1da825046a534",
      "tree": "254185629ce58cf314c5b22b846969a3c26984ed",
      "parents": [
        "26dfdd8e29f28c08aa67861b3c83d0f3f7d30cee"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 18 10:42:24 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:15 2010 +0900"
      },
      "message": "nilfs2: add btree get block function with readahead option\n\nThis adds __nilfs_btree_get_block() function that can issue a series\nof read-ahead requests for sibling btree nodes.\n\nThis read-ahead needs parent node block, so nilfs_btree_readahead_info\nstructure is added to pass the information that\n__nilfs_btree_get_block() needs.\n\nThis also replaces the previous nilfs_btree_get_block() implementation\nwith a wrapper function of __nilfs_btree_get_block().\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "26dfdd8e29f28c08aa67861b3c83d0f3f7d30cee",
      "tree": "3cc14a71010b454f6524006e973147837f040a39",
      "parents": [
        "f8e6cc013b896d75d6ce4ec9e168014af1257fd8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 18 10:42:23 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:15 2010 +0900"
      },
      "message": "nilfs2: add read ahead mode to nilfs_btnode_submit_block\n\nThis adds mode argument to nilfs_btnode_submit_block() function and\nallows it to issue a read-ahead request.\n\nAn optional submit_ptr argument is also added to store the actual\nblock address for which bio is sent.  submit_ptr is used for a series\nof read-ahead requests, and helps to decide if each requested block is\ncontinous to the previous one on disk.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f8e6cc013b896d75d6ce4ec9e168014af1257fd8",
      "tree": "799258b2cc52207ab98946f3f8ae3466b1b33352",
      "parents": [
        "7c397a81fe90c0445df2873700d14e82cca5fbc8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jul 15 11:39:10 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:15 2010 +0900"
      },
      "message": "nilfs2: fix buffer head leak in nilfs_btnode_submit_block\n\nnilfs_btnode_submit_block() refers to buffer head just before\nreturning from the function, but it releases the buffer head earlier\nthan that if nilfs_dat_translate() gets an error.\n\nThis has potential for oops in the erroneous case.  This fixes the\nissue.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7c397a81fe90c0445df2873700d14e82cca5fbc8",
      "tree": "99e4ecd31923cbdcaaeabb7cf54f548a2716415f",
      "parents": [
        "5ad2686e9266f24a0bb76b01d5c3ae29b4e149fe"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 13 23:33:55 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:15 2010 +0900"
      },
      "message": "nilfs2: eliminate inline keywords in btree implementation\n\nThis removes all inline uses from btree.c.  Gcc now agressively apply\ninline expansion even for the functions declared without the keyword;\nthe inline use in btree.c looks excessive.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5ad2686e9266f24a0bb76b01d5c3ae29b4e149fe",
      "tree": "df7d1d37ec380e58b0b171db07c5d8a7f9bb4ff0",
      "parents": [
        "9b7b265c9ab67fcd1245d6b64fa5ca2eda43ac88"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 13 23:33:54 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:14 2010 +0900"
      },
      "message": "nilfs2: get maximum number of child nodes from bmap object\n\nThe patch \"reduce repetitive calculation of max number of child nodes\"\ngathered up the calculation of maximum number of child nodes into\nnilfs_btree_nchildren_per_block() function.  This makes the function\nget resultant value from a private variable in bmap object instead of\ncalculating it for each call.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9b7b265c9ab67fcd1245d6b64fa5ca2eda43ac88",
      "tree": "3aeed58de180351e46ecb4e58f2e55c097eeed0d",
      "parents": [
        "ea64ab87cdba9e1172392d247e6526359e301f12"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 13 23:33:53 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:14 2010 +0900"
      },
      "message": "nilfs2: reduce repetitive calculation of max number of child nodes\n\nThe current btree implementation repeats the same calculation on the\nmaximum number of child nodes.  This is because a few low level\nroutines use the calculation for index addressing in a btree node\nblock.\n\nThis reduces the calculation by explicitly passing the maximum number\nof child nodes (ncmax) through their argument.\n\nThis changes parameter passing of the following functions:\n\n - nilfs_btree_node_dptrs\n - nilfs_btree_node_get_ptr\n - nilfs_btree_node_set_ptr\n - nilfs_btree_node_init\n - nilfs_btree_node_move_left\n - nilfs_btree_node_move_right\n - nilfs_btree_node_insert\n - nilfs_btree_node_delete, and\n - nilfs_btree_get_node\n\nThe following functions are removed:\n\n - nilfs_btree_node_nchildren_min\n - nilfs_btree_node_nchildren_max\n\nMost middle level btree operations are rewritten to pass a proper\nncmax value depending on whether each occurrence of node is \"root\" or\nnot.\n\nA constant NILFS_BTREE_ROOT_NCHILDREN_MAX is used for the root node,\nwhereas nilfs_btree_nchildren_per_block() function is used for\nnon-root nodes.  If a node could be either root or a non-root node, an\noutput argument of nilfs_btree_get_node() is used to set up ncmax.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "ea64ab87cdba9e1172392d247e6526359e301f12",
      "tree": "644b2af0f1c20e79375d226c167c0b4f4d3a0ade",
      "parents": [
        "364ec2d700223b965620ff4d5031a3665d195873"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 13 23:33:52 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:14 2010 +0900"
      },
      "message": "nilfs2: optimize calculation of min/max number of btree node children\n\nnilfs_btree_node_nchildren_max() and nilfs_btree_node_nchildren_min()\nfunctions switch return value depending on whether target node is the\nroot or a node block.  In most uses of these functions, however, the\nnode type is fixed, and moreover the same calculation is repeatedly\nperformed in loop.\n\nThis unfold these functions depending on context and move them outside\nloops wherever possible.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "364ec2d700223b965620ff4d5031a3665d195873",
      "tree": "2cf23dbf1ce4de2125c62f6804f4c672a4127096",
      "parents": [
        "05d0e94b66dbdf9d90371b39dc7a6b390ba74d41"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 13 23:33:51 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:14 2010 +0900"
      },
      "message": "nilfs2: remove redundant pointer checks in bmap lookup functions\n\nnilfs_bmap_lookup and its variants are supposed to take a valid\npointer argument to return a block address, thus pointer checks in\nnilfs_btree_lookup and nilfs_direct_lookup are needless.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "05d0e94b66dbdf9d90371b39dc7a6b390ba74d41",
      "tree": "10476599c8102fc58f635d63e4e9a7aa58bf905e",
      "parents": [
        "dc935be2a094087bc561d80f8cf9e66bbc1f7b18"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Jul 10 20:52:09 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:14 2010 +0900"
      },
      "message": "nilfs2: get rid of nilfs_bmap_union\n\nThis removes nilfs_bmap_union and finally unifies three structures and\nthe union in bmap/btree code into one.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "dc935be2a094087bc561d80f8cf9e66bbc1f7b18",
      "tree": "ab7af5a2a40633f74a949916de7797c3d8f345b7",
      "parents": [
        "e7c274f8083793f8f861def63c02a0839b34d26d"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Jul 10 22:21:54 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:14 2010 +0900"
      },
      "message": "nilfs2: unify bmap set_target_v operations\n\nThis unifies two similar functions nilfs_btree_set_target_v and\nnilfs_direct_set_target_v into one, nilfs_bmap_set_target_v.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e7c274f8083793f8f861def63c02a0839b34d26d",
      "tree": "a03bfd25a6b2736a0fec40c9282bb235691ccc0c",
      "parents": [
        "10ff885ba6f56bf7480ce3b5daf38c07600ecea3"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Jul 10 19:09:49 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:13 2010 +0900"
      },
      "message": "nilfs2: get rid of nilfs_btree uses\n\nThis replaces all uses of nilfs_btree struct in implementation of\nbtree mapping with nilfs_bmap struct.\n\nName of local variable \"btree\" is kept not to bloat amount of change.\nAnd, a part of local variables \"bmap\" is renamed to \"btree\" to uniform\nnaming rule.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "10ff885ba6f56bf7480ce3b5daf38c07600ecea3",
      "tree": "d1a301a1f870bcc2085c840eb875097e2fe0cb7b",
      "parents": [
        "583ada4761e18bb105ce5181b0b13cf55ead6201"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Jul 10 18:07:04 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:13 2010 +0900"
      },
      "message": "nilfs2: get rid of nilfs_direct uses\n\nThis replaces all uses of nilfs_direct struct in implementation of\ndirect mapping with nilfs_bmap struct.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "583ada4761e18bb105ce5181b0b13cf55ead6201",
      "tree": "01f0ea519265b965e50d87edd826ec56cdc7ca42",
      "parents": [
        "25b8d7ded0e4579bf152882249abfd351e65a17d"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Jul 10 21:37:47 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:13 2010 +0900"
      },
      "message": "nilfs2: remove constant qualifier from argument of bmap propagate\n\nThe first argument of bops-\u003ebop_propagate operation takes a constant\nqualifier, and causes compilation error when removed cast to pointer\nof nilfs_btree structure type.  This fixes the issue to prepare for\nsuccesive removal of nilfs_btree struct.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "25b8d7ded0e4579bf152882249abfd351e65a17d",
      "tree": "4949d1b531805b5ea2c25a544eea200f0ec3d580",
      "parents": [
        "1d5385b9f30ae43209459db424416a3e1d8f2bde"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Jul 10 16:50:41 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:13 2010 +0900"
      },
      "message": "nilfs2: get rid of private conversion macros on bmap key and pointer\n\nWill remove nilfs_bmap_key_to_dkey(), nilfs_bmap_dkey_to_key(),\nnilfs_bmap_ptr_to_dptr(), and nilfs_bmap_dptr_to_ptr() for simplicity.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1d5385b9f30ae43209459db424416a3e1d8f2bde",
      "tree": "202a19586853da9ec598645b5d289d4a0164b232",
      "parents": [
        "cfa913a5077f7619869b2b4d1bf23ccb4f8b3d7b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 16 23:52:40 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:13 2010 +0900"
      },
      "message": "nilfs2: verify btree node after reading\n\nThis inserts sanity checks soon after read btree node from disk.  This\nallows early detection of broken btree nodes, and helps to narrow down\nproblems due to file system corruption.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "cfa913a5077f7619869b2b4d1bf23ccb4f8b3d7b",
      "tree": "f4d8e4e8d8ee220b448566a08e75bccfb0ca966f",
      "parents": [
        "7c01745781177795e39f78b2c2c42c470a13833a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jul 07 17:19:54 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:12 2010 +0900"
      },
      "message": "nilfs2: add sanity check in nilfs_btree_add_dirty_buffer\n\nAccording to the report titled \"problem with nilfs_cleanerd\" from\nŁukasz Wójcicki, nilfs_btree_lookup_dirty_buffers or\nnilfs_btree_add_dirty_buffer got memory violation during garbage\ncollection.\n\nThis could happen if a level field of given btree node buffer is\nincorrect, which is a crucial internal bug.\n\nThis inserts a sanity check to figure out the problem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7c01745781177795e39f78b2c2c42c470a13833a",
      "tree": "20ffcebedce21dba5b9fb8180cdca1e06b42fd41",
      "parents": [
        "c6b4d57ddf12f3fd4d41d7b3b9181de46748418d"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jul 05 20:08:33 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:12 2010 +0900"
      },
      "message": "nilfs2: pass remount flag to parse_options\n\nThis adds is_remount argument to the parse_options() function that\nobtains mount options from strings.\n\nPreviously, parse_options did not distinguish context whether it\u0027s\ncalled for a new mount or remount, so the caller needed additional\nverifications outside the function.\n\nThis allows parse_options to verify options and print messages\ndepending on the context.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c6b4d57ddf12f3fd4d41d7b3b9181de46748418d",
      "tree": "66e748018b5f5bd0c343381f88b946a777fd8c13",
      "parents": [
        "802d31775404ee335ca1e97a82e1e706a4c843be"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jul 05 14:40:27 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:12 2010 +0900"
      },
      "message": "nilfs2: use seq_puts to print mount options without argument\n\nThis replaces seq_printf() with seq_puts() in nilfs_show_options for\nmount options which have no argument.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "802d31775404ee335ca1e97a82e1e706a4c843be",
      "tree": "3753263ea97748e6c2b01f29fb7f81c19381eb7b",
      "parents": [
        "773bc4f3b6898634a80a41c72a1f34cb89992dcd"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jul 05 14:27:04 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:12 2010 +0900"
      },
      "message": "nilfs2: add nodiscard mount option\n\nNilfs has \"discard\" mount option which issues discard/TRIM commands to\nunderlying block device, but it lacks a complementary option and has\nno way to disable the feature through remount.\n\nThis adds \"nodiscard\" option to resolve this imbalance.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "773bc4f3b6898634a80a41c72a1f34cb89992dcd",
      "tree": "ee6f12c0fbfa959a79861904498d04db8d899cc2",
      "parents": [
        "325020477a51ffa849418b3e38189fd266f2ae20"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jul 05 13:00:08 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:12 2010 +0900"
      },
      "message": "nilfs2: add barrier mount option\n\nNilfs enables write barriers by default and has \"nobarrier\" mount\noption to disable this feature.  But it lacks the complementary option\nand has no way to re-enable the feature on remount.\n\nThis adds \"barrier\" option to resolve this imbalance.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "325020477a51ffa849418b3e38189fd266f2ae20",
      "tree": "a02d99b61ed3b98fbbd56f857fdd46808326dff7",
      "parents": [
        "6c12516083cf51b6e576691ac6e20c4a32f4edb9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jun 29 14:42:13 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:11 2010 +0900"
      },
      "message": "nilfs2: do not update log cursor for small change\n\nSuper blocks of nilfs are periodically overwritten in order to record\nthe recent log position.  This shortens recovery time after unclean\nunmount, but the current implementation performs the update even for a\nfew blocks of change.  If the filesystem gets small changes slowly and\ncontinually, super blocks may be updated excessively.\n\nThis moderates the issue by skipping update of log cursor if it does\nnot cross a segment boundary.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "6c12516083cf51b6e576691ac6e20c4a32f4edb9",
      "tree": "61d3b3d2502aac37ee2a6d426be104ac8728d6aa",
      "parents": [
        "2d72b99ecdf8cbb5d9422c54b401d9d590b2faf5"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jun 28 19:15:26 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:11 2010 +0900"
      },
      "message": "nilfs2: implement fallback for super root search\n\nAlthough nilfs redundantly uses two super blocks and each may point to\ndifferent position on log, the current version of nilfs does not try\nfallback to the spare super block when it doesn\u0027t find any valid log\nat the position that the primary super block points to.\n\nThis has been a cause of mount failures due to write order reversals\non barrier less block devices.\n\nThis inserts fallback code in error path of nilfs_search_super_root\nroutine to resolve the mount failure problem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "2d72b99ecdf8cbb5d9422c54b401d9d590b2faf5",
      "tree": "9984b1d2f457bb80268e66171b404b12dd917d21",
      "parents": [
        "843d63baa5babf3d8786f6a4377a2448525da7aa"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jun 28 19:15:25 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:11 2010 +0900"
      },
      "message": "nilfs2: add missing error code in comment of nilfs_search_super_root\n\nnilfs_search_super_root can return -ENOMEM, but this error code is not\ndescribed in its kernel-doc comment.  This fixes the discrepancy.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "843d63baa5babf3d8786f6a4377a2448525da7aa",
      "tree": "15466ecdb0e65b1f654d6bc67f3607b4b5740eb5",
      "parents": [
        "b2ac86e1a8e3a3b0ab4449d062c582f07a078e7b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jun 28 19:15:24 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:11 2010 +0900"
      },
      "message": "nilfs2: separate setup of log cursor from init_nilfs\n\nThis separates a setup routine of log cursor from init_nilfs().  The\nroutine, nilfs_store_log_cursor, reads the last position of the log\ncontaining a super root, and initializes relevant state on the nilfs\nobject.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b2ac86e1a8e3a3b0ab4449d062c582f07a078e7b",
      "tree": "b681ea820685a278e06995ff23b58f7a85904b70",
      "parents": [
        "d26493b6f017c0b0063a15bf893411ddae85eee4"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Mon Jun 28 17:49:33 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:11 2010 +0900"
      },
      "message": "nilfs2: sync super blocks in turns\n\nThis will sync super blocks in turns instead of syncing duplicate\nsuper blocks at the time.  This will help searching valid super root\nwhen super block is written into disk before log is written, which is\nhappen when barrier-less block devices are unmounted uncleanly.  In\nthe situation, old super block likely points to valid log.\n\nThis patch introduces ns_sbwcount member to the nilfs object and adds\nnilfs_sb_will_flip() function; ns_sbwcount counts how many times super\nblocks write back to the disk.  And, nilfs_sb_will_flip() decides\nwhether flipping required or not based on the count of ns_sbwcount to\nsync super blocks asymmetrically.\n\nThe following functions are also changed:\n\n - nilfs_prepare_super(): flips super blocks according to the\n   argument.  The argument is calculated by nilfs_sb_will_flip()\n   function.\n\n - nilfs_cleanup_super(): sets \"clean\" flag to both super blocks if\n   they point to the same checkpoint.\n\nTo update both of super block information, caller of\nnilfs_commit_super must set the information on both super blocks.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d26493b6f017c0b0063a15bf893411ddae85eee4",
      "tree": "994de3e7c0383f0e30e5e9c88c0c5d0261a834bc",
      "parents": [
        "60f46b7efc1d6b980511c2644cb89903062f6e98"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Mon Jun 28 17:49:32 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:10 2010 +0900"
      },
      "message": "nilfs2: introduce nilfs_prepare_super\n\nThis function checks validity of super block pointers.\nIf first super block is invalid, it will swap the super blocks.\nThe function should be called before any super block information updates.\nCaller must obtain nilfs-\u003ens_sem.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    }
  ],
  "next": "60f46b7efc1d6b980511c2644cb89903062f6e98"
}
