)]}'
{
  "log": [
    {
      "commit": "5fc7b14177b1a1c2f2511aed62a4ca870d0332e7",
      "tree": "f64f2b0f424e7506dd6bb07c133348a9796b2212",
      "parents": [
        "aa405b1f4238401616e7d98620170b424b2dbefc"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu May 05 12:56:51 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue May 10 22:21:57 2011 +0900"
      },
      "message": "nilfs2: use mark_buffer_dirty to mark btnode or meta data dirty\n\nThis replaces nilfs_mdt_mark_buffer_dirty and nilfs_btnode_mark_dirty\nmacros with mark_buffer_dirty and gets rid of nilfs_mark_buffer_dirty,\nan own mark buffer dirty function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "aa405b1f4238401616e7d98620170b424b2dbefc",
      "tree": "c42986a31c3383490d010ae55a97c37f5095220c",
      "parents": [
        "0ef28f9aec4dccfba33cef74412f601c1b48b658"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu May 05 12:56:51 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue May 10 22:21:57 2011 +0900"
      },
      "message": "nilfs2: always set back pointer to host inode in mapping-\u003ehost\n\nIn the current nilfs, page cache for btree nodes and meta data files\ndo not set a valid back pointer to the host inode in mapping-\u003ehost.\n\nThis will change it so that every address space in nilfs uses\nmapping-\u003ehost to hold its host inode.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "0ef28f9aec4dccfba33cef74412f601c1b48b658",
      "tree": "12018cde66a20b8e8804c11296ac19a3aec59fea",
      "parents": [
        "0cc1283881d3fcc9011c713e067795ccec322ae7"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu May 05 12:56:51 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue May 10 22:21:56 2011 +0900"
      },
      "message": "nilfs2: get rid of NILFS_I_NILFS\n\nThis replaces all references of NILFS_I_NILFS(inode)-\u003ens_bdev with\ninode-\u003ei_sb-\u003es_bdev and unfolds remaining uses of NILFS_I_NILFS inline\nfunction.\n\nBefore 2.6.37, referring to a nilfs object from inodes needed a\nconditional judgement, and NILFS_I_NILFS was helpful to simplify it.\nBut now we can simply do it by going through a super block instance\nlike inode-\u003ei_sb-\u003es_fs_info.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "26dfdd8e29f28c08aa67861b3c83d0f3f7d30cee",
      "tree": "3cc14a71010b454f6524006e973147837f040a39",
      "parents": [
        "f8e6cc013b896d75d6ce4ec9e168014af1257fd8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 18 10:42:23 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:15 2010 +0900"
      },
      "message": "nilfs2: add read ahead mode to nilfs_btnode_submit_block\n\nThis adds mode argument to nilfs_btnode_submit_block() function and\nallows it to issue a read-ahead request.\n\nAn optional submit_ptr argument is also added to store the actual\nblock address for which bio is sent.  submit_ptr is used for a series\nof read-ahead requests, and helps to decide if each requested block is\ncontinous to the previous one on disk.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f8e6cc013b896d75d6ce4ec9e168014af1257fd8",
      "tree": "799258b2cc52207ab98946f3f8ae3466b1b33352",
      "parents": [
        "7c397a81fe90c0445df2873700d14e82cca5fbc8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jul 15 11:39:10 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:15 2010 +0900"
      },
      "message": "nilfs2: fix buffer head leak in nilfs_btnode_submit_block\n\nnilfs_btnode_submit_block() refers to buffer head just before\nreturning from the function, but it releases the buffer head earlier\nthan that if nilfs_dat_translate() gets an error.\n\nThis has potential for oops in the erroneous case.  This fixes the\nissue.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "1376e931b75f954057b1547ba25fcba594cef804",
      "tree": "b8e75d8dddb705c661542b534b4a74f9e1e87aa4",
      "parents": [
        "75f65edfcc4a19d14fc8ab860846fad070c8db49"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 16:49:09 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: eliminate nilfs_btnode_get function\n\nThis removes the obsolete nilfs_btnode_get() function and makes\nnilfs_btree_get_block() directly call nilfs_btnode_submit_block().\n\nThis expansion will provide better opportunity for code optimization.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "75f65edfcc4a19d14fc8ab860846fad070c8db49",
      "tree": "e0edfb5767630f95620e5e7b670e0871e1d51e7b",
      "parents": [
        "45f4910bc0bb904bcf53aa04ee1b807abe1387a6"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 16:30:41 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: remove newblk argument from nilfs_btnode_submit_block\n\nThis removes the obsolete argument from nilfs_btnode_submit_block().\nThis will complete separating a create function of btree node.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "45f4910bc0bb904bcf53aa04ee1b807abe1387a6",
      "tree": "d40f556ef778f9d4c2b37b4978fae29835de150d",
      "parents": [
        "d501d7368937740e8d06671a4bfe4e236ed25bd0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 16:25:19 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:49 2009 +0900"
      },
      "message": "nilfs2: use nilfs_btnode_create_block function\n\nThis displaces nilfs_btnode_get() use to create new btree node block\nwith nilfs_btnode_create_block.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d501d7368937740e8d06671a4bfe4e236ed25bd0",
      "tree": "c0abbdc89862cfdb5e85321cbc6f2959af376cd9",
      "parents": [
        "b34a65069caa56b691ebab5ae0b8e54d16406d16"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 16:04:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:49 2009 +0900"
      },
      "message": "nilfs2: separate function for creating new btree node block\n\nAdds a separate routine for creating a btree node block.  This is a\npreparation to reduce the depth of function calls during submitting\nbtree node buffer.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "05b4358ad564d7a6a51b3717afe771d36711e9c4",
      "tree": "ad8473aadd4a8f8e25aa40bf1bef8f16f7490d83",
      "parents": [
        "aeda7f6343e6375a832e52ff5ed389c115023ca5"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 01:20:35 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 12:32:03 2009 +0900"
      },
      "message": "nilfs2: add zero-fill for new btree node buffers\n\nAdds missing initialization of newly allocated b-tree node buffers.\nThis avoids garbage data to be mixed in b-tree node blocks.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b1e19e5601277845b4f17ecd7c9ba04f73ee11aa",
      "tree": "bdc23c9fcc4bfe58787b63e9c739c0692b79dc4d",
      "parents": [
        "1836d95928a0f41ada0cbb2a6c4e46b027db9491"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 00:25:53 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 12:31:36 2009 +0900"
      },
      "message": "nilfs2: fix dirty page accounting leak causing hang at write\n\nBruno Prémont and Dunphy, Bill noticed me that NILFS will certainly\nhang on ARM-based targets.\n\nI found this was caused by an underflow of dirty pages counter.  A\nb-tree cache routine was marking page dirty without adjusting page\naccount information.\n\nThis fixes the dirty page accounting leak and resolves the hang on\narm-based targets.\n\nReported-by: Bruno Prémont \u003cbonbons@linux-vserver.org\u003e\nReported-by: Dunphy, Bill \u003cWDunphy@tandbergdata.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Bruno Prémont \u003cbonbons@linux-vserver.org\u003e\nCc: stable \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "1f28fcd925b2b3157411bbd08f0024b55b70d8dd",
      "tree": "339976516f9d8c25f4efb3ba8bbffcc395d58c83",
      "parents": [
        "17d857be649a21ca90008c6dc425d849fa83db5c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 28 01:46:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Sep 29 20:12:56 2009 +0900"
      },
      "message": "nilfs2: fix missing zero-fill initialization of btree node cache\n\nThis will fix file system corruption which infrequently happens after\nmount.  The problem was reported from users with the title \"[NILFS\nusers] Fail to mount NILFS.\" (Message-ID:\n\u003c200908211918.34720.yuri@itinteg.net\u003e), and so forth.  I\u0027ve also\nexperienced the corruption multiple times on kernel 2.6.30 and 2.6.31.\n\nThe problem turned out to be caused due to discordance between\nmapping-\u003enrpages of a btree node cache and the actual number of pages\nhung on the cache; if the mapping-\u003enrpages becomes zero even as it has\npages, truncate_inode_pages() returns without doing anything.  Usually\nthis is harmless except it may cause page leak, but garbage collection\nfairly infrequently sees a stale page remained in the btree node cache\nof DAT (i.e. disk address translation file of nilfs), and induces the\ncorruption.\n\nI identified a missing initialization in btree node caches was the\nroot cause.  This corrects the bug.\n\nI\u0027ve tested this for kernel 2.6.30 and 2.6.31.\n\nReported-by: Yuri Chislov \u003cyuri@itinteg.net\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "7f09410bbc4306f592cfb43812389ea1c7905a20",
      "tree": "18f179435f70c4ec9231883501062d5ea0357af5",
      "parents": [
        "ac4cfdd6d141c319a7af8655f750ed504c187a74"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining address_space_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1f1b8ce0a1d71cbc72f7540134d52b79bd8f5ac",
      "tree": "34261c597d93a43d9adf299e657b4fd5eebd43b7",
      "parents": [
        "326ba5010a5429a5a528b268b36a5900d4ab0eba"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 30 04:21:41 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Aug 31 12:03:06 2009 +0900"
      },
      "message": "nilfs2: fix preempt count underflow in nilfs_btnode_prepare_change_key\n\nThis will fix the following preempt count underflow reported from\nusers with the title \"[NILFS users] segctord problem\" (Message-ID:\n\u003c949415.6494.qm@web58808.mail.re1.yahoo.com\u003e and Message-ID:\n\u003cdebc30fc0908270825v747c1734xa59126623cfd5b05@mail.gmail.com\u003e):\n\n WARNING: at kernel/sched.c:4890 sub_preempt_count+0x95/0xa0()\n Hardware name: HP Compaq 6530b (KR980UT#ABC)\n Modules linked in: bridge stp llc bnep rfcomm l2cap xfs exportfs nilfs2 cowloop loop vboxnetadp vboxnetflt vboxdrv btusb bluetooth uvcvideo videodev v4l1_compat v4l2_compat_ioctl32 arc4 snd_hda_codec_analog ecb iwlagn iwlcore rfkill lib80211 mac80211 snd_hda_intel snd_hda_codec ehci_hcd uhci_hcd usbcore snd_hwdep snd_pcm tg3 cfg80211 psmouse snd_timer joydev libphy ohci1394 snd_page_alloc hp_accel lis3lv02d ieee1394 led_class i915 drm i2c_algo_bit video backlight output i2c_core dm_crypt dm_mod\n Pid: 4197, comm: segctord Not tainted 2.6.30-gentoo-r4-64 #7\n Call Trace:\n  [\u003cffffffff8023fa05\u003e] ? sub_preempt_count+0x95/0xa0\n  [\u003cffffffff802470f8\u003e] warn_slowpath_common+0x78/0xd0\n  [\u003cffffffff8024715f\u003e] warn_slowpath_null+0xf/0x20\n  [\u003cffffffff8023fa05\u003e] sub_preempt_count+0x95/0xa0\n  [\u003cffffffffa04ce4db\u003e] nilfs_btnode_prepare_change_key+0x11b/0x190 [nilfs2]\n  [\u003cffffffffa04d01ad\u003e] nilfs_btree_assign_p+0x19d/0x1e0 [nilfs2]\n  [\u003cffffffffa04d10ad\u003e] nilfs_btree_assign+0xbd/0x130 [nilfs2]\n  [\u003cffffffffa04cead7\u003e] nilfs_bmap_assign+0x47/0x70 [nilfs2]\n  [\u003cffffffffa04d9bc6\u003e] nilfs_segctor_do_construct+0x956/0x20f0 [nilfs2]\n  [\u003cffffffff805ac8e2\u003e] ? _spin_unlock_irqrestore+0x12/0x40\n  [\u003cffffffff803c06e0\u003e] ? __up_write+0xe0/0x150\n  [\u003cffffffff80262959\u003e] ? up_write+0x9/0x10\n  [\u003cffffffffa04ce9f3\u003e] ? nilfs_bmap_test_and_clear_dirty+0x43/0x60 [nilfs2]\n  [\u003cffffffffa04cd627\u003e] ? nilfs_mdt_fetch_dirty+0x27/0x60 [nilfs2]\n  [\u003cffffffffa04db5fc\u003e] nilfs_segctor_construct+0x8c/0xd0 [nilfs2]\n  [\u003cffffffffa04dc3dc\u003e] nilfs_segctor_thread+0x15c/0x3a0 [nilfs2]\n  [\u003cffffffffa04dbe20\u003e] ? nilfs_construction_timeout+0x0/0x10 [nilfs2]\n  [\u003cffffffff80252633\u003e] ? add_timer+0x13/0x20\n  [\u003cffffffff802370da\u003e] ? __wake_up_common+0x5a/0x90\n  [\u003cffffffff8025e960\u003e] ? autoremove_wake_function+0x0/0x40\n  [\u003cffffffffa04dc280\u003e] ? nilfs_segctor_thread+0x0/0x3a0 [nilfs2]\n  [\u003cffffffffa04dc280\u003e] ? nilfs_segctor_thread+0x0/0x3a0 [nilfs2]\n  [\u003cffffffff8025e556\u003e] kthread+0x56/0x90\n  [\u003cffffffff8020cdea\u003e] child_rip+0xa/0x20\n  [\u003cffffffff8025e500\u003e] ? kthread+0x0/0x90\n  [\u003cffffffff8020cde0\u003e] ? child_rip+0x0/0x20\n\nThis problem was caused due to a missing radix_tree_preload() call in\nthe retry path of nilfs_btnode_prepare_change_key() function.\n\nReported-by: Eric A \u003ceric225125@yahoo.com\u003e\nReported-by: Jerome Poulin \u003cjeromepoulin@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Jerome Poulin \u003cjeromepoulin@gmail.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "fa032744ad41de1b0a1807e7c379c6196e72ad80",
      "tree": "b88d335fd367ffee7e22403037e637da44a6ab68",
      "parents": [
        "a53b4751ae92adb372017222887f3ec625cba60b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed May 27 22:44:34 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:12 2009 +0900"
      },
      "message": "nilfs2: add sync_page method to page caches of meta data\n\nThis applies block_sync_page() function to the sync_page method of\npage caches for meta data files, gc page caches, and btree node\nbuffers.  This is a companion patch of (\"nilfs2: enable sync_page\nmothod\") which applied the function for data pages.\n\nThis allows lock_page() for those meta data to unplug pending bio\nrequests.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a53b4751ae92adb372017222887f3ec625cba60b",
      "tree": "454c0876bb532ee44ad07485e6d40c60e157ca34",
      "parents": [
        "30c25be71fcbd87fd33518045cc014e69bff3d6f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed May 27 22:11:46 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:12 2009 +0900"
      },
      "message": "nilfs2: use device\u0027s backing_dev_info for btree node caches\n\nPreviously, default_backing_dev_info was used for the mapping of btree\nnode caches.  This uses device dependent backing_dev_info to allow\ndetailed control of the device for the btree node pages.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a60be987d45dd510aeb54389526f9957cfab106c",
      "tree": "ffe680785f1f7d4e4096cd211e37bcfeaccafc63",
      "parents": [
        "36a580eb489f54d81a0534974962e732a314b999"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: B-tree node cache\n\nThis adds routines for B-tree node buffers.\n\nSigned-off-by: Seiji Kihara \u003ckihara.seiji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
