)]}'
{
  "log": [
    {
      "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": "db38d5ad323362bfca118b52fe5906f97a69fb45",
      "tree": "11940fedf0eb0ff80527094bd435ec89641f8adc",
      "parents": [
        "141bbdba9c2c1592d56b019277774099a5412aea"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 14 15:54:27 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: add cache framework for persistent object allocator\n\nThis adds setup and cleanup routines of the persistent object\nallocator cache.\n\nAccording to ftrace analyses, accessing buffers of the DAT file\nsuffers indispensable overhead many times.  To mitigate the overhead,\nThis introduce cache framework for the persistent object allocator\n(palloc) which the DAT file and ifile are using.\n\nstruct nilfs_palloc_cache represents the cache object per metadata\nfile using palloc.\n\nThe cache is initialized through nilfs_palloc_setup_cache() and\ndestroyed by nilfs_palloc_destroy_cache(); callers of the former\nfunction will be added to individual allocators of DAT and ifile on\nsuccessive patches.\n\nnilfs_palloc_destroy_cache() will be called from nilfs_mdt_destroy()\nif the cache is attached to a metadata file.  A companion function\nnilfs_palloc_clear_cache() is provided to allow releasing buffer head\nreferences independently with the cleanup task.  This adjunctive\nfunction will be used before invalidating pages of metadata file with\nthe cache.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b34a65069caa56b691ebab5ae0b8e54d16406d16",
      "tree": "f2eacf08be4471cd1ca781c9d4c56bbb81448531",
      "parents": [
        "ef7d4757a5b7b07a3a0d30d3ba6b587e574b28b9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 14 00:09:47 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:49 2009 +0900"
      },
      "message": "nilfs2: avoid readahead on metadata file for create mode\n\nThis turns off readhead action of metadata file if nilfs_mdt_get_block\nfunction was called with a create flag.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "fd66c0d5c377ee8146909d0eb9258539e4b0f293",
      "tree": "7fefab4c3108aff9d18943a17cd3522a53bdc3bd",
      "parents": [
        "3961f0e2775f84a8f81b0dcddb0b356ebfe0696b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 02:25:41 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: hide nilfs_mdt_clear calls in nilfs_mdt_destroy\n\nThis will hide a function call of nilfs_mdt_clear() in\nnilfs_mdt_destroy().\n\nThis ensures nilfs_mdt_destroy() to do cleanup jobs included in\nnilfs_mdt_clear().\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5731e191f254af9135ad843119804a500528ecf3",
      "tree": "1ababce01647674af0e9c6bfb36f5ab5e96ab76c",
      "parents": [
        "9cb4e0d2b99e8b0e5e269d898ae6ab1967647c5a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 12 22:42:04 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: add size option of private object to metadata file allocator\n\nThis adds an optional \"object size\" argument to nilfs_mdt_new_common()\nfunction; the argument specifies the size of private object attached\nto a newly allocated metadata file inode.\n\nThis will afford space to keep local variables for meta data files.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "828c09509b9695271bcbdc53e9fc9a6a737148d2",
      "tree": "072ffad6f02db7bf4095e07e2b90247cfa042998",
      "parents": [
        "1c4115e595dec42aa0e81ba47ef46e35b34ed428"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 01 15:43:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "const: constify remaining file_operations\n\n[akpm@linux-foundation.org: fix KVM]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e1d5dcc2bbbe71dbf010c747e15739bef6b7218",
      "tree": "2edb0f6cc65acbae95e42df1bc763ec048e6c2e0",
      "parents": [
        "7f09410bbc4306f592cfb43812389ea1c7905a20"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining inode_operations as 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": "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": "0f3fe33b398abbecfcf9f08c16959d1a9a14a49a",
      "tree": "a60a3e8a3b90b173a58a2ba9d86e1363598bd279",
      "parents": [
        "2e0c2c73923fed27337039ddfd69985e6c4b91fe"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 02:29:28 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:16 2009 +0900"
      },
      "message": "nilfs2: convert nilfs_bmap_lookup to an inline function\n\nThe nilfs_bmap_lookup() is now a wrapper function of\nnilfs_bmap_lookup_at_level().\n\nThis moves the nilfs_bmap_lookup() to a header file converting it to\nan inline function and gives an opportunity for optimization.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7a102b09232be1ad7c180dfd1f46c7aa95dff1e0",
      "tree": "81691c3a48e3108db1a5341c8dcf4531ac404cac",
      "parents": [
        "3218929dbd25245e0f601df1e359a3ed3f7fb03b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 13:47:09 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: remove individual gfp constants for each metadata file\n\nThis gets rid of NILFS_CPFILE_GFP, NILFS_SUFILE_GFP, NILFS_DAT_GFP,\nand NILFS_IFILE_GFP.  All of these constants refer to NILFS_MDT_GFP,\nand can be removed.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "143511046765504d2d1be633efd710f8d84e0407",
      "tree": "bd9b8570880cfda44a9fad7a2567b977ab53f631",
      "parents": [
        "027d6404eb4327878454db72a006adfcb8001bb8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Sep 06 17:49:49 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: always lookup disk block address before reading metadata block\n\nThe current metadata file code skips disk address lookup for its data\nblock if the buffer has a mapped flag.\n\nThis has a potential risk to cause read request to be performed\nagainst the stale block address that GC moved, and it may lead to meta\ndata corruption.  The mapped flag is safe if the buffer has an\nuptodate flag, otherwise it may prevent necessary update of disk\naddress in the next read.\n\nThis will avoid the potential problem by ensuring disk address lookup\nbefore reading metadata block even for buffers with the mapped flag.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "027d6404eb4327878454db72a006adfcb8001bb8",
      "tree": "671c0d84ee5fd19ef85a3ff15d99a3519c1ed8bf",
      "parents": [
        "b5696e5e0dbfb6323277d51d67d230317c18aba9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 02 22:45:33 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: use semaphore to protect pointer to a writable FS-instance\n\nwill get rid of nilfs_get_writer() and nilfs_put_writer() pair used to\nretain a writable FS-instance for a period.\n\nThe pair functions were making up some kind of recursive lock with a\nmutex, but they became overkill since the commit\n201913ed746c7724a40d33ee5a0b6a1fd2ef3193.  Furthermore, they caused\nthe following lockdep warning because the mutex can be released by a\ntask which didn\u0027t lock it:\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\n [ BUG: bad unlock balance detected! ]\n -------------------------------------\n kswapd0/422 is trying to release lock (\u0026nilfs-\u003ens_writer_mutex) at:\n [\u003cc1359ff5\u003e] mutex_unlock+0x8/0xa\n but there are no more locks to release!\n\n other info that might help us debug this:\n no locks held by kswapd0/422.\n\n stack backtrace:\n Pid: 422, comm: kswapd0 Not tainted 2.6.31-rc4-nilfs #51\n Call Trace:\n  [\u003cc1358f97\u003e] ? printk+0xf/0x18\n  [\u003cc104fea7\u003e] print_unlock_inbalance_bug+0xcc/0xd7\n  [\u003cc11578de\u003e] ? prop_put_global+0x3/0x35\n  [\u003cc1050195\u003e] lock_release+0xed/0x1dc\n  [\u003cc1359ff5\u003e] ? mutex_unlock+0x8/0xa\n  [\u003cc1359f83\u003e] __mutex_unlock_slowpath+0xaf/0x119\n  [\u003cc1359ff5\u003e] mutex_unlock+0x8/0xa\n  [\u003cd1284add\u003e] nilfs_mdt_write_page+0xd8/0xe1 [nilfs2]\n  [\u003cc1092653\u003e] shrink_page_list+0x379/0x68d\n  [\u003cc109171b\u003e] ? isolate_pages_global+0xb4/0x18c\n  [\u003cc1092bd2\u003e] shrink_list+0x26b/0x54b\n  [\u003cc10930be\u003e] shrink_zone+0x20c/0x2a2\n  [\u003cc10936b7\u003e] kswapd+0x407/0x591\n  [\u003cc1091667\u003e] ? isolate_pages_global+0x0/0x18c\n  [\u003cc1040603\u003e] ? autoremove_wake_function+0x0/0x33\n  [\u003cc10932b0\u003e] ? kswapd+0x0/0x591\n  [\u003cc104033b\u003e] kthread+0x69/0x6e\n  [\u003cc10402d2\u003e] ? kthread+0x0/0x6e\n  [\u003cc1003e33\u003e] kernel_thread_helper+0x7/0x1a\n\nThis patch uses a reader/writer semaphore instead of the own lock and\nkills this warning.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "01a261e09a21e0ba342d3907a79cf5c78ee3f37a",
      "tree": "e26e8008ce2de35afe2703529d771268a256329f",
      "parents": [
        "a97778457f22181e8c38c4cd7d7e528378738a98"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 02 17:45:55 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 02 22:24:15 2009 +0900"
      },
      "message": "nilfs2: fix missing unlock in error path of nilfs_mdt_write_page\n\nThis adds a missing unlock of nilfs-\u003ens_writer_mutex in\nnilfs_mdt_write_page() function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\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": "843382370ec614768ac13582405f93635cf3637c",
      "tree": "6447e8318d2c2a22bebfd0c7e70f825fbdeeebdb",
      "parents": [
        "201913ed746c7724a40d33ee5a0b6a1fd2ef3193"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue May 05 21:52:06 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 10 17:04:42 2009 +0900"
      },
      "message": "nilfs2: ensure to clear dirty state when deleting metadata file block\n\nThis would fix the following failure during GC:\n\n nilfs_cpfile_delete_checkpoints: cannot delete block\n NILFS: GC failed during preparation: cannot delete checkpoints: err\u003d-2\n\nThe problem was caused by a break in state consistency between page\ncache and btree; the above block was removed from the btree but the\npage buffering the block was remaining in the page cache in dirty\nstate.\n\nThis resolves the inconsistency by ensuring to clear dirty state of\nthe page buffering the deleted block.\n\nReported-by: David Arendt \u003cadmin@prnet.org\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "201913ed746c7724a40d33ee5a0b6a1fd2ef3193",
      "tree": "149cd7552a854055a2ed278234649a77914aaf96",
      "parents": [
        "85c2a74fabadfc561b75fbd7decc6bcbfe873d57"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Apr 28 21:04:59 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 09 13:36:57 2009 +0900"
      },
      "message": "nilfs2: fix circular locking dependency of writer mutex\n\nThis fixes the following circular locking dependency problem:\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 #5\n -------------------------------------------------------\n segctord/3895 is trying to acquire lock:\n  (\u0026nilfs-\u003ens_writer_mutex){+.+...}, at: [\u003cd0d02172\u003e]\n   nilfs_mdt_get_block+0x89/0x20f [nilfs2]\n\n but task is already holding lock:\n  (\u0026bmap-\u003eb_sem){++++..}, at: [\u003cd0d02d99\u003e]\n   nilfs_bmap_propagate+0x14/0x2e [nilfs2]\n\n which lock already depends on the new lock.\n\nThe bugfix is done by replacing call sites of nilfs_get_writer() which\nare never called from read-only context with direct dereferencing of\npointer to a writable FS-instance.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\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": "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": "5eb563f5f299a2ed488d9eb52acede45ccb14c7b",
      "tree": "965243b138a7beb5f8e2700160903a051e0510de",
      "parents": [
        "0bd49f9446130a6a3914eb07b54db489e3222b34"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: meta data file\n\nThis adds the meta data file, which serves common buffer functions to the\nDAT, sufile, cpfile, ifile, and so forth.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
