)]}'
{
  "log": [
    {
      "commit": "325020477a51ffa849418b3e38189fd266f2ae20",
      "tree": "a02d99b61ed3b98fbbd56f857fdd46808326dff7",
      "parents": [
        "6c12516083cf51b6e576691ac6e20c4a32f4edb9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jun 29 14:42:13 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:11 2010 +0900"
      },
      "message": "nilfs2: do not update log cursor for small change\n\nSuper blocks of nilfs are periodically overwritten in order to record\nthe recent log position.  This shortens recovery time after unclean\nunmount, but the current implementation performs the update even for a\nfew blocks of change.  If the filesystem gets small changes slowly and\ncontinually, super blocks may be updated excessively.\n\nThis moderates the issue by skipping update of log cursor if it does\nnot cross a segment boundary.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b2ac86e1a8e3a3b0ab4449d062c582f07a078e7b",
      "tree": "b681ea820685a278e06995ff23b58f7a85904b70",
      "parents": [
        "d26493b6f017c0b0063a15bf893411ddae85eee4"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Mon Jun 28 17:49:33 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:11 2010 +0900"
      },
      "message": "nilfs2: sync super blocks in turns\n\nThis will sync super blocks in turns instead of syncing duplicate\nsuper blocks at the time.  This will help searching valid super root\nwhen super block is written into disk before log is written, which is\nhappen when barrier-less block devices are unmounted uncleanly.  In\nthe situation, old super block likely points to valid log.\n\nThis patch introduces ns_sbwcount member to the nilfs object and adds\nnilfs_sb_will_flip() function; ns_sbwcount counts how many times super\nblocks write back to the disk.  And, nilfs_sb_will_flip() decides\nwhether flipping required or not based on the count of ns_sbwcount to\nsync super blocks asymmetrically.\n\nThe following functions are also changed:\n\n - nilfs_prepare_super(): flips super blocks according to the\n   argument.  The argument is calculated by nilfs_sb_will_flip()\n   function.\n\n - nilfs_cleanup_super(): sets \"clean\" flag to both super blocks if\n   they point to the same checkpoint.\n\nTo update both of super block information, caller of\nnilfs_commit_super must set the information on both super blocks.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d26493b6f017c0b0063a15bf893411ddae85eee4",
      "tree": "994de3e7c0383f0e30e5e9c88c0c5d0261a834bc",
      "parents": [
        "60f46b7efc1d6b980511c2644cb89903062f6e98"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Mon Jun 28 17:49:32 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:10 2010 +0900"
      },
      "message": "nilfs2: introduce nilfs_prepare_super\n\nThis function checks validity of super block pointers.\nIf first super block is invalid, it will swap the super blocks.\nThe function should be called before any super block information updates.\nCaller must obtain nilfs-\u003ens_sem.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4762077c7b93d35e0417f66702deae3ce3a9855e",
      "tree": "b292dca26b4dedd12f8f1d45ab3b7d49c137f8b0",
      "parents": [
        "85655484f896d078d310221475b90ea27f76e5f2"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 23 21:48:36 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jul 23 10:02:09 2010 +0900"
      },
      "message": "nilfs2: get rid of macros for segment summary information\n\nThis removes macros to test segment summary flags and redefines a few\nrelevant macros with inline functions.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4e819509cba664e7cbfba5c4d1517df4dfda86f5",
      "tree": "ade615c9d48d18e31a6906ac0955339e917a2a48",
      "parents": [
        "db55d92252c07c0e5561966ecca95c6f332dd892"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Apr 23 17:35:23 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:31 2010 +0900"
      },
      "message": "nilfs2: make nilfs_sc_*_ops static\n\nThis kills the following sparse warnings:\n\nfs/nilfs2/segment.c:567:28: warning: symbol \u0027nilfs_sc_file_ops\u0027 was not declared. Should it be static?\nfs/nilfs2/segment.c:617:28: warning: symbol \u0027nilfs_sc_dat_ops\u0027 was not declared. Should it be static?\nfs/nilfs2/segment.c:625:28: warning: symbol \u0027nilfs_sc_dsync_ops\u0027 was not declared. Should it be static?\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "fdce895ea5dd4e24edf1f4d693827349a4e5b3b4",
      "tree": "77a1a4cd496ed8459813eddf68efe8b777c3c058",
      "parents": [
        "154ac5a83014cd6ea72e4ac5018bf8c10ee9a79e"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Sat Apr 10 23:25:39 2010 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:31 2010 +0900"
      },
      "message": "nilfs2: change sc_timer from a pointer to an embedded one in struct nilfs_sc_info\n\nIn nilfs_segctor_thread(), timer is a local variable allocated on stack. Its\naddress can\u0027t be set to sci-\u003esc_timer and passed in several procedures.\n\nIt works now by chance, just because other procedures are called by\nnilfs_segctor_thread() directly or indirectly and the stack hasn\u0027t been\ndeallocated yet.\n\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "154ac5a83014cd6ea72e4ac5018bf8c10ee9a79e",
      "tree": "ea772f3e5b301e1dbf81c6ff9821711c9de61db6",
      "parents": [
        "50614bcf29d0cec6df5b84c0d8331e8b8c7d72a7"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Sat Apr 10 21:57:11 2010 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:31 2010 +0900"
      },
      "message": "nilfs2: remove nilfs_segctor_init() in segment.c\n\nThere are only two lines of code in nilfs_segctor_init(). From a logic\ndesign view, the first line \u0027sci-\u003esc_seq_done \u003d sci-\u003esc_seq_request;\u0027\nshould be put in nilfs_segctor_new(). Even in nilfs_segctor_new(),\nthis initialization is needless because sci is kzalloc-ed. So\nnilfs_segctor_init() is only a wrap call to\nnilfs_segctor_start_thread().\n\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "50614bcf29d0cec6df5b84c0d8331e8b8c7d72a7",
      "tree": "3a91f6af1396f377a3bced903d605feb9b811b15",
      "parents": [
        "9f130263f30233a44a3175db3218dd89af143d64"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Apr 10 17:59:15 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:31 2010 +0900"
      },
      "message": "nilfs2: insert checkpoint number in segment summary header\n\nThis adds a field to record the latest checkpoint number in the\nnilfs_segment_summary structure.  This will help to recover the latest\ncheckpoint number from logs on disk.  This field is intended for\ncrucial cases in which super blocks have lost pointer to the latest\nlog.\n\nEven though this will change the disk format, both backward and\nforward compatibility is preserved by a size field prepared in the\nsegment summary header.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "41c88bd74d372db5102996a4ea6167a725c24b5e",
      "tree": "98b8e208d41f7760458e82569e297843415bbe7d",
      "parents": [
        "aaed1d5bfac459ead9aaad324e7fe3326250f50a"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Tue Apr 06 00:54:11 2010 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:30 2010 +0900"
      },
      "message": "nilfs2: cleanup multi kmem_cache_{create,destroy} code\n\nThis cleanup patch gives several improvements:\n\n - Moving all kmem_cache_{create_destroy} calls into one place, which removes\n some small function calls, cleans up error check code and clarify the logic.\n\n - Mark all initial code in __init section.\n\n - Remove some very obvious comments.\n\n - Adjust some declarations.\n\n - Fix some space-tab issues.\n\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "aaed1d5bfac459ead9aaad324e7fe3326250f50a",
      "tree": "389f305354db9a45a482ff38e5f0ffab030c76bd",
      "parents": [
        "1e2b68bf285dce604388fcb6f85b7e612156db17"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 23 01:50:38 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:30 2010 +0900"
      },
      "message": "nilfs2: move out checksum routines to segment buffer code\n\nThis moves out checksum routines in log writer to segbuf.c for\ncleanup.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1e2b68bf285dce604388fcb6f85b7e612156db17",
      "tree": "5cf59247e8171edceb77a521fd2cdf865f0ec9d2",
      "parents": [
        "277a6a34175dcb0ee98dceee619e0e3190347a25"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 23 01:15:31 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:30 2010 +0900"
      },
      "message": "nilfs2: move pointer to super root block into logs\n\nThis moves a pointer to buffer storing super root block to each log\nbuffer from nilfs_sc_info struct for simplicity.\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": "110d735a0ae69bdd11af9acb6ea3b979137eb118",
      "tree": "aa25160aad878031823920a00e802ac3da76b5bb",
      "parents": [
        "2d8428acaee5468d194d8a84de22a0797791cb33"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Mar 22 21:36:06 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 24 00:03:06 2010 +0900"
      },
      "message": "nilfs2: fix hang-up of cleaner after log writer returned with error\n\nAccording to the report from Andreas Beckmann (Message-ID:\n\u003c4BA54677.3090902@abeckmann.de\u003e), nilfs in 2.6.33 kernel got stuck\nafter a disk full error.\n\nThis turned out to be a regression by log writer updates merged at\nkernel 2.6.33.  nilfs_segctor_abort_construction, which is a cleanup\nfunction for erroneous cases, was skipping writeback completion for\nsome logs.\n\nThis fixes the bug and would resolve the hang issue.\n\nReported-by: Andreas Beckmann \u003cdebian@abeckmann.de\u003e\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.33.x]\n"
    },
    {
      "commit": "2d8428acaee5468d194d8a84de22a0797791cb33",
      "tree": "4d7b400be54f01b9756bffe421c109c19dafe458",
      "parents": [
        "220bf991b0366cc50a94feede3d7341fa5710ee4"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Mar 22 14:01:24 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Mar 22 14:41:07 2010 +0900"
      },
      "message": "nilfs2: fix duplicate call to nilfs_segctor_cancel_freev\n\nAndreas Beckmann gave me a report that nilfs logged the following\nwarnings when it got a disk full:\n\n  nilfs_sufile_do_cancel_free: segment 0 must be clean\n  nilfs_sufile_do_cancel_free: segment 1 must be clean\n\nThese arise from a duplicate call to nilfs_segctor_cancel_freev in an\nerror path of log writer.  This will fix the issue.\n\nReported-by: Andreas Beckmann \u003cdebian@abeckmann.de\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7a65004bbaa6a21a0438aac9c64814e46084dc3f",
      "tree": "3153527bf645a5ee5865f9059b08282ec00e99f5",
      "parents": [
        "1621562b6ac55aa69239895d90276577547a5f62"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 14 03:32:40 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 14 10:29:51 2010 +0900"
      },
      "message": "nilfs2: fix various typos in comments\n\nThis fixes various typos I found in comments of nilfs2.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9ccf56c13831c5fe0edecd8c1184c9a6fe805d23",
      "tree": "f3e3810e1d12e6ba88b7dfd922f0185a90112073",
      "parents": [
        "6c477d44a7dad43a2783b4dea7f4ca3882d77126"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 14 03:01:03 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 14 10:29:50 2010 +0900"
      },
      "message": "nilfs2: fix function name typos in docbook comments\n\nFixes the following typos in docbook comments:\n\n nilfs_detroy_transaction_cache -\u003e nilfs_destroy_transaction_cache\n nilfs_secgtor_start_timer -\u003e nilfs_segctor_start_timer\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d1c6b72a7224f6cd6924f7079f79580cde696d68",
      "tree": "0046a65c661f0bdade1e6afe1d995ea624ede7cb",
      "parents": [
        "e605f0a7249d8002c660af379f884896cbaa45ae"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Dec 17 00:55:40 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Feb 13 12:26:03 2010 +0900"
      },
      "message": "nilfs2: move iterator to write log into segment buffer\n\nThis moves iterator to submit write requests for a series of logs into\nsegbuf.c, and hides nilfs_segbuf_write() and nilfs_segbuf_wait() in\nthe file.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e605f0a7249d8002c660af379f884896cbaa45ae",
      "tree": "8daadf8848cd8f6c7817c399e568a2fcecdf0255",
      "parents": [
        "dcd76186955e2b595c378dbe5b9bb6c8c5374b10"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Dec 09 00:57:52 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Feb 13 12:26:03 2010 +0900"
      },
      "message": "nilfs2: get rid of s_dirt flag use\n\nThis replaces s_dirt flag use in nilfs with a new flag added on the\nnilfs object.  The s_dirt flag was used to indicate if\nsop-\u003ewrite_super() should be called, however the current version of\nnilfs does not use the callback.  Thus, it can be replaced with the\nown flag.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Jiro SEKIBA \u003cjir@unicus.jp\u003e\n"
    },
    {
      "commit": "dcd76186955e2b595c378dbe5b9bb6c8c5374b10",
      "tree": "96efa3758e289ddaf5279b8c77f7f9e2f8a3a142",
      "parents": [
        "086d1764b22bb2d9d79bb8e2198927acf028d732"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jan 26 15:20:15 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Feb 13 12:26:03 2010 +0900"
      },
      "message": "nilfs2: get rid of nilfs_segctor_req struct\n\nThis will clean up nilfs_segctor_req struct and the obscure request\nargument passed among private methods of segment constructor.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "fe5f171bb272946ce5fbf843ce2f8467d0d41b9a",
      "tree": "fc3917cd7b3fae605e464f94af815dc9d9cce36f",
      "parents": [
        "7512487e6d6459e4c3f9c7cedc53050a6c30e387"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jan 31 19:46:40 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Feb 13 12:26:03 2010 +0900"
      },
      "message": "nilfs2: fix potential hang in nilfs_error on errors\u003dremount-ro\n\nnilfs_error() calls nilfs_detach_segment_constructor() if\nerrors\u003dremount-ro option is specified, and this may lead to a hang due\nto recursive locking of, for instance, nilfs-\u003ens_segctor_sem and\nothers.\n\nIn this case, detaching segment constructor is not necessary because\nread-only flag is set to the filesystem and further writes are\nblocked.\n\nThis fixes the potential hang issue by removing the\nnilfs_detach_segment_constructor() call from nilfs_error.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e902ec9906e844f4613fa6190c6fa65f162dc86e",
      "tree": "ee0ea829ae04a30fb01c119f050a3967304e55ba",
      "parents": [
        "724e6d3fe8003c3f60bf404bf22e4e331327c596"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Sat Jan 30 18:06:35 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Feb 13 12:26:02 2010 +0900"
      },
      "message": "nilfs2: issue discard request after cleaning segments\n\nThis adds a function to send discard requests for given array of\nsegment numbers, and calls the function when garbage collection\nsucceeded.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3256a05531b1164a9c138da701b922a113bddf82",
      "tree": "cbaf7f9c6ee23683eef59922ae08e60da110a487",
      "parents": [
        "abe94c756c08d50566c09a65b9c7fe72f83071c5"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jan 31 12:39:50 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jan 31 14:57:31 2010 +0900"
      },
      "message": "nilfs2: fix potential leak of dirty data on umount\n\nThis fixes incorrect usage of nilfs_segctor_confirm() test function in\nnilfs_segctor_destroy(); nilfs_segctor_confirm() returns zero if the\nfilesystem is not clean, so its use in nilfs_segctor_destroy() needs\ninversion.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a694291a6211537189c6080f77f63cdabfc9b63e",
      "tree": "ec23d36fc493eeaaedd72f54187652f9df3b4819",
      "parents": [
        "e29df395bc6d2d0c89b3d8a5939a24b1b43c2fb6"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 23:03:04 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 30 21:17:52 2009 +0900"
      },
      "message": "nilfs2: separate wait function from nilfs_segctor_write\n\nThis separates wait function for submitted logs from the write\nfunction nilfs_segctor_write().  A new list of segment buffers\n\"sc_write_logs\" is added to hold logs under writing, and double\nbuffering is partially applied to hide io latency.\n\nAt this point, the double buffering is disabled for blocksize \u003c\npagesize because page dirty flag is turned off during write and dirty\nbuffers are not properly collected for pages crossing over segments.\n\nTo receive full benefit of the double buffering, further refinement is\nneeded to move the io wait outside the lock section of log writer.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e29df395bc6d2d0c89b3d8a5939a24b1b43c2fb6",
      "tree": "6d6f570d8158d7a18570492d9f5f5edf843ed28c",
      "parents": [
        "9c965bac169f786cc6cca8ff81d3b636e923c960"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 16:51:16 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 30 21:06:35 2009 +0900"
      },
      "message": "nilfs2: add iterator for segment buffers\n\nThis adds a few iterator functions for segment buffers to make it easy\nto handle multiple series of logs.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9c965bac169f786cc6cca8ff81d3b636e923c960",
      "tree": "71c05d6e981e2b2c5c3797cbcf8b8e619b48e966",
      "parents": [
        "9284ad2a9016ad631460caf8fd01fc21d84f118c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 01:17:31 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 30 21:06:35 2009 +0900"
      },
      "message": "nilfs2: hide nilfs_write_info struct in segment buffer code\n\nHides nilfs_write_info struct and nilfs_segbuf_prepare_write function\nin segbuf.c to simplify the interface of nilfs_segbuf_write function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9284ad2a9016ad631460caf8fd01fc21d84f118c",
      "tree": "6ef77d51ca75017a1632bf215703ed9ee12feade",
      "parents": [
        "5f1586d0dd8f6eeecf6c0d35cbca6291afd6f1cc"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 25 01:04:21 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 30 21:05:57 2009 +0900"
      },
      "message": "nilfs2: relocate io status variables to segment buffer\n\nThis moves io status variables in nilfs_write_info struct to\nnilfs_segment_buffer struct.\n\nThis is a preparation to hide nilfs_write_info in segment buffer code.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "0935db747739782fc779eb58529610c12db88ea2",
      "tree": "27df2a16a8eb06c0548ea8fd4feb28aa1cbc5e1b",
      "parents": [
        "abdb318b79d387a723af5db2aa79f812cefd0797"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 02:39:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 02:50:46 2009 +0900"
      },
      "message": "nilfs2: use list_splice_tail or list_splice_tail_init\n\nThis applies list_splice_tail (or list_splice_tail_init) operation\ninstead of list_splice (or list_splice_init, respectively) to append a\nnew list to tail of an existing list.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "071ec54dd730307ee0e703a105872b9a1c6fd2aa",
      "tree": "fb6629e471adf24d432487e0641549fd38d20ef3",
      "parents": [
        "61a189e9c62359cd12b2aa3bd6ab9cffa6cf2745"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 18 18:23:34 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:51 2009 +0900"
      },
      "message": "nilfs2: move routine to set segment usage into sufile\n\nThis adds nilfs_sufile_set_segment_usage() function in sufile to\nreplace direct access to the sufile metadata in log writer code.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "61a189e9c62359cd12b2aa3bd6ab9cffa6cf2745",
      "tree": "03c5cb693a5ea01474055fa26028c42d37011b1d",
      "parents": [
        "70622a2091647840013c1e982e56a8808768847e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 18 17:25:12 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:51 2009 +0900"
      },
      "message": "nilfs2: move routine marking segment usage dirty into sufile\n\nThis adds nilfs_sufile_mark_dirty() function in sufile to replace\nnilfs_touch_segusage() function in log writer code.  This is a\npreparation for the further cleanup which will move out low level\nsufile operations in the log writer.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3961f0e2775f84a8f81b0dcddb0b356ebfe0696b",
      "tree": "908bf31a9a3ae79c8f122bdcaa6102e0996a6ac1",
      "parents": [
        "8707df38478c8e0958b706f0ea1cdf99d00a9469"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 01:55:02 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: eliminate inlines to directly read/write inode of metadata files\n\nRemoves two inline functions: nilfs_mdt_read_inode_direct() and\nnilfs_mdt_write_inode_direct().\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "aeda7f6343e6375a832e52ff5ed389c115023ca5",
      "tree": "2543be730f7fff44e23fbe302108afa0093cc643",
      "parents": [
        "b1e19e5601277845b4f17ecd7c9ba04f73ee11aa"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 02 15:08:13 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 12:32:03 2009 +0900"
      },
      "message": "nilfs2: fix irregular checkpoint creation due to data flush\n\nWhen nilfs flushes out dirty data to reduce memory pressure, creation\nof checkpoints is wrongly postponed.  This bug causes irregular\ncheckpoint creation especially in small footprint systems.\n\nTo correct this issue, a timer for the checkpoint creation has to be\ncontinued if a log writer does not create a checkpoint.\n\nThis will do the correction.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1dfa27105a6cf4171c439fd40a004a0a17838115",
      "tree": "7d348398a9e623324ca86eafd050b8c12abf3cea",
      "parents": [
        "79efdd94111f30c373fce05e4e5822d8ff671c2a"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Jul 23 01:33:49 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: stop using periodic write_super callback\n\nThis removes nilfs_write_super and commit super block in nilfs\ninternal thread, instead of periodic write_super callback.\n\nVFS layer calls -\u003ewrite_super callback periodically.  However,\nit looks like that calling back is ommited when disk I/O is busy.\nAnd when cleanerd (nilfs GC) is runnig, disk I/O tend to be busy thus\nnilfs superblock is not synchronized as nilfs designed.\n\nTo avoid it, syncing superblock by nilfs thread instead of pdflush.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a97778457f22181e8c38c4cd7d7e528378738a98",
      "tree": "d2ee3d9491ab2b17551f099d9a6119407700dbd2",
      "parents": [
        "ed680c4ad478d0fee9740f7d029087f181346564"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 28 17:55:29 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 01 22:48:32 2009 +0900"
      },
      "message": "nilfs2: fix oops due to inconsistent state in page with discrete b-tree nodes\n\nAndrea Gelmini gave me a report that a kernel oops hit on a nilfs\nfilesystem with a 1KB block size when doing rsync.\n\nThis turned out to be caused by an inconsistency of dirty state\nbetween a page and its buffers storing b-tree node blocks.\n\nIf the page had multiple buffers split over multiple logs, and if the\nlogs were written at a time, a dirty flag remained in the page even\nevery dirty flag in the buffers was cleared.\n\nThis will fix the failure by dropping the dirty flag properly for\npages with the discrete multiple b-tree nodes.\n\nReported-by: Andrea Gelmini \u003candrea.gelmini@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Andrea Gelmini \u003candrea.gelmini@gmail.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "8227b29722fdbac72357aae155d171a5c777670c",
      "tree": "d44631f3aac26da4cdcd2abd8b0f1d8661fc59b5",
      "parents": [
        "0cfae3d8795f388f9de78adb0171520d19da77e9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jun 18 23:52:23 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:20 2009 +0900"
      },
      "message": "nilfs2: fix hang problem of log writer which occurs after write failures\n\nLeandro Lucarella gave me a report that nilfs gets stuck after its\nwrite function fails.\n\nThe problem turned out to be caused by bugs which leave writeback flag\non pages.  This fixes the problem by ensuring to clear the writeback\nflag in error path.\n\nReported-by: Leandro Lucarella \u003cllucax@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "0cfae3d8795f388f9de78adb0171520d19da77e9",
      "tree": "4f4e447edc025cb1f96ac27da030b8b36164865b",
      "parents": [
        "8e4a718ff38d8539938ec3421935904c27e00c39"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jun 18 11:42:53 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:19 2009 +0900"
      },
      "message": "nilfs2: remove unlikely directive causing mis-conversion of error code\n\nThe following error code handling in nilfs_segctor_write() function\nwrongly converted negative error codes to a truth value (i.e. 1):\n\n   err \u003d unlikely(err) ? : res;\n\nwhich originaly meant to be\n\n   err \u003d err ? : res;\n\nThis mis-conversion caused that write or sync functions receive the\nunexpected error code.  This fixes the bug by removing the unlikely\ndirective.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "071cb4b81987a28c7ac2702003cff3e61684a630",
      "tree": "41e2f5a6d0e12d4ccc49850992ce6bfee68dd00e",
      "parents": [
        "dda54f4b872512eba484c38631bd6ae5b5716f41"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 16 23:44:55 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:09 2009 +0900"
      },
      "message": "nilfs2: eliminate removal list of segments\n\nThis will clean up the removal list of segments and the related\nfunctions from segment.c and ioctl.c, which have hurt code\nreadability.\n\nThis elimination is applied by using nilfs_sufile_updatev() previously\nintroduced in the patch (\"nilfs2: add sufile function that can modify\nmultiple segment usages\").\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4f6b828837b4e3836f2c9ac2f0eab9773b6c1327",
      "tree": "9baa69b0ef44a0c604be831300fd5215c0355be0",
      "parents": [
        "47eb6b9c8fa963c9f49967ad1d9d7ec947d15b68"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 10 22:41:43 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 11 14:54:41 2009 +0900"
      },
      "message": "nilfs2: fix lock order reversal in nilfs_clean_segments ioctl\n\nThis is a companion patch to (\"nilfs2: fix possible circular locking\nfor get information ioctls\").\n\nThis corrects lock order reversal between mm-\u003emmap_sem and\nnilfs-\u003ens_segctor_sem in nilfs_clean_segments() which was detected by\nlockdep check:\n\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n [ INFO: possible circular locking dependency detected ]\n 2.6.30-rc3-nilfs-00003-g360bdc1 #7\n -------------------------------------------------------\n mmap/5294 is trying to acquire lock:\n  (\u0026nilfs-\u003ens_segctor_sem){++++.+}, at: [\u003cd0d0e846\u003e] nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n\n but task is already holding lock:\n  (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc043700a\u003e] do_page_fault+0x1d8/0x30a\n\n which lock already depends on the new lock.\n\n the existing dependency chain (in reverse order) is:\n\n -\u003e #1 (\u0026mm-\u003emmap_sem){++++++}:\n        [\u003cc01470a5\u003e] __lock_acquire+0x1066/0x13b0\n        [\u003cc01474a9\u003e] lock_acquire+0xba/0xdd\n        [\u003cc01836bc\u003e] might_fault+0x68/0x88\n        [\u003cc023c61d\u003e] copy_from_user+0x2a/0x111\n        [\u003cd0d120d0\u003e] nilfs_ioctl_prepare_clean_segments+0x1d/0xf1 [nilfs2]\n        [\u003cd0d0e2aa\u003e] nilfs_clean_segments+0x6d/0x1b9 [nilfs2]\n        [\u003cd0d11f68\u003e] nilfs_ioctl+0x2ad/0x318 [nilfs2]\n        [\u003cc01a3be7\u003e] vfs_ioctl+0x22/0x69\n        [\u003cc01a408e\u003e] do_vfs_ioctl+0x460/0x499\n        [\u003cc01a4107\u003e] sys_ioctl+0x40/0x5a\n        [\u003cc01031a4\u003e] sysenter_do_call+0x12/0x38\n        [\u003cffffffff\u003e] 0xffffffff\n\n -\u003e #0 (\u0026nilfs-\u003ens_segctor_sem){++++.+}:\n        [\u003cc0146e0b\u003e] __lock_acquire+0xdcc/0x13b0\n        [\u003cc01474a9\u003e] lock_acquire+0xba/0xdd\n        [\u003cc0433f1d\u003e] down_read+0x2a/0x3e\n        [\u003cd0d0e846\u003e] nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n        [\u003cd0cfe0e5\u003e] nilfs_page_mkwrite+0xe7/0x154 [nilfs2]\n        [\u003cc0183b0b\u003e] __do_fault+0x165/0x376\n        [\u003cc01855cd\u003e] handle_mm_fault+0x287/0x5d1\n        [\u003cc043712d\u003e] do_page_fault+0x2fb/0x30a\n        [\u003cc0435462\u003e] error_code+0x72/0x78\n        [\u003cffffffff\u003e] 0xffffffff\n\nwhere nilfs_clean_segments() holds:\n\n  nilfs-\u003ens_segctor_sem -\u003e copy_from_user()\n                             --\u003e page fault -\u003e mm-\u003emmap_sem\n\nAnd, page fault path may hold:\n\n  page fault -\u003e mm-\u003emmap_sem\n         --\u003e nilfs_page_mkwrite() -\u003e nilfs-\u003ens_segctor_sem\n\nEven though nilfs_clean_segments() does not perform write access on\ngiven user pages, it may cause deadlock because nilfs-\u003ens_segctor_sem\nis shared per device and mm-\u003emmap_sem can be shared with other tasks.\n\nTo avoid this problem, this patch moves all calls of copy_from_user()\noutside the nilfs-\u003ens_segctor_sem lock in the ioctl.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e339ad31f59925b48a92ee3947692fdf9758b8c7",
      "tree": "6bb85c43bfd100b0a220c788c654f2f74ca553e4",
      "parents": [
        "cece552074c591970353ad48308d65f110aeaf28"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:20 2009 -0700"
      },
      "message": "nilfs2: introduce secondary super block\n\nThe former versions didn\u0027t have extra super blocks.  This improves the\nweak point by introducing another super block at unused region in tail of\nthe partition.\n\nThis doesn\u0027t break disk format compatibility; older versions just ingore\nthe secondary super block, and new versions just recover it if it doesn\u0027t\nexist.  The partition created by an old mkfs may not have unused region,\nbut in that case, the secondary super block will not be added.\n\nThis doesn\u0027t make more redundant copies of the super block; it is a future\nwork.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cece552074c591970353ad48308d65f110aeaf28",
      "tree": "2dcca7913d38df89711504f5daeecccfedb5a3eb",
      "parents": [
        "c96fa464a567a2a8796009af0e79bc68af73f485"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:58 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:20 2009 -0700"
      },
      "message": "nilfs2: simplify handling of active state of segments\n\nwill reduce some lines of segment constructor.  Previously, the state was\ncomplexly controlled through a list of segments in order to keep\nconsistency in meta data of usage state of segments.  Instead, this\npresents ``calculated\u0027\u0027 active flags to userland cleaner program and stop\nmaintaining its real flag on disk.\n\nOnly by this fake flag, the cleaner cannot exactly know if each segment is\nreclaimable or not.  However, the recent extension of nilfs_sustat ioctl\nstruct (nilfs2-extend-nilfs_sustat-ioctl-struct.patch) can prevent the\ncleaner from reclaiming in-use segment wrongly.\n\nSo, now I can apply this for simplification.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c96fa464a567a2a8796009af0e79bc68af73f485",
      "tree": "5467fcdc2a4a64dfad3c5cb627451b6f7e76809b",
      "parents": [
        "458c5b0822a669d170fdb7bb16c9145f652ebe06"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: mark minor flag for checkpoint created by internal operation\n\nNilfs creates checkpoints even for garbage collection or metadata updates\nsuch as checkpoint mode change.  So, user often sees checkpoints created\nonly by such internal operations.\n\nThis is inconvenient in some situations.  For example, application that\nmonitors checkpoints and changes them to snapshots, will fall into an\ninfinite loop because it cannot distinguish internally created\ncheckpoints.\n\nThis patch solves this sort of problem by adding a flag to checkpoint for\nidentification.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "458c5b0822a669d170fdb7bb16c9145f652ebe06",
      "tree": "f2c53998492306a8aaf6d20ded229b69cba17348",
      "parents": [
        "e62687468588f47c32256e3c8c36157c40111b6e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: clean up sketch file\n\nThe sketch file is a file to mark checkpoints with user data.  It was\nexperimentally introduced in the original implementation, and now\nobsolete.  The file was handled differently with regular files; the file\nsize got truncated when a checkpoint was created.\n\nThis stops the special treatment and will treat it as a regular file.\nMost users are not affected because mkfs.nilfs2 no longer makes this file.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f5abe7e7dbcd83e73212c6cb135a6106cea6a0b",
      "tree": "f80e97297d5badebd31bbb17003d76a4ea30453a",
      "parents": [
        "2c2e52fc4fca251e68f90821c9ff5cb18be4df58"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: replace BUG_ON and BUG calls triggerable from ioctl\n\nPekka Enberg advised me:\n\u003e It would be nice if BUG(), BUG_ON(), and panic() calls would be\n\u003e converted to proper error handling using WARN_ON() calls. The BUG()\n\u003e call in nilfs_cpfile_delete_checkpoints(), for example, looks to be\n\u003e triggerable from user-space via the ioctl() system call.\n\nThis will follow the comment and keep them to a minimum.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\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"
    },
    {
      "commit": "2c2e52fc4fca251e68f90821c9ff5cb18be4df58",
      "tree": "fb0b86203bb5f4dda4d5907e29bd2b1b6cc0be90",
      "parents": [
        "7a9461939a46345860622ea36ff267ee4446f00f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: extend nilfs_sustat ioctl struct\n\nThis adds a new argument to the nilfs_sustat structure.\n\nThe extended field allows to delete volatile active state of segments,\nwhich was needed to protect freshly-created segments from garbage\ncollection but has confused code dealing with segments.  This\nextension alleviates the mess and gives room for further\nsimplifications.\n\nThe volatile active flag is not persistent, so it\u0027s eliminable on this\noccasion without affecting compatibility other than the ioctl change.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1088dcf4c3a0a27fdad5214781d5084b11405238",
      "tree": "4d08f45ff4867d629e5ad4e94e0362e897ffa1e1",
      "parents": [
        "76068c4ff1cc03d9d24d17fd9e6a1475bc2f6730"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:18 2009 -0700"
      },
      "message": "nilfs2: remove timedwait ioctl command\n\nThis removes NILFS_IOCTL_TIMEDWAIT command from ioctl interface along\nwith the related flags and wait queue.\n\nThe command is terrible because it just sleeps in the ioctl.  I prefer\nto avoid this by devising means of event polling in userland program.\nBy reconsidering the userland GC daemon, I found this is possible\nwithout changing behaviour of the daemon and sacrificing efficiency.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47420c799830d4676e544dbec56b2a7f787528f5",
      "tree": "dd61f6c96942b07f762129c893d9cbbbeff60735",
      "parents": [
        "a2e7d2df82cafb76f76809ddf6e2caa8afe4f75e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: avoid double error caused by nilfs_transaction_end\n\nPekka Enberg pointed out that double error handlings found after\nnilfs_transaction_end() can be avoided by separating abort operation:\n\n OK, I don\u0027t understand this. The only way nilfs_transaction_end() can\n fail is if we have NILFS_TI_SYNC set and we fail to construct the\n segment. But why do we want to construct a segment if we don\u0027t commit?\n\n I guess what I\u0027m asking is why don\u0027t we have a separate\n nilfs_transaction_abort() function that can\u0027t fail for the erroneous\n case to avoid this double error value tracking thing?\n\nThis does the separation and renames nilfs_transaction_end() to\nnilfs_transaction_commit() for clarification.\n\nSince, some calls of these functions were used just for exclusion control\nagainst the segment constructor, they are replaced with semaphore\noperations.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\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"
    },
    {
      "commit": "f30bf3e40f80ef50c17f55271deae3abc03e793e",
      "tree": "2e6d69611d1443688c1a79c5e5aed60cf38672e7",
      "parents": [
        "9ff05123e3bfbb1d2b68ba1d9bf1f7d1dffc1453"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:15 2009 -0700"
      },
      "message": "nilfs2: fix missed-sync issue for do_sync_mapping_range()\n\nChris Mason pointed out that there is a missed sync issue in\nnilfs_writepages():\n\nOn Wed, 17 Dec 2008 21:52:55 -0500, Chris Mason wrote:\n\u003e It looks like nilfs_writepage ignores WB_SYNC_NONE, which is used by\n\u003e do_sync_mapping_range().\n\nwhere WB_SYNC_NONE in do_sync_mapping_range() was replaced with\nWB_SYNC_ALL by Nick\u0027s patch (commit:\nee53a891f47444c53318b98dac947ede963db400).\n\nThis fixes the problem by letting nilfs_writepages() write out the log of\nfile data within the range if sync_mode is WB_SYNC_ALL.\n\nThis involves removal of nilfs_file_aio_write() which was previously\nneeded to ensure O_SYNC sync writes.\n\nCc: Chris Mason \u003cchris.mason@oracle.com\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"
    },
    {
      "commit": "9ff05123e3bfbb1d2b68ba1d9bf1f7d1dffc1453",
      "tree": "056c7bdc2395c8baf77bc63a54a1f747cbf5b650",
      "parents": [
        "64b5a32e0b3680a9655b3f2e668a646068e71d33"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:15 2009 -0700"
      },
      "message": "nilfs2: segment constructor\n\nThis adds the segment constructor (also called log writer).\n\nThe segment constructor collects dirty buffers for every dirty inode,\nmakes summaries of the buffers, assigns disk block addresses to the\nbuffers, and then submits BIOs for the buffers.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
