)]}'
{
  "log": [
    {
      "commit": "7dcda1c96d7c643101d4a05579ef4512a4baa7ef",
      "tree": "62051d63c47a3df7381cdc294815e79da5ebdc93",
      "parents": [
        "929e27252e8ca69363f81f26af5eaba62cb4c572"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "message": "fs: export empty_aops\n\nWith the -\u003esync_page() hook gone, we have a few users that\nadd their own static address_space_operations without any\nfunctions defined.\n\nfs/inode.c already has an empty_aops that it uses for init\npurposes. Lets export that and use it in the places where\nan otherwise empty aops was defined.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "af71dda0b8e667d03eec21d25f90265eec5efea1",
      "tree": "fe070073c86352f4ffd30381b8f7ba3a158d4619",
      "parents": [
        "d611b22f1a5ddd0823e9d6a30bac91219f800e41"
      ],
      "author": {
        "name": "Nicolas Kaiser",
        "email": "nikai@nikai.net",
        "time": "Sat Mar 19 16:47:54 2011 +0100"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 30 17:39:54 2011 +0900"
      },
      "message": "nilfs2: fix whitespace coding style issues\n\nFixes whitespace coding style issues.\n\nSigned-off-by: Nicolas Kaiser \u003cnikai@nikai.net\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d611b22f1a5ddd0823e9d6a30bac91219f800e41",
      "tree": "a0896c5007c47662dd52158e76972cac7a682d4c",
      "parents": [
        "34094537943113467faee98fe67c8a3d3f9a0a8b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 30 11:49:20 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 30 17:39:25 2011 +0900"
      },
      "message": "nilfs2: fix oops due to a bad aops initialization\n\nNilfs in 2.6.39-rc1 hit the following oops:\n\n BUG: unable to handle kernel NULL pointer dereference at 0000000000000048\n IP: [\u003cffffffff810ac235\u003e] try_to_release_page+0x2a/0x3d\n PGD 234cb6067 PUD 234c72067 PMD 0\n Oops: 0000 [#1] SMP\n \u003csnip\u003e\n Process truncate (pid: 10995, threadinfo ffff8802353c2000, task ffff880234cfa000)\n Stack:\n  ffff8802333c77b8 ffffffff810b64b0 0000000000003802 ffffffffa0052cca\n  0000000000000000 ffff8802353c3b58 0000000000000000 ffff8802353c3b58\n  0000000000000001 0000000000000000 ffffea0007b92308 ffffea0007b92308\n Call Trace:\n  [\u003cffffffff810b64b0\u003e] ? invalidate_inode_pages2_range+0x15f/0x273\n  [\u003cffffffffa0052cca\u003e] ? nilfs_palloc_get_block+0x2d/0xaf [nilfs2]\n  [\u003cffffffff810589e7\u003e] ? bit_waitqueue+0x14/0xa1\n  [\u003cffffffff81058ab1\u003e] ? wake_up_bit+0x10/0x20\n  [\u003cffffffffa00433fd\u003e] ? nilfs_forget_buffer+0x66/0x7a [nilfs2]\n  [\u003cffffffffa00467b8\u003e] ? nilfs_btree_concat_left+0x5c/0x77 [nilfs2]\n  [\u003cffffffffa00471fc\u003e] ? nilfs_btree_delete+0x395/0x3cf [nilfs2]\n  [\u003cffffffffa00449a3\u003e] ? nilfs_bmap_do_delete+0x6e/0x79 [nilfs2]\n  [\u003cffffffffa0045845\u003e] ? nilfs_btree_last_key+0x14b/0x15e [nilfs2]\n  [\u003cffffffffa00449dd\u003e] ? nilfs_bmap_truncate+0x2f/0x83 [nilfs2]\n  [\u003cffffffffa0044ab2\u003e] ? nilfs_bmap_last_key+0x35/0x62 [nilfs2]\n  [\u003cffffffffa003e99b\u003e] ? nilfs_truncate_bmap+0x6b/0xc7 [nilfs2]\n  [\u003cffffffffa003ee4a\u003e] ? nilfs_truncate+0x79/0xe4 [nilfs2]\n  [\u003cffffffff810b6c00\u003e] ? vmtruncate+0x33/0x3b\n  [\u003cffffffffa003e8f1\u003e] ? nilfs_setattr+0x4d/0x8c [nilfs2]\n  [\u003cffffffff81026106\u003e] ? do_page_fault+0x31b/0x356\n  [\u003cffffffff810f9d61\u003e] ? notify_change+0x17d/0x262\n  [\u003cffffffff810e5046\u003e] ? do_truncate+0x65/0x80\n  [\u003cffffffff810e52af\u003e] ? sys_ftruncate+0xf1/0xf6\n  [\u003cffffffff8132c012\u003e] ? system_call_fastpath+0x16/0x1b\n Code: c3 48 83 ec 08 48 8b 17 48 8b 47 18 80 e2 01 75 04 0f 0b eb fe 48 8b 17 80 e6 20 74 05 31 c0 41 59 c3 48 85 c0 74 11 48 8b 40 58\n  8b 40 48 48 85 c0 74 04 41 58 ff e0 59 e9 b1 b5 05 00 41 54\n RIP  [\u003cffffffff810ac235\u003e] try_to_release_page+0x2a/0x3d\n  RSP \u003cffff8802353c3b08\u003e\n CR2: 0000000000000048\n\nThis oops was brought in by the change \"block: remove per-queue\nplugging\" (commit: 7eaceaccab5f40bb).  It initializes mapping-\u003ea_ops\nwith a NULL pointer for some pages in nilfs (e.g. btree node pages),\nbut mm code doesn\u0027t NULL pointer checks against mapping-\u003ea_ops. (the\ncheck is done for each callback function)\n\nThis corrects the aops initialization and fixes the oops.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "34094537943113467faee98fe67c8a3d3f9a0a8b",
      "tree": "b848b18c90bfd29655e5806e81c54d02946c980d",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 27 22:50:49 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 30 10:45:31 2011 +0900"
      },
      "message": "nilfs2: fix data loss in mmap page write for hole blocks\n\nFrom the result of a function test of mmap, mmap write to shared pages\nturned out to be broken for hole blocks.  It doesn\u0027t write out filled\nblocks and the data will be lost after umount.  This is due to a bug\nthat the target file is not queued for log writer when filling hole\nblocks.\n\nAlso, nilfs_page_mkwrite function exits normal code path even after\nsuccessfully filled hole blocks due to a change of block_page_mkwrite\nfunction; just after nilfs was merged into the mainline,\nblock_page_mkwrite() started to return VM_FAULT_LOCKED instead of zero\nby the patch \"mm: close page_mkwrite races\" (commit:\nb827e496c893de0c).  The current nilfs_page_mkwrite() is not handling\nthis value properly.\n\nThis corrects nilfs_page_mkwrite() and will resolve the data loss\nproblem in mmap write.\n\n[This should be applied to every kernel since 2.6.30 but a fix is\n needed for 2.6.37 and prior kernels]\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 \u003cstable@kernel.org\u003e  [2.6.38]\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "2e1496707560ecf98e9b0604622c0990f94861d3",
      "tree": "d1473b70fad31a903fedc87221680678a6c6c5f6",
      "parents": [
        "e795b71799ff0b27365020c9ddaa25d0d83f99c8"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:13 2011 -0700"
      },
      "message": "userns: rename is_owner_or_cap to inode_owner_or_capable\n\nAnd give it a kernel-doc comment.\n\n[akpm@linux-foundation.org: btrfs changed in linux-next]\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a49ebbabb084d345991b72818a119616431416f2",
      "tree": "9e89ac864c70ccd83c9f83df5c94d7466c28b394",
      "parents": [
        "c4354d0d6812ad6729ac33d3c8bc64585cfdb890"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Mar 23 16:42:08 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:18 2011 -0700"
      },
      "message": "nilfs2: use little-endian bitops\n\nAs a preparation for removing ext2 non-atomic bit operations from\nasm/bitops.h.  This converts ext2 non-atomic bit operations to\nlittle-endian bit operations.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4c63f5646e405b5010cc9499419060bf2e838f5b",
      "tree": "df91ba315032c8ec4aafeb3ab96fdfa7c6c656e1",
      "parents": [
        "cafb0bfca1a73efd6d8a4a6a6a716e6134b96c24",
        "69d60eb96ae8a73cf9b79cf28051caf973006011"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.39/stack-plug\u0027 into for-2.6.39/core\n\nConflicts:\n\tblock/blk-core.c\n\tblock/blk-flush.c\n\tdrivers/md/raid1.c\n\tdrivers/md/raid10.c\n\tdrivers/md/raid5.c\n\tfs/nilfs2/btnode.c\n\tfs/nilfs2/mdt.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "721a9602e6607417c6bc15b18e97a2f35266c690",
      "tree": "4987991e43f35b8b3b685fea0040c5265b578996",
      "parents": [
        "cf15900e1209d5b46ec2d24643adbf561830935f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 09 11:56:30 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:27 2011 +0100"
      },
      "message": "block: kill off REQ_UNPLUG\n\nWith the plugging now being explicitly controlled by the\nsubmitter, callers need not pass down unplugging hints\nto the block layer. If they want to unplug, it\u0027s because they\nmanually plugged on their own - in which case, they should just\nunplug at will.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e3154e9748f0f337e9f6ff9dc7d7bf24d426bd1a",
      "tree": "ac2a3f3dca6189b8a608571c49da66386fd1bdec",
      "parents": [
        "f7545144c2e3d280139260df934043e0a6ccce6f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:54:26 2011 +0900"
      },
      "message": "nilfs2: get rid of nilfs_sb_info structure\n\nThis directly uses sb-\u003es_fs_info to keep a nilfs filesystem object and\nfully removes the intermediate nilfs_sb_info structure.  With this\nchange, the hierarchy of on-memory structures of nilfs will be\nsimplified as follows:\n\nBefore:\n  super_block\n       -\u003e nilfs_sb_info\n             -\u003e the_nilfs\n                   -\u003e cptree --+-\u003e nilfs_root (current file system)\n                               +-\u003e nilfs_root (snapshot A)\n                               +-\u003e nilfs_root (snapshot B)\n                               :\n             -\u003e nilfs_sc_info (log writer structure)\nAfter:\n  super_block\n       -\u003e the_nilfs\n             -\u003e cptree --+-\u003e nilfs_root (current file system)\n                         +-\u003e nilfs_root (snapshot A)\n                         +-\u003e nilfs_root (snapshot B)\n                         :\n             -\u003e nilfs_sc_info (log writer structure)\n\nThe reason why we didn\u0027t design so from the beginning is because the\ninitial shape also differed from the above.  The early hierachy was\ncomposed of \"per-mount-point\" super_block -\u003e nilfs_sb_info pairs and a\nshared nilfs object.  On the kernel 2.6.37, it was changed to the\ncurrent shape in order to unify super block instances into one per\ndevice, and this cleanup became applicable as the result.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f7545144c2e3d280139260df934043e0a6ccce6f",
      "tree": "4e0930f2d4c45a71e300c7ac45c6e55a6d1c6675",
      "parents": [
        "d96bbfa28aa7a1d5a5bf549026a594d7a273c5d7"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "message": "nilfs2: use sb instance instead of nilfs_sb_info struct\n\nThis replaces sbi uses with direct reference to sb instance.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d96bbfa28aa7a1d5a5bf549026a594d7a273c5d7",
      "tree": "da846510626ba9d2182790201db49aaba35dbdf3",
      "parents": [
        "3fd3fe5aeaa171a5638d2bb54a1a170eab7b7cdc"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "message": "nilfs2: get rid of sc_sbi back pointer\n\nRemoves sci-\u003esc_sbi which is a back pointer to nilfs_sb_info struct\nfrom log writer object (nilfs_sc_info).\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3fd3fe5aeaa171a5638d2bb54a1a170eab7b7cdc",
      "tree": "3feb95a18e045883b0af27da09be10f5e011776f",
      "parents": [
        "9b1fc4e4973469dd3fab27ba5d78eca1cd5c13fe"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "message": "nilfs2: move log writer onto nilfs object\n\nLog writer is held by the nilfs_sb_info structure.  This moves it into\nnilfs object and replaces all uses of NILFS_SC() accessor.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9b1fc4e4973469dd3fab27ba5d78eca1cd5c13fe",
      "tree": "0f51872d41cbc1e43db2fafab0074c107dfce7e7",
      "parents": [
        "693dd321222f03b17668f88ceb0f7d518900191e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:08 2011 +0900"
      },
      "message": "nilfs2: move next generation counter into nilfs object\n\nMoves s_next_generation counter and a spinlock protecting it to nilfs\nobject from nilfs_sb_info structure.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "693dd321222f03b17668f88ceb0f7d518900191e",
      "tree": "b0088ee73f3499e0b3301fc5dcf44c677cfd092d",
      "parents": [
        "574e6c3145c5754141361c695b58736c294a8ae1"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:07 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:07 2011 +0900"
      },
      "message": "nilfs2: move s_inode_lock and s_dirty_files into nilfs object\n\nMoves s_inode_lock spinlock and s_dirty_files list to nilfs object\nfrom nilfs_sb_info structure.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "574e6c3145c5754141361c695b58736c294a8ae1",
      "tree": "42fdaf8a107b8a42a1ea239675ac9461e97d0990",
      "parents": [
        "3b2ce58b0f3c1633750529713be0e467282abd78"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:07 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:07 2011 +0900"
      },
      "message": "nilfs2: move parameters on nilfs_sb_info into nilfs object\n\nThis moves four parameter variables on nilfs_sb_info s_resuid,\ns_resgid, s_interval and s_watermark to the nilfs object.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3b2ce58b0f3c1633750529713be0e467282abd78",
      "tree": "48c0111adadf00e67933fb5d9883296754fca6ce",
      "parents": [
        "be667377a8b8cd73e1b923f33fb5be4034aa4bfa"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:07 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 09 11:05:07 2011 +0900"
      },
      "message": "nilfs2: move mount options to nilfs object\n\nThis moves mount_opt local variable to nilfs object from nilfs_sb_info\nstruct.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "be667377a8b8cd73e1b923f33fb5be4034aa4bfa",
      "tree": "8baee2f9155728331eeade85ec93547402f4e606",
      "parents": [
        "ae191838b0251d73b9d0a7254c6938406f5f6320"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Mar 05 00:19:32 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:31 2011 +0900"
      },
      "message": "nilfs2: record used amount of each checkpoint in checkpoint list\n\nThis records the number of used blocks per checkpoint in each\ncheckpoint entry of cpfile.  Even though userland tools can get the\nblock count via nilfs_get_cpinfo ioctl, it was not updated by the\nnilfs2 kernel code.  This fixes the issue and makes it available for\nuserland tools to calculate used amount per checkpoint.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Jiro SEKIBA \u003cjir@unicus.jp\u003e\n"
    },
    {
      "commit": "ae191838b0251d73b9d0a7254c6938406f5f6320",
      "tree": "5f2b08f5ab421c3644a988acc5ec7a1c65a631bd",
      "parents": [
        "4138ec23820012009aecc2b02856c62872dd3c34"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Feb 04 01:19:38 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:30 2011 +0900"
      },
      "message": "nilfs2: optimize rec_len functions\n\nThis is a similar change to those in ext2/ext3 codebase (commit\n40a063f6691ce937 and a4ae3094869f18e2, respectively).\n\nThe addition of 64k block capability in the rec_len_from_disk and\nrec_len_to_disk functions added a bit of math overhead which slows\ndown file create workloads needlessly when the architecture cannot\neven support 64k blocks.  This will cut the corner.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4138ec23820012009aecc2b02856c62872dd3c34",
      "tree": "f222844308880d629b14339c384729f6e089fcf0",
      "parents": [
        "828b1c50ae11e6dda68f8dfefe43b74c7182b157"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 24 00:28:22 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:30 2011 +0900"
      },
      "message": "nilfs2: append blocksize info to warnings during loading super blocks\n\nAt present, the same warning message can be output twice when nilfs\ndetected a problem on super blocks:\n\n NILFS warning: broken superblock. using spare superblock.\n NILFS warning: broken superblock. using spare superblock.\n ...\n\nThis is because these super blocks are reloaded with the block size\nwritten in a super block if it differs from the first block size, but\nthis repetition looks somewhat confusing.  So, we hint at what is\ngoing on by appending block size information to those messages.\n\nReported-by: Wakko Warner \u003cwakko@animx.eu.org\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "828b1c50ae11e6dda68f8dfefe43b74c7182b157",
      "tree": "9c258f65382865edb71e06bf11007071fb058806",
      "parents": [
        "cde98f0f84ccff78e87235cb7b551747d6ad00de"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Feb 03 21:26:17 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:30 2011 +0900"
      },
      "message": "nilfs2: add compat ioctl\n\nThe current FS_IOC_GETFLAGS/SETFLAGS/GETVERSION will fail if\napplication is 32 bit and kernel is 64 bit.\n\nThis issue is avoidable by adding compat_ioctl method.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "cde98f0f84ccff78e87235cb7b551747d6ad00de",
      "tree": "b5cb657b0e0360adf41437819d43a0c9c75912f8",
      "parents": [
        "b253a3e4f2b8eed69b804952ef926df0ac788595"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jan 20 02:09:53 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:30 2011 +0900"
      },
      "message": "nilfs2: implement FS_IOC_GETFLAGS/SETFLAGS/GETVERSION\n\nAdd support for the standard attributes set via chattr and read via\nlsattr.  These attributes are already in the flags value in the nilfs2\ninode, but currently we don\u0027t have any ioctl commands that expose them\nto the userland.\n\nCollaterally, this adds the FS_IOC_GETVERSION ioctl for getting\ni_generation, which allows users to list the file\u0027s generation number\nwith \"lsattr -v\".\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b253a3e4f2b8eed69b804952ef926df0ac788595",
      "tree": "fc111c5401f15cd5421fc73372d3f4589716af4f",
      "parents": [
        "32f4aeb31583a85c1e9a5d6d485055c090cebbfb"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jan 20 02:09:53 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:29 2011 +0900"
      },
      "message": "nilfs2: tighten restrictions on inode flags\n\nNilfs has few rectrictions on which flags may be set on which inodes\nlike ext2/3/4 filesystems used to be.  Specifically DIRSYNC may only\nbe set on directories and IMMUTABLE and APPEND may not be set on\nlinks.  Tighten that to disallow TOPDIR being set on non-directories\nand only NODUMP and NOATIME to be set on non-regular file,\nnon-directories.\n\nThis introduces a flags masking function like those of extN and uses\nit during inode creation.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "32f4aeb31583a85c1e9a5d6d485055c090cebbfb",
      "tree": "b0b0d53b9f12ea00d77d1b3f65a5c03be43ae026",
      "parents": [
        "f0c9f242f947a37675a883deca7f722cac935b0e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jan 20 02:09:52 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:29 2011 +0900"
      },
      "message": "nilfs2: mark S_NOATIME on inodes only if NOATIME attribute is set\n\nAt present, nilfs marks S_NOATIME flag on all inodes.  This restricts\nnilfs_set_inode_flags function so that it marks S_NOATIME only if a\ngiven inode has an FS_NOATIME_FL flag.\n\nAlthough nilfs does not support atime yet, touch_atime() still safely\nreturns on IS_NOATIME check since MS_NOATIME is always set on sb.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f0c9f242f947a37675a883deca7f722cac935b0e",
      "tree": "c0aad002f438b6d34123056d075da23792864327",
      "parents": [
        "9954e7af14868b8b79e76b7b88daaf0b3866db33"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jan 20 02:09:52 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:29 2011 +0900"
      },
      "message": "nilfs2: use common file attribute macros\n\nReplaces uses of own inode flags (i.e. NILFS_SECRM_FL, NILFS_UNRM_FL,\nNILFS_COMPR_FL, and so forth) with common inode flags, and removes the\nown flag declarations.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9954e7af14868b8b79e76b7b88daaf0b3866db33",
      "tree": "562b473d974ee6715cff8732e518a9e187c50d38",
      "parents": [
        "25b18d39cca207f8559af1aac00313deda2d652e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Feb 23 02:26:17 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:04 2011 +0900"
      },
      "message": "nilfs2: add free entries count only if clear bit operation succeeded\n\nThree functions of the current persistent object allocator,\nnilfs_palloc_commit_free_entry, nilfs_palloc_abort_alloc_entry, and\nnilfs_palloc_freev functions unconditionally add a counter after doing\nclear bit operation on a bitmap block.\n\nIf the clear bit operation overlapped, the counter will not add up.\nThis fixes the issue by making the counter operations conditional.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "25b18d39cca207f8559af1aac00313deda2d652e",
      "tree": "70815c9799a82b53785d9daf75e598f47b84243c",
      "parents": [
        "a5abba989deceb731047425812d268daf7536575"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Feb 11 15:23:27 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 08 14:58:04 2011 +0900"
      },
      "message": "nilfs2: decrement inodes count only if raw inode was successfully deleted\n\nThis fixes the issue that inodes count will not add up after removal\nof raw inodes fails.  Hence, this prevents possible under flow of the\ninodes count.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "8336026942fdf6a96a45057a2fe6d7f7946979d5",
      "tree": "b831d361f5865a86ec645dccd87d74922099ac22",
      "parents": [
        "4c7fd114c65830cb052b6f3d0ab5b11626e64d5d",
        "69102e9b4b61f56a26717659ec2e572a6b18458d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 03 15:37:59 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 03 15:37:59 2011 -0800"
      },
      "message": "Merge branch \u0027i_nlink\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027i_nlink\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  hfs: fix rename() over non-empty directory\n  udf: fix i_nlink limit\n  fix reiserfs mkdir() breakage\n  exofs: i_nlink races in rename()\n  nilfs2: i_nlink races in rename()\n  minix: i_nlink races in rename()\n  ufs: i_nlink races in rename()\n  sysv: i_nlink races in rename()\n"
    },
    {
      "commit": "30eb43d31478f0fca28423623f3ec6af13f845fa",
      "tree": "7bcf4777cd9c4da6c5c1f9f44cb59bed73e9c64b",
      "parents": [
        "6f88049caf56022c773272e03ddfa8cf79867059"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 02 12:01:13 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 03 01:28:17 2011 -0500"
      },
      "message": "nilfs2: i_nlink races in rename()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "72746ac643928f6c3113b5aa783d8ea1b13949d2",
      "tree": "c1d151eae5e963dd3f57079e0287c2259257bc29",
      "parents": [
        "dd9c1549edef02290edced639f67b54a25abbe0e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Feb 28 13:41:11 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 02 09:55:18 2011 +0900"
      },
      "message": "nilfs2: fix regression that i-flag is not set on changeless checkpoints\n\nAccording to the report from Jiro SEKIBA titled \"regression in\n2.6.37?\"  (Message-Id: \u003c8739n8vs1f.wl%jir@sekiba.com\u003e), on 2.6.37 and\nlater kernels, lscp command no longer displays \"i\" flag on checkpoints\nthat snapshot operations or garbage collection created.\n\nThis is a regression of nilfs2 checkpointing function, and it\u0027s\ncritical since it broke behavior of a part of nilfs2 applications.\nFor instance, snapshot manager of TimeBrowse gets to create\nmeaningless snapshots continuously; snapshot creation triggers another\ncheckpoint, but applications cannot distinguish whether the new\ncheckpoint contains meaningful changes or not without the i-flag.\n\nThis patch fixes the regression and brings that application behavior\nback to normal.\n\nReported-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nCc: stable \u003cstable@kernel.org\u003e  [2.6.37]\n"
    },
    {
      "commit": "2aa15890f3c191326678f1bd68af61ec6b8753ec",
      "tree": "347f5fdcd0678b12be92f266cd2a5e7a74749403",
      "parents": [
        "78794b2cdeac37ac1fd950fc9c4454b56d88ac03"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Feb 23 13:49:47 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 23 19:52:52 2011 -0800"
      },
      "message": "mm: prevent concurrent unmap_mapping_range() on the same inode\n\nMichael Leun reported that running parallel opens on a fuse filesystem\ncan trigger a \"kernel BUG at mm/truncate.c:475\"\n\nGurudas Pai reported the same bug on NFS.\n\nThe reason is, unmap_mapping_range() is not prepared for more than\none concurrent invocation per inode.  For example:\n\n  thread1: going through a big range, stops in the middle of a vma and\n     stores the restart address in vm_truncate_count.\n\n  thread2: comes in with a small (e.g. single page) unmap request on\n     the same vma, somewhere before restart_address, finds that the\n     vma was already unmapped up to the restart address and happily\n     returns without doing anything.\n\nAnother scenario would be two big unmap requests, both having to\nrestart the unmapping and each one setting vm_truncate_count to its\nown value.  This could go on forever without any of them being able to\nfinish.\n\nTruncate and hole punching already serialize with i_mutex.  Other\ncallers of unmap_mapping_range() do not, and it\u0027s difficult to get\ni_mutex protection for all callers.  In particular -\u003ed_revalidate(),\nwhich calls invalidate_inode_pages2_range() in fuse, may be called\nwith or without i_mutex.\n\nThis patch adds a new mutex to \u0027struct address_space\u0027 to prevent\nrunning multiple concurrent unmap_mapping_range() on the same mapping.\n\n[ We\u0027ll hopefully get rid of all this with the upcoming mm\n  preemptibility series by Peter Zijlstra, the \"mm: Remove i_mmap_mutex\n  lockbreak\" patch in particular.  But that is for 2.6.39 ]\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nReported-by: Michael Leun \u003clkml20101129@newton.leun.net\u003e\nReported-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nTested-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ca7a5b9ac5d301845dd6382ff25a699b6263a81",
      "tree": "52d0ab285bd2dfabbba164a9df72468fdd92d29b",
      "parents": [
        "1bae4ce27c9c90344f23c65ea6966c50ffeae2f5"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jan 21 16:40:31 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Jan 22 15:22:36 2011 +0900"
      },
      "message": "nilfs2: fix crash after one superblock became unavailable\n\nFixes the following kernel oops in nilfs_setup_super() which could\narise if one of two super-blocks is unavailable.\n\n\u003e BUG: unable to handle kernel NULL pointer dereference at   (null)\n\u003e Pid: 3529, comm: mount.nilfs2 Not tainted 2.6.37 #1 /\n\u003e EIP: 0060:[\u003cc03196bc\u003e] EFLAGS: 00010202 CPU: 3\n\u003e EIP is at memcpy+0xc/0x1b\n\u003e Call Trace:\n\u003e  [\u003cf953720e\u003e] ? nilfs_setup_super+0x6c/0xa5 [nilfs2]\n\u003e  [\u003cf95369e9\u003e] ? nilfs_get_root_dentry+0x81/0xcb [nilfs2]\n\u003e  [\u003cf9537a08\u003e] ? nilfs_mount+0x4f9/0x62c [nilfs2]\n\u003e  [\u003cc02745cf\u003e] ? kstrdup+0x36/0x3f\n\u003e  [\u003cf953750f\u003e] ? nilfs_mount+0x0/0x62c [nilfs2]\n\u003e  [\u003cc0293940\u003e] ? vfs_kern_mount+0x4d/0x12c\n\u003e  [\u003cc02a5100\u003e] ? get_fs_type+0x76/0x8f\n\u003e  [\u003cc0293a68\u003e] ? do_kern_mount+0x33/0xbf\n\u003e  [\u003cc02a784a\u003e] ? do_mount+0x2ed/0x714\n\u003e  [\u003cc02a6171\u003e] ? copy_mount_options+0x28/0xfc\n\u003e  [\u003cc02a7ce3\u003e] ? sys_mount+0x72/0xaf\n\u003e  [\u003cc0473085\u003e] ? syscall_call+0x7/0xb\n\nReported-by: Wakko Warner \u003cwakko@animx.eu.org\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Wakko Warner \u003cwakko@animx.eu.org\u003e\nCc: stable \u003cstable@kernel.org\u003e [2.6.37, 2.6.36]\nLKML-Reference: \u003c20110121024918.GA29598@animx.eu.org\u003e\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "57cc7215b70856dc6bae8e55b00ecd7b1d7429b1",
      "tree": "f6dedefd41e6745a9b801166b99af7d830e41ef2",
      "parents": [
        "37721e1b0cf98cb65895f234d8c500d270546529"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jan 10 08:18:25 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 10 08:51:44 2011 -0800"
      },
      "message": "headers: kobject.h redux\n\nRemove kobject.h from files which don\u0027t need it, notably,\nsched.h and fs.h.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "365e215ce1f154e288ff0f7c9acbdf5421f57949",
      "tree": "864a8cadeb2c373a0fbbbd90464cf745ac7616f7",
      "parents": [
        "bcbc8c648d6cc88f771435d8031c1a13e00945ed"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Dec 27 00:07:30 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:38:39 2011 +0900"
      },
      "message": "nilfs2: unfold nilfs_dat_inode function\n\nnilfs_dat_inode function was a wrapper to switch between normal dat\ninode and gcdat, a clone of the dat inode for garbage collection.\n\nThis function got obsolete when the gcdat inode was removed, and now\nwe can access the dat inode directly from a nilfs object.  So, we will\nunfold the wrapper and remove it.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "bcbc8c648d6cc88f771435d8031c1a13e00945ed",
      "tree": "f74a2e7fffb5669823066f8fb875fff535ab8529",
      "parents": [
        "06df0f999247a3153c3ec284c7ada36ef785eb97"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Dec 27 00:05:49 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:37:54 2011 +0900"
      },
      "message": "nilfs2: do not pass sbi to functions which can get it from inode\n\nThis removes argument for passing nilfs_sb_info structure from\nnilfs_set_file_dirty and nilfs_load_inode_block functions.  We can get\na pointer to the structure from inodes.\n\n[Stephen Rothwell \u003csfr@canb.auug.org.au\u003e: fix conflict with commit\n b74c79e99389cd79b31fcc08f82c24e492e63c7e]\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "06df0f999247a3153c3ec284c7ada36ef785eb97",
      "tree": "28474b360eb4c21ce6ebe0efc460530fd99d923a",
      "parents": [
        "a7a8447edef2cfa9b28cc3892993d9fafb362671"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Dec 27 00:04:06 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:05:46 2011 +0900"
      },
      "message": "nilfs2: get rid of nilfs_mount_options structure\n\nOnly mount_opt member is used in the nilfs_mount_options structure,\nand we can simplify it.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a7a8447edef2cfa9b28cc3892993d9fafb362671",
      "tree": "85fc226757b9e2358e226f55271566c2d0c281e8",
      "parents": [
        "888da23c2f70ca2e9897b725322a6456285ee9c4"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Dec 27 00:03:02 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:05:46 2011 +0900"
      },
      "message": "nilfs2: simplify nilfs_mdt_freeze_buffer\n\nnilfs_page_get_nth_block() function used in nilfs_mdt_freeze_buffer()\nalways returns a valid buffer head, so its validity check can be\nremoved.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "888da23c2f70ca2e9897b725322a6456285ee9c4",
      "tree": "c666ba1372743f68ba8d6b1f50f7298535bd09e5",
      "parents": [
        "ae53a0a2ce2a89f1aa824a5fc6d2099907cfb409"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Dec 27 00:01:28 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:05:46 2011 +0900"
      },
      "message": "nilfs2: get rid of loaded flag from nilfs object\n\nNILFS_LOADED flag of the nilfs object is not used now, so this will\nremove it.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "ae53a0a2ce2a89f1aa824a5fc6d2099907cfb409",
      "tree": "72294963d4d2b813b9ddb18b64a43810ef2d6ff6",
      "parents": [
        "622daaff0a8975fb5c5b95f24f3234550ba32e92"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Dec 26 23:30:02 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:05:46 2011 +0900"
      },
      "message": "nilfs2: fix a checkpatch error in page.c\n\nWill correct the following checkpatch error:\n\n ERROR: trailing whitespace\n #494: FILE: page.c:494:\n + $\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "622daaff0a8975fb5c5b95f24f3234550ba32e92",
      "tree": "5ae5de9044f962471fa2694654134f5b58f73ace",
      "parents": [
        "27e6c7a3ce29ae5fa5bec4ed5917f8508bfac120"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Dec 26 16:38:43 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:05:46 2011 +0900"
      },
      "message": "nilfs2: fiemap support\n\nThis adds fiemap to nilfs.  Two new functions, nilfs_fiemap and\nnilfs_find_uncommitted_extent are added.\n\nnilfs_fiemap() implements the fiemap inode operation, and\nnilfs_find_uncommitted_extent() helps to get a range of data blocks\nwhose physical location has not been determined.\n\nnilfs_fiemap() collects extent information by looping through\nnilfs_bmap_lookup_contig and nilfs_find_uncommitted_extent routines.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "27e6c7a3ce29ae5fa5bec4ed5917f8508bfac120",
      "tree": "958d82757bf23e426c7bc1035f76d986f09be535",
      "parents": [
        "e828949e5b42bfd234ee537cdb7c5e3a577958a3"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Dec 26 16:28:28 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:05:45 2011 +0900"
      },
      "message": "nilfs2: mark buffer heads as delayed until the data is written to disk\n\nNilfs does not allocate new blocks on disk until they are actually\nwritten to.  To implement fiemap, we need to deal with such blocks.\n\nTo allow successive fiemap patch to distinguish mapped but unallocated\nregions, this marks buffer heads of those new blocks as delayed and\nclears the flag after the blocks are written to disk.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e828949e5b42bfd234ee537cdb7c5e3a577958a3",
      "tree": "c2e259a3020acdb943669fb01e5a7dc5598a6fe9",
      "parents": [
        "b004a5eb0babec7ef91558f73315ef49e5a1f285"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 19 15:26:20 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:05:45 2011 +0900"
      },
      "message": "nilfs2: call nilfs_error inside bmap routines\n\nSome functions using nilfs bmap routines can wrongly return invalid\nargument error (i.e. -EINVAL) that bmap returns as an internal code\nfor btree corruption.\n\nThis fixes the issue by catching and converting the internal EINVAL to\nEIO and calling nilfs_error function inside bmap routines.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b004a5eb0babec7ef91558f73315ef49e5a1f285",
      "tree": "93683947103b7305889dd3d3bb3cb951a2c0409b",
      "parents": [
        "af1761f268ff2a58f2ea22e9b9de6359f7b2048e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue Nov 09 16:35:21 2010 -0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jan 10 14:05:45 2011 +0900"
      },
      "message": "fs/nilfs2/super.c: Use printf extension %pV\n\nUsing %pV reduces the number of printk calls and\neliminates any possible message interleaving from\nother printk calls.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "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": "d4d77629953eabd3c14f6fa5746f6b28babfc55f",
      "tree": "38cce0d4764ecb34a9f7f49332959780e28bb786",
      "parents": [
        "75f1dc0d076d1c1168f2115f1941ea627d38bd5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "message": "block: clean up blkdev_get() wrappers and their users\n\nAfter recent blkdev_get() modifications, open_by_devnum() and\nopen_bdev_exclusive() are simple wrappers around blkdev_get().\nReplace them with blkdev_get_by_dev() and blkdev_get_by_path().\n\nblkdev_get_by_dev() is identical to open_by_devnum().\nblkdev_get_by_path() is slightly different in that it doesn\u0027t\nautomatically add %FMODE_EXCL to @mode.\n\nAll users are converted.  Most conversions are mechanical and don\u0027t\nintroduce any behavior difference.  There are several exceptions.\n\n* btrfs now sets FMODE_EXCL in btrfs_device-\u003emode, so there\u0027s no\n  reason to OR it explicitly on blkdev_put().\n\n* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in\n  sb-\u003es_mode.\n\n* With the above changes, sb-\u003es_mode now always should contain\n  FMODE_EXCL.  WARN_ON_ONCE() added to kill_block_super() to detect\n  errors.\n\nThe new blkdev_get_*() functions are with proper docbook comments.\nWhile at it, add function description to blkdev_get() too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joern Engel \u003cjoern@lazybastard.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: xfs-masters@oss.sgi.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\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"
    }
  ],
  "next": "145c3ae46b37993b0debb0b3da6256daea4a6ec5"
}
