)]}'
{
  "log": [
    {
      "commit": "175359f89df39f4faed663c8cfd6ee0222d2fa1e",
      "tree": "8a5da216333192e7c2d605e1644f6bead22cdd06",
      "parents": [
        "bbec919150037b8a2e58e32d3ba642ba3b6582a5"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Feb 11 13:13:10 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Feb 14 19:07:56 2010 +0100"
      },
      "message": "reiserfs: Fix softlockup while waiting on an inode\n\nWhen we wait for an inode through reiserfs_iget(), we hold\nthe reiserfs lock. And waiting for an inode may imply waiting\nfor its writeback. But the inode writeback path may also require\nthe reiserfs lock, which leads to a deadlock.\n\nWe just need to release the reiserfs lock from reiserfs_iget()\nto fix this.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bbec919150037b8a2e58e32d3ba642ba3b6582a5",
      "tree": "52536f66f9cab019f2af86151bcbe863fd5d5691",
      "parents": [
        "92dcffb916d309aa01778bf8963a6932e4014d07"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 28 13:43:50 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 28 13:43:50 2010 +0100"
      },
      "message": "reiserfs: Fix vmalloc call under reiserfs lock\n\nVmalloc is called to allocate journal-\u003ej_cnode_free_list but\nwe hold the reiserfs lock at this time, which raises a\n{RECLAIM_FS-ON-W} -\u003e {IN-RECLAIM_FS-W} lock inversion.\n\nJust drop the reiserfs lock at this time, as it\u0027s not even\nneeded but kept for paranoid reasons.\n\nThis fixes:\n\n[ INFO: inconsistent lock state ]\n2.6.33-rc5 #1\n---------------------------------\ninconsistent {RECLAIM_FS-ON-W} -\u003e {IN-RECLAIM_FS-W} usage.\nkswapd0/313 [HC0[0]:SC0[0]:HE1:SE1] takes:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.?.}, at: [\u003cc11118c8\u003e]\nreiserfs_write_lock_once+0x28/0x50\n{RECLAIM_FS-ON-W} state was registered at:\n  [\u003cc104ee32\u003e] mark_held_locks+0x62/0x90\n  [\u003cc104eefa\u003e] lockdep_trace_alloc+0x9a/0xc0\n  [\u003cc108f7b6\u003e] kmem_cache_alloc+0x26/0xf0\n  [\u003cc108621c\u003e] __get_vm_area_node+0x6c/0xf0\n  [\u003cc108690e\u003e] __vmalloc_node+0x7e/0xa0\n  [\u003cc1086aab\u003e] vmalloc+0x2b/0x30\n  [\u003cc110e1fb\u003e] journal_init+0x6cb/0xa10\n  [\u003cc10f90a2\u003e] reiserfs_fill_super+0x342/0xb80\n  [\u003cc1095665\u003e] get_sb_bdev+0x145/0x180\n  [\u003cc10f68e1\u003e] get_super_block+0x21/0x30\n  [\u003cc1094520\u003e] vfs_kern_mount+0x40/0xd0\n  [\u003cc1094609\u003e] do_kern_mount+0x39/0xd0\n  [\u003cc10aaa97\u003e] do_mount+0x2c7/0x6d0\n  [\u003cc10aaf06\u003e] sys_mount+0x66/0xa0\n  [\u003cc16198a7\u003e] mount_block_root+0xc4/0x245\n  [\u003cc1619a81\u003e] mount_root+0x59/0x5f\n  [\u003cc1619b98\u003e] prepare_namespace+0x111/0x14b\n  [\u003cc1619269\u003e] kernel_init+0xcf/0xdb\n  [\u003cc100303a\u003e] kernel_thread_helper+0x6/0x1c\nirq event stamp: 63236801\nhardirqs last  enabled at (63236801): [\u003cc134e7fa\u003e]\n__mutex_unlock_slowpath+0x9a/0x120\nhardirqs last disabled at (63236800): [\u003cc134e799\u003e]\n__mutex_unlock_slowpath+0x39/0x120\nsoftirqs last  enabled at (63218800): [\u003cc102f451\u003e] __do_softirq+0xc1/0x110\nsoftirqs last disabled at (63218789): [\u003cc102f4ed\u003e] do_softirq+0x4d/0x60\n\nother info that might help us debug this:\n2 locks held by kswapd0/313:\n #0:  (shrinker_rwsem){++++..}, at: [\u003cc1074bb4\u003e] shrink_slab+0x24/0x170\n #1:  (\u0026type-\u003es_umount_key#19){++++..}, at: [\u003cc10a2edd\u003e]\nshrink_dcache_memory+0xfd/0x1a0\n\nstack backtrace:\nPid: 313, comm: kswapd0 Not tainted 2.6.33-rc5 #1\nCall Trace:\n [\u003cc134db2c\u003e] ? printk+0x18/0x1c\n [\u003cc104e7ef\u003e] print_usage_bug+0x15f/0x1a0\n [\u003cc104ebcf\u003e] mark_lock+0x39f/0x5a0\n [\u003cc104d66b\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc1052c50\u003e] ? check_usage_forwards+0x0/0xf0\n [\u003cc1050c24\u003e] __lock_acquire+0x214/0xa70\n [\u003cc10438c5\u003e] ? sched_clock_cpu+0x95/0x110\n [\u003cc10514fa\u003e] lock_acquire+0x7a/0xa0\n [\u003cc11118c8\u003e] ? reiserfs_write_lock_once+0x28/0x50\n [\u003cc134f03f\u003e] mutex_lock_nested+0x5f/0x2b0\n [\u003cc11118c8\u003e] ? reiserfs_write_lock_once+0x28/0x50\n [\u003cc11118c8\u003e] ? reiserfs_write_lock_once+0x28/0x50\n [\u003cc11118c8\u003e] reiserfs_write_lock_once+0x28/0x50\n [\u003cc10f05b0\u003e] reiserfs_delete_inode+0x50/0x140\n [\u003cc10a653f\u003e] ? generic_delete_inode+0x5f/0x150\n [\u003cc10f0560\u003e] ? reiserfs_delete_inode+0x0/0x140\n [\u003cc10a657c\u003e] generic_delete_inode+0x9c/0x150\n [\u003cc10a666d\u003e] generic_drop_inode+0x3d/0x60\n [\u003cc10a5597\u003e] iput+0x47/0x50\n [\u003cc10a2a4f\u003e] dentry_iput+0x6f/0xf0\n [\u003cc10a2af4\u003e] d_kill+0x24/0x50\n [\u003cc10a2d3d\u003e] __shrink_dcache_sb+0x21d/0x2b0\n [\u003cc10a2f0f\u003e] shrink_dcache_memory+0x12f/0x1a0\n [\u003cc1074c9e\u003e] shrink_slab+0x10e/0x170\n [\u003cc1075177\u003e] kswapd+0x477/0x6a0\n [\u003cc1072d10\u003e] ? isolate_pages_global+0x0/0x1b0\n [\u003cc103e160\u003e] ? autoremove_wake_function+0x0/0x40\n [\u003cc1074d00\u003e] ? kswapd+0x0/0x6a0\n [\u003cc103de6c\u003e] kthread+0x6c/0x80\n [\u003cc103de00\u003e] ? kthread+0x0/0x80\n [\u003cc100303a\u003e] kernel_thread_helper+0x6/0x1c\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "82062e7b50280bcf0feca70ac35a44f375602976",
      "tree": "0321bff42945768990a92c3770d4270497c0e8ee",
      "parents": [
        "dbd6a7cfead4fa2d7ad3fefe47168fcb146ac5ba",
        "31370f62baa1460b785cee9944bdcaf63d19e567"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 08 14:03:55 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 08 14:03:55 2010 -0800"
      },
      "message": "Merge branch \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing\n\n* \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:\n  reiserfs: Relax reiserfs_xattr_set_handle() while acquiring xattr locks\n  reiserfs: Fix unreachable statement\n  reiserfs: Don\u0027t call reiserfs_get_acl() with the reiserfs lock\n  reiserfs: Relax lock on xattr removing\n  reiserfs: Relax the lock before truncating pages\n  reiserfs: Fix recursive lock on lchown\n  reiserfs: Fix mistake in down_write() conversion\n"
    },
    {
      "commit": "31370f62baa1460b785cee9944bdcaf63d19e567",
      "tree": "cc3846f1a623366c61c4f16860f4ed62c68ea03f",
      "parents": [
        "e0baec1b63632f25ea8101b76edaca0accc061ec"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 15:55:31 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 16:02:53 2010 +0100"
      },
      "message": "reiserfs: Relax reiserfs_xattr_set_handle() while acquiring xattr locks\n\nFix remaining xattr locks acquired in reiserfs_xattr_set_handle()\nwhile we are holding the reiserfs lock to avoid lock inversions.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e0baec1b63632f25ea8101b76edaca0accc061ec",
      "tree": "d4395fde34e5c1d714c14e17ffe38f280ebadb0f",
      "parents": [
        "6c28705418de012216161b14a2ff1dda3da3d786"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Wed Jan 06 23:09:50 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 14:03:18 2010 +0100"
      },
      "message": "reiserfs: Fix unreachable statement\n\nStanse found an unreachable statement in reiserfs_ioctl. There is a\nif followed by error assignment and `break\u0027 with no braces. Add the\nbraces so that we don\u0027t break every time, but only in error case,\nso that REISERFS_IOC_SETVERSION actually works when it returns no\nerror.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Reiserfs \u003creiserfs-devel@vger.kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "6c28705418de012216161b14a2ff1dda3da3d786",
      "tree": "f9765f8ef8dc55a61ba354fb2516a4d172ef4591",
      "parents": [
        "4f3be1b5a98587b86cae05aa5d129dd0b3fff466"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 12:57:47 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 13:46:48 2010 +0100"
      },
      "message": "reiserfs: Don\u0027t call reiserfs_get_acl() with the reiserfs lock\n\nreiserfs_get_acl is usually not called under the reiserfs lock,\nas it doesn\u0027t need it. But it happens when it is called by\nreiserfs_acl_chmod(), which creates a dependency inversion against\nthe private xattr inodes mutexes for the given inode.\n\nWe need to call it without the reiserfs lock, especially since\nit\u0027s unnecessary.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4f3be1b5a98587b86cae05aa5d129dd0b3fff466",
      "tree": "f4d9acd840357ccdd6d5e667132996c050d0a9fa",
      "parents": [
        "108d3943c021f0b66e860ba98ded40b82b677bd7"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 02:14:30 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 08:00:50 2010 +0100"
      },
      "message": "reiserfs: Relax lock on xattr removing\n\nWhen we remove an xattr, we call lookup_and_delete_xattr()\nthat takes some private xattr inodes mutexes. But we hold\nthe reiserfs lock at this time, which leads to dependency\ninversions.\n\nWe can safely call lookup_and_delete_xattr() without the\nreiserfs lock, where xattr inodes lookups only need the\nxattr inodes mutexes.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "108d3943c021f0b66e860ba98ded40b82b677bd7",
      "tree": "0567b063d5365e24bb418476310f412936e4dd8c",
      "parents": [
        "5fe1533fda8ae005541bd418a7a8bc4fa0cda522"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 00:15:38 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 08:00:29 2010 +0100"
      },
      "message": "reiserfs: Relax the lock before truncating pages\n\nWhile truncating a file, reiserfs_setattr() calls inode_setattr()\nthat will truncate the mapping for the given inode, but for that\nit needs the pages locks.\n\nIn order to release these, the owners need the reiserfs lock to\ncomplete their jobs. But they can\u0027t, as we don\u0027t release it before\ncalling inode_setattr().\n\nWe need to do that to fix the following softlockups:\n\nINFO: task flush-8:0:2149 blocked for more than 120 seconds.\n\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\nflush-8:0     D f51af998     0  2149      2 0x00000000\n f51af9ac 00000092 00000002 f51af998 c2803304 00000000 c1894ad0 010f3000\n f51af9cc c1462604 c189ef80 f51af974 c1710304 f715b450 f715b5ec c2807c40\n 00000000 0005bb00 c2803320 c102c55b c1710304 c2807c50 c2803304 00000246\nCall Trace:\n [\u003cc1462604\u003e] ? schedule+0x434/0xb20\n [\u003cc102c55b\u003e] ? resched_task+0x4b/0x70\n [\u003cc106fa22\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc146414d\u003e] ? mutex_lock_nested+0x1fd/0x350\n [\u003cc14640b9\u003e] mutex_lock_nested+0x169/0x350\n [\u003cc1178cde\u003e] ? reiserfs_write_lock+0x2e/0x40\n [\u003cc1178cde\u003e] reiserfs_write_lock+0x2e/0x40\n [\u003cc11719a2\u003e] do_journal_end+0xc2/0xe70\n [\u003cc1172912\u003e] journal_end+0xb2/0x120\n [\u003cc11686b3\u003e] ? pathrelse+0x33/0xb0\n [\u003cc11729e4\u003e] reiserfs_end_persistent_transaction+0x64/0x70\n [\u003cc1153caa\u003e] reiserfs_get_block+0x12ba/0x15f0\n [\u003cc106fa22\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc1154b24\u003e] reiserfs_writepage+0xa74/0xe80\n [\u003cc1465a27\u003e] ? _raw_spin_unlock_irq+0x27/0x50\n [\u003cc11f3d25\u003e] ? radix_tree_gang_lookup_tag_slot+0x95/0xc0\n [\u003cc10b5377\u003e] ? find_get_pages_tag+0x127/0x1a0\n [\u003cc106fa22\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc106fcd4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10bc1e0\u003e] __writepage+0x10/0x40\n [\u003cc10bc9ab\u003e] write_cache_pages+0x16b/0x320\n [\u003cc10bc1d0\u003e] ? __writepage+0x0/0x40\n [\u003cc10bcb88\u003e] generic_writepages+0x28/0x40\n [\u003cc10bcbd5\u003e] do_writepages+0x35/0x40\n [\u003cc11059f7\u003e] writeback_single_inode+0xc7/0x330\n [\u003cc11067b2\u003e] writeback_inodes_wb+0x2c2/0x490\n [\u003cc1106a86\u003e] wb_writeback+0x106/0x1b0\n [\u003cc1106cf6\u003e] wb_do_writeback+0x106/0x1e0\n [\u003cc1106c18\u003e] ? wb_do_writeback+0x28/0x1e0\n [\u003cc1106e0a\u003e] bdi_writeback_task+0x3a/0xb0\n [\u003cc10cbb13\u003e] bdi_start_fn+0x63/0xc0\n [\u003cc10cbab0\u003e] ? bdi_start_fn+0x0/0xc0\n [\u003cc105d1f4\u003e] kthread+0x74/0x80\n [\u003cc105d180\u003e] ? kthread+0x0/0x80\n [\u003cc100327a\u003e] kernel_thread_helper+0x6/0x10\n3 locks held by flush-8:0/2149:\n #0:  (\u0026type-\u003es_umount_key#30){+++++.}, at: [\u003cc110676f\u003e] writeback_inodes_wb+0x27f/0x490\n #1:  (\u0026journal-\u003ej_mutex){+.+...}, at: [\u003cc117199a\u003e] do_journal_end+0xba/0xe70\n #2:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1178cde\u003e] reiserfs_write_lock+0x2e/0x40\nINFO: task fstest:3813 blocked for more than 120 seconds.\n\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\nfstest        D 00000002     0  3813   3812 0x00000000\n f5103c94 00000082 f5103c40 00000002 f5ad5450 00000007 f5103c28 011f3000\n 00000006 f5ad5450 c10bb005 00000480 c1710304 f5ad5450 f5ad55ec c2907c40\n 00000001 f5ad5450 f5103c74 00000046 00000002 f5ad5450 00000007 f5103c6c\nCall Trace:\n [\u003cc10bb005\u003e] ? free_hot_cold_page+0x1d5/0x280\n [\u003cc1462d64\u003e] io_schedule+0x74/0xc0\n [\u003cc10b5a45\u003e] sync_page+0x35/0x60\n [\u003cc146325a\u003e] __wait_on_bit_lock+0x4a/0x90\n [\u003cc10b5a10\u003e] ? sync_page+0x0/0x60\n [\u003cc10b59e5\u003e] __lock_page+0x85/0x90\n [\u003cc105d660\u003e] ? wake_bit_function+0x0/0x60\n [\u003cc10bf654\u003e] truncate_inode_pages_range+0x1e4/0x2d0\n [\u003cc10bf75f\u003e] truncate_inode_pages+0x1f/0x30\n [\u003cc10bf7cf\u003e] truncate_pagecache+0x5f/0xa0\n [\u003cc10bf86a\u003e] vmtruncate+0x5a/0x70\n [\u003cc10fdb7d\u003e] inode_setattr+0x5d/0x190\n [\u003cc1150117\u003e] reiserfs_setattr+0x1f7/0x2f0\n [\u003cc1464569\u003e] ? down_write+0x49/0x70\n [\u003cc10fde01\u003e] notify_change+0x151/0x330\n [\u003cc10e6f3d\u003e] do_truncate+0x6d/0xa0\n [\u003cc10f4ce2\u003e] do_filp_open+0x9a2/0xcf0\n [\u003cc1465aec\u003e] ? _raw_spin_unlock+0x2c/0x50\n [\u003cc10fec50\u003e] ? alloc_fd+0xe0/0x100\n [\u003cc10e602d\u003e] do_sys_open+0x6d/0x130\n [\u003cc1002cfb\u003e] ? sysenter_exit+0xf/0x16\n [\u003cc10e615e\u003e] sys_open+0x2e/0x40\n [\u003cc1002ccc\u003e] sysenter_do_call+0x12/0x32\n3 locks held by fstest/3813:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4){+.+.+.}, at: [\u003cc10e6f33\u003e] do_truncate+0x63/0xa0\n #1:  (\u0026sb-\u003es_type-\u003ei_alloc_sem_key#3){+.+.+.}, at: [\u003cc10fdf07\u003e] notify_change+0x257/0x330\n #2:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1178c8e\u003e] reiserfs_write_lock_once+0x2e/0x50\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5fe1533fda8ae005541bd418a7a8bc4fa0cda522",
      "tree": "411dd7c99f884e914a34ce91d8f282bbc70c63c8",
      "parents": [
        "f3e22f48f37c1e14441c9f72ca8e63b1d4516745"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Jan 04 22:04:01 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 07:59:38 2010 +0100"
      },
      "message": "reiserfs: Fix recursive lock on lchown\n\nOn chown, reiserfs will call reiserfs_setattr() to change the owner\nof the given inode, but it may also recursively call\nreiserfs_setattr() to propagate the owner change to the private xattr\nfiles for this inode.\n\nHence, the reiserfs lock may be acquired twice which is not wanted\nas reiserfs_setattr() calls journal_begin() that is going to try to\nrelax the lock in order to safely acquire the journal mutex.\n\nUsing reiserfs_write_lock_once() from reiserfs_setattr() solves\nthe problem.\n\nThis fixes the following warning, that precedes a lockdep report.\n\nWARNING: at fs/reiserfs/lock.c:95 reiserfs_lock_check_recursive+0x3f/0x50()\nHardware name: MS-7418\nUnwanted recursive reiserfs lock!\nPid: 4189, comm: fsstress Not tainted 2.6.33-rc2-tip-atom+ #195\nCall Trace:\n [\u003cc1178bff\u003e] ? reiserfs_lock_check_recursive+0x3f/0x50\n [\u003cc1178bff\u003e] ? reiserfs_lock_check_recursive+0x3f/0x50\n [\u003cc103f7ac\u003e] warn_slowpath_common+0x6c/0xc0\n [\u003cc1178bff\u003e] ? reiserfs_lock_check_recursive+0x3f/0x50\n [\u003cc103f84b\u003e] warn_slowpath_fmt+0x2b/0x30\n [\u003cc1178bff\u003e] reiserfs_lock_check_recursive+0x3f/0x50\n [\u003cc1172ae3\u003e] do_journal_begin_r+0x83/0x350\n [\u003cc1172f2d\u003e] journal_begin+0x7d/0x140\n [\u003cc106509a\u003e] ? in_group_p+0x2a/0x30\n [\u003cc10fda71\u003e] ? inode_change_ok+0x91/0x140\n [\u003cc115007d\u003e] reiserfs_setattr+0x15d/0x2e0\n [\u003cc10f9bf3\u003e] ? dput+0xe3/0x140\n [\u003cc1465adc\u003e] ? _raw_spin_unlock+0x2c/0x50\n [\u003cc117831d\u003e] chown_one_xattr+0xd/0x10\n [\u003cc11780a3\u003e] reiserfs_for_each_xattr+0x113/0x2c0\n [\u003cc1178310\u003e] ? chown_one_xattr+0x0/0x10\n [\u003cc14641e9\u003e] ? mutex_lock_nested+0x2a9/0x350\n [\u003cc117826f\u003e] reiserfs_chown_xattrs+0x1f/0x60\n [\u003cc106509a\u003e] ? in_group_p+0x2a/0x30\n [\u003cc10fda71\u003e] ? inode_change_ok+0x91/0x140\n [\u003cc1150046\u003e] reiserfs_setattr+0x126/0x2e0\n [\u003cc1177c20\u003e] ? reiserfs_getxattr+0x0/0x90\n [\u003cc11b0d57\u003e] ? cap_inode_need_killpriv+0x37/0x50\n [\u003cc10fde01\u003e] notify_change+0x151/0x330\n [\u003cc10e659f\u003e] chown_common+0x6f/0x90\n [\u003cc10e67bd\u003e] sys_lchown+0x6d/0x80\n [\u003cc1002ccc\u003e] sysenter_do_call+0x12/0x32\n---[ end trace 7c2b77224c1442fc ]---\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f3e22f48f37c1e14441c9f72ca8e63b1d4516745",
      "tree": "762d2fcf7d0c087413fe54897a63b6424aceef84",
      "parents": [
        "835d5247d98f46e35d007dcfa6215e526ca33360"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Jan 03 03:44:53 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Jan 03 03:44:53 2010 +0100"
      },
      "message": "reiserfs: Fix mistake in down_write() conversion\n\nFix a mistake in commit 0719d3434747889b314a1e8add776418c4148bcf\n(reiserfs: Fix reiserfs lock \u003c-\u003e i_xattr_sem dependency inversion)\nthat has converted a down_write() into a down_read() accidentally.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "45d28b097280a78893ce25a5d0db41e6a2717853",
      "tree": "0c2049700c5fca3fc9d73d2f347fab21e84765f8",
      "parents": [
        "4207a152bc242effd0b8231143aa5b9f7a1593a9",
        "835d5247d98f46e35d007dcfa6215e526ca33360"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 02 11:17:05 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 02 11:17:05 2010 -0800"
      },
      "message": "Merge branch \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing\n\n* \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:\n  reiserfs: Safely acquire i_mutex from xattr_rmdir\n  reiserfs: Safely acquire i_mutex from reiserfs_for_each_xattr\n  reiserfs: Fix journal mutex \u003c-\u003e inode mutex lock inversion\n  reiserfs: Fix unwanted recursive reiserfs lock in reiserfs_unlink()\n  reiserfs: Relax lock before open xattr dir in reiserfs_xattr_set_handle()\n  reiserfs: Relax reiserfs lock while freeing the journal\n  reiserfs: Fix reiserfs lock \u003c-\u003e i_mutex dependency inversion on xattr\n  reiserfs: Warn on lock relax if taken recursively\n  reiserfs: Fix reiserfs lock \u003c-\u003e i_xattr_sem dependency inversion\n  reiserfs: Fix remaining in-reclaim-fs \u003c-\u003e reclaim-fs-on locking inversion\n  reiserfs: Fix reiserfs lock \u003c-\u003e inode mutex dependency inversion\n  reiserfs: Fix reiserfs lock and journal lock inversion dependency\n  reiserfs: Fix possible recursive lock\n"
    },
    {
      "commit": "835d5247d98f46e35d007dcfa6215e526ca33360",
      "tree": "83caead46ca375781c93648e54adb6873204f569",
      "parents": [
        "8b513f56d4e117f11cf0760abcc030eedefc45c3"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:40:39 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:59:48 2010 +0100"
      },
      "message": "reiserfs: Safely acquire i_mutex from xattr_rmdir\n\nRelax the reiserfs lock before taking the inode mutex from\nxattr_rmdir() to avoid the usual reiserfs lock \u003c-\u003e inode mutex\nbad dependency.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8b513f56d4e117f11cf0760abcc030eedefc45c3",
      "tree": "3684dbe60c43a1c6484513e31227604452a4001f",
      "parents": [
        "4dd859697f836cf62c8de08bd9a9f4b4f4beaa91"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:28:58 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:59:14 2010 +0100"
      },
      "message": "reiserfs: Safely acquire i_mutex from reiserfs_for_each_xattr\n\nRelax the reiserfs lock before taking the inode mutex from\nreiserfs_for_each_xattr() to avoid the usual bad dependencies:\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 ]\n2.6.32-atom #179\n-------------------------------------------------------\nrm/3242 is trying to acquire lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc11428ef\u003e] reiserfs_for_each_xattr+0x23f/0x290\n\nbut task is already holding lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1143389\u003e] reiserfs_write_lock+0x29/0x40\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401aab\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1143339\u003e] reiserfs_write_lock_once+0x29/0x50\n       [\u003cc1117022\u003e] reiserfs_lookup+0x62/0x140\n       [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n       [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n       [\u003cc1141e3a\u003e] open_xa_dir+0xea/0x1b0\n       [\u003cc1142720\u003e] reiserfs_for_each_xattr+0x70/0x290\n       [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401aab\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc11428ef\u003e] reiserfs_for_each_xattr+0x23f/0x290\n       [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n1 lock held by rm/3242:\n #0:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1143389\u003e] reiserfs_write_lock+0x29/0x40\n\nstack backtrace:\nPid: 3242, comm: rm Not tainted 2.6.32-atom #179\nCall Trace:\n [\u003cc13ffa13\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc105cc3b\u003e] ? trace_hardirqs_on+0xb/0x10\n [\u003cc1401098\u003e] ? mutex_unlock+0x8/0x10\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc11428ef\u003e] ? reiserfs_for_each_xattr+0x23f/0x290\n [\u003cc11428ef\u003e] ? reiserfs_for_each_xattr+0x23f/0x290\n [\u003cc1401aab\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc11428ef\u003e] ? reiserfs_for_each_xattr+0x23f/0x290\n [\u003cc11428ef\u003e] reiserfs_for_each_xattr+0x23f/0x290\n [\u003cc1143180\u003e] ? delete_one_xattr+0x0/0x100\n [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n [\u003cc1143339\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n [\u003cc11b0d4f\u003e] ? _atomic_dec_and_lock+0x4f/0x70\n [\u003cc111e990\u003e] ? reiserfs_delete_inode+0x0/0x150\n [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n [\u003cc10c8b07\u003e] iput+0x47/0x50\n [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n [\u003cc1401098\u003e] ? mutex_unlock+0x8/0x10\n [\u003cc10c3e0d\u003e] ? vfs_readdir+0x7d/0xb0\n [\u003cc10c3af0\u003e] ? filldir64+0x0/0xf0\n [\u003cc1002ef3\u003e] ? sysenter_exit+0xf/0x16\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4dd859697f836cf62c8de08bd9a9f4b4f4beaa91",
      "tree": "761ac40341fe99a0b78131241541f888d2242b88",
      "parents": [
        "c674905ca74ad0ae5b048afb1ef68663a0d7e987"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:26:28 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:58:32 2010 +0100"
      },
      "message": "reiserfs: Fix journal mutex \u003c-\u003e inode mutex lock inversion\n\nWe need to relax the reiserfs lock before locking the inode mutex\nfrom xattr_unlink(), otherwise we\u0027ll face the usual bad dependencies:\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 ]\n2.6.32-atom #178\n-------------------------------------------------------\nrm/3202 is trying to acquire lock:\n (\u0026journal-\u003ej_mutex){+.+...}, at: [\u003cc113c234\u003e] do_journal_begin_r+0x94/0x360\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#4/2){+.+...}, at: [\u003cc1142a67\u003e] xattr_unlink+0x57/0xb0\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #2 (\u0026sb-\u003es_type-\u003ei_mutex_key#4/2){+.+...}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a7b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1142a67\u003e] xattr_unlink+0x57/0xb0\n       [\u003cc1143179\u003e] delete_one_xattr+0x29/0x100\n       [\u003cc11427bb\u003e] reiserfs_for_each_xattr+0x10b/0x290\n       [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a7b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1143359\u003e] reiserfs_write_lock+0x29/0x40\n       [\u003cc113c23c\u003e] do_journal_begin_r+0x9c/0x360\n       [\u003cc113c680\u003e] journal_begin+0x80/0x130\n       [\u003cc1127363\u003e] reiserfs_remount+0x223/0x4e0\n       [\u003cc10b6dd6\u003e] do_remount_sb+0xa6/0x140\n       [\u003cc10ce6a0\u003e] do_mount+0x560/0x750\n       [\u003cc10ce914\u003e] sys_mount+0x84/0xb0\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026journal-\u003ej_mutex){+.+...}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a7b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc113c234\u003e] do_journal_begin_r+0x94/0x360\n       [\u003cc113c680\u003e] journal_begin+0x80/0x130\n       [\u003cc1116d63\u003e] reiserfs_unlink+0x83/0x2e0\n       [\u003cc1142a74\u003e] xattr_unlink+0x64/0xb0\n       [\u003cc1143179\u003e] delete_one_xattr+0x29/0x100\n       [\u003cc11427bb\u003e] reiserfs_for_each_xattr+0x10b/0x290\n       [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n2 locks held by rm/3202:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc114274b\u003e] reiserfs_for_each_xattr+0x9b/0x290\n #1:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/2){+.+...}, at: [\u003cc1142a67\u003e] xattr_unlink+0x57/0xb0\n\nstack backtrace:\nPid: 3202, comm: rm Not tainted 2.6.32-atom #178\nCall Trace:\n [\u003cc13ff9e3\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc1142a67\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc113c234\u003e] ? do_journal_begin_r+0x94/0x360\n [\u003cc113c234\u003e] ? do_journal_begin_r+0x94/0x360\n [\u003cc1401a7b\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc113c234\u003e] ? do_journal_begin_r+0x94/0x360\n [\u003cc113c234\u003e] do_journal_begin_r+0x94/0x360\n [\u003cc10411b6\u003e] ? run_timer_softirq+0x1a6/0x220\n [\u003cc103cb00\u003e] ? __do_softirq+0x50/0x140\n [\u003cc113c680\u003e] journal_begin+0x80/0x130\n [\u003cc103cba2\u003e] ? __do_softirq+0xf2/0x140\n [\u003cc104f72f\u003e] ? hrtimer_interrupt+0xdf/0x220\n [\u003cc1116d63\u003e] reiserfs_unlink+0x83/0x2e0\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc11b8d08\u003e] ? trace_hardirqs_on_thunk+0xc/0x10\n [\u003cc1002fd8\u003e] ? restore_all_notrace+0x0/0x18\n [\u003cc1142a67\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc1142a74\u003e] xattr_unlink+0x64/0xb0\n [\u003cc1143179\u003e] delete_one_xattr+0x29/0x100\n [\u003cc11427bb\u003e] reiserfs_for_each_xattr+0x10b/0x290\n [\u003cc1143150\u003e] ? delete_one_xattr+0x0/0x100\n [\u003cc1401cb9\u003e] ? mutex_lock_nested+0x299/0x340\n [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n [\u003cc1143309\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n [\u003cc11b0d1f\u003e] ? _atomic_dec_and_lock+0x4f/0x70\n [\u003cc111e990\u003e] ? reiserfs_delete_inode+0x0/0x150\n [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n [\u003cc10c8b07\u003e] iput+0x47/0x50\n [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n [\u003cc1401068\u003e] ? mutex_unlock+0x8/0x10\n [\u003cc10c3e0d\u003e] ? vfs_readdir+0x7d/0xb0\n [\u003cc10c3af0\u003e] ? filldir64+0x0/0xf0\n [\u003cc1002ef3\u003e] ? sysenter_exit+0xf/0x16\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c674905ca74ad0ae5b048afb1ef68663a0d7e987",
      "tree": "3f269bdda58519c012cf0505e36cee158ec7064b",
      "parents": [
        "3f14fea6bbd3444dd46a2af3a2e219e792616645"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:12:03 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:57:32 2010 +0100"
      },
      "message": "reiserfs: Fix unwanted recursive reiserfs lock in reiserfs_unlink()\n\nreiserfs_unlink() may or may not be called under the reiserfs\nlock.\nBut it also takes the reiserfs lock and can then acquire it\nrecursively which leads to do_journal_begin_r() that fails to\nrelax the reiserfs lock before grabbing the journal mutex,\ncreating an unexpected lock inversion.\n\nWe need to ensure reiserfs_unlink() won\u0027t get the reiserfs lock\nrecursively using reiserfs_write_lock_once().\n\nThis fixes the following warning that precedes a lock inversion\nreport (reiserfs lock \u003c-\u003e journal mutex).\n\n------------[ cut here ]------------\nWARNING: at fs/reiserfs/lock.c:95 reiserfs_lock_check_recursive+0x3a/0x50()\nHardware name: MS-7418\nUnwanted recursive reiserfs lock!\nPid: 3208, comm: dbench Not tainted 2.6.32-atom #177\nCall Trace:\n [\u003cc114327a\u003e] ? reiserfs_lock_check_recursive+0x3a/0x50\n [\u003cc114327a\u003e] ? reiserfs_lock_check_recursive+0x3a/0x50\n [\u003cc10373a7\u003e] warn_slowpath_common+0x67/0xc0\n [\u003cc114327a\u003e] ? reiserfs_lock_check_recursive+0x3a/0x50\n [\u003cc1037446\u003e] warn_slowpath_fmt+0x26/0x30\n [\u003cc114327a\u003e] reiserfs_lock_check_recursive+0x3a/0x50\n [\u003cc113c213\u003e] do_journal_begin_r+0x83/0x360\n [\u003cc105eb16\u003e] ? __lock_acquire+0x1296/0x19e0\n [\u003cc1142a57\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc113c670\u003e] journal_begin+0x80/0x130\n [\u003cc1116d5d\u003e] reiserfs_unlink+0x7d/0x2d0\n [\u003cc1142a57\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc1142a57\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc1142a57\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc1142a64\u003e] xattr_unlink+0x64/0xb0\n [\u003cc1143169\u003e] delete_one_xattr+0x29/0x100\n [\u003cc11427ab\u003e] reiserfs_for_each_xattr+0x10b/0x290\n [\u003cc1143140\u003e] ? delete_one_xattr+0x0/0x100\n [\u003cc1401ca9\u003e] ? mutex_lock_nested+0x299/0x340\n [\u003cc11429aa\u003e] reiserfs_delete_xattrs+0x1a/0x60\n [\u003cc11432f9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc111ea1f\u003e] reiserfs_delete_inode+0x9f/0x150\n [\u003cc11b0d0f\u003e] ? _atomic_dec_and_lock+0x4f/0x70\n [\u003cc111e980\u003e] ? reiserfs_delete_inode+0x0/0x150\n [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n [\u003cc10c8b07\u003e] iput+0x47/0x50\n [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n [\u003cc10505c6\u003e] ? up_read+0x16/0x30\n [\u003cc1022ab7\u003e] ? do_page_fault+0x187/0x330\n [\u003cc1002fd8\u003e] ? restore_all_notrace+0x0/0x18\n [\u003cc1022930\u003e] ? do_page_fault+0x0/0x330\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10c0a00\u003e] sys_unlink+0x10/0x20\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n---[ end trace 2e35d71a6cc69d0c ]---\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3f14fea6bbd3444dd46a2af3a2e219e792616645",
      "tree": "84d1af175646801c766fb7b63dbd5eb40641a34d",
      "parents": [
        "0523676d3f3aa7edeea63cc3a1bc4dc612380a26"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:03:53 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:57:01 2010 +0100"
      },
      "message": "reiserfs: Relax lock before open xattr dir in reiserfs_xattr_set_handle()\n\nWe call xattr_lookup() from reiserfs_xattr_get(). We then hold\nthe reiserfs lock when we grab the i_mutex. But later, we may\nrelax the reiserfs lock, creating dependency inversion between\nboth locks.\n\nThe lookups and creation jobs ar already protected by the\ninode mutex, so we can safely relax the reiserfs lock, dropping\nthe unwanted reiserfs lock -\u003e i_mutex dependency, as shown\nin the following lockdep report:\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 ]\n2.6.32-atom #173\n-------------------------------------------------------\ncp/3204 is trying to acquire lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc1141e18\u003e] open_xa_dir+0xd8/0x1b0\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1141d83\u003e] open_xa_dir+0x43/0x1b0\n       [\u003cc1142722\u003e] reiserfs_for_each_xattr+0x62/0x260\n       [\u003cc114299a\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea1f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0a00\u003e] sys_unlink+0x10/0x20\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n       [\u003cc1117012\u003e] reiserfs_lookup+0x62/0x140\n       [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n       [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n       [\u003cc1141e2a\u003e] open_xa_dir+0xea/0x1b0\n       [\u003cc1141fe5\u003e] xattr_lookup+0x15/0x160\n       [\u003cc1142476\u003e] reiserfs_xattr_get+0x56/0x2a0\n       [\u003cc1144042\u003e] reiserfs_get_acl+0xa2/0x360\n       [\u003cc114461a\u003e] reiserfs_cache_default_acl+0x3a/0x160\n       [\u003cc111789c\u003e] reiserfs_mkdir+0x6c/0x2c0\n       [\u003cc10bea96\u003e] vfs_mkdir+0xd6/0x180\n       [\u003cc10c0c10\u003e] sys_mkdirat+0xc0/0xd0\n       [\u003cc10c0c40\u003e] sys_mkdir+0x20/0x30\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n2 locks held by cp/3204:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/1){+.+.+.}, at: [\u003cc10bd8d6\u003e] lookup_create+0x26/0xa0\n #1:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc1141e18\u003e] open_xa_dir+0xd8/0x1b0\n\nstack backtrace:\nPid: 3204, comm: cp Not tainted 2.6.32-atom #173\nCall Trace:\n [\u003cc13ff993\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc105d3aa\u003e] ? check_usage+0x6a/0x460\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n [\u003cc1117012\u003e] reiserfs_lookup+0x62/0x140\n [\u003cc105ccca\u003e] ? debug_check_no_locks_freed+0x8a/0x140\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n [\u003cc1141e2a\u003e] open_xa_dir+0xea/0x1b0\n [\u003cc1141fe5\u003e] xattr_lookup+0x15/0x160\n [\u003cc1142476\u003e] reiserfs_xattr_get+0x56/0x2a0\n [\u003cc1144042\u003e] reiserfs_get_acl+0xa2/0x360\n [\u003cc10ca2e7\u003e] ? new_inode+0x27/0xa0\n [\u003cc114461a\u003e] reiserfs_cache_default_acl+0x3a/0x160\n [\u003cc1402eb7\u003e] ? _spin_unlock+0x27/0x40\n [\u003cc111789c\u003e] reiserfs_mkdir+0x6c/0x2c0\n [\u003cc10c7cb8\u003e] ? __d_lookup+0x108/0x190\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc1401c8d\u003e] ? mutex_lock_nested+0x2bd/0x340\n [\u003cc10bd17a\u003e] ? generic_permission+0x1a/0xa0\n [\u003cc11788fe\u003e] ? security_inode_permission+0x1e/0x20\n [\u003cc10bea96\u003e] vfs_mkdir+0xd6/0x180\n [\u003cc10c0c10\u003e] sys_mkdirat+0xc0/0xd0\n [\u003cc10505c6\u003e] ? up_read+0x16/0x30\n [\u003cc1002fd8\u003e] ? restore_all_notrace+0x0/0x18\n [\u003cc10c0c40\u003e] sys_mkdir+0x20/0x30\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0523676d3f3aa7edeea63cc3a1bc4dc612380a26",
      "tree": "daf7226836c93f57e4a6eaccdfa6617dcae83df0",
      "parents": [
        "27026a05bb805866a3b9068dda8153b72cb942f4"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 05:56:08 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:56:54 2010 +0100"
      },
      "message": "reiserfs: Relax reiserfs lock while freeing the journal\n\nKeeping the reiserfs lock while freeing the journal on\numount path triggers a lock inversion between bdev-\u003ebd_mutex\nand the reiserfs lock.\n\nWe don\u0027t need the reiserfs lock at this stage. The filesystem\nis not usable anymore, and there are no more pending commits,\neverything got flushed (even this operation was done in parallel\nand didn\u0027t required the reiserfs lock from the current process).\n\nThis fixes the following lockdep report:\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 ]\n2.6.32-atom #172\n-------------------------------------------------------\numount/3904 is trying to acquire lock:\n (\u0026bdev-\u003ebd_mutex){+.+.+.}, at: [\u003cc10de2c2\u003e] __blkdev_put+0x22/0x160\n\nbut task is already holding lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1143279\u003e] reiserfs_write_lock+0x29/0x40\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #3 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc140199b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1143229\u003e] reiserfs_write_lock_once+0x29/0x50\n       [\u003cc111c485\u003e] reiserfs_get_block+0x85/0x1620\n       [\u003cc10e1040\u003e] do_mpage_readpage+0x1f0/0x6d0\n       [\u003cc10e1640\u003e] mpage_readpages+0xc0/0x100\n       [\u003cc1119b89\u003e] reiserfs_readpages+0x19/0x20\n       [\u003cc108f1ec\u003e] __do_page_cache_readahead+0x1bc/0x260\n       [\u003cc108f2b8\u003e] ra_submit+0x28/0x40\n       [\u003cc1087e3e\u003e] filemap_fault+0x40e/0x420\n       [\u003cc109b5fd\u003e] __do_fault+0x3d/0x430\n       [\u003cc109d47e\u003e] handle_mm_fault+0x12e/0x790\n       [\u003cc1022a65\u003e] do_page_fault+0x135/0x330\n       [\u003cc1403663\u003e] error_code+0x6b/0x70\n       [\u003cc10ef9ca\u003e] load_elf_binary+0x82a/0x1a10\n       [\u003cc10ba130\u003e] search_binary_handler+0x90/0x1d0\n       [\u003cc10bb70f\u003e] do_execve+0x1df/0x250\n       [\u003cc1001746\u003e] sys_execve+0x46/0x70\n       [\u003cc1002fa5\u003e] syscall_call+0x7/0xb\n\n-\u003e #2 (\u0026mm-\u003emmap_sem){++++++}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc109b1ab\u003e] might_fault+0x8b/0xb0\n       [\u003cc11b8f52\u003e] copy_to_user+0x32/0x70\n       [\u003cc10c3b94\u003e] filldir64+0xa4/0xf0\n       [\u003cc1109116\u003e] sysfs_readdir+0x116/0x210\n       [\u003cc10c3e1d\u003e] vfs_readdir+0x8d/0xb0\n       [\u003cc10c3ea9\u003e] sys_getdents64+0x69/0xb0\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #1 (sysfs_mutex){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc140199b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc110951c\u003e] sysfs_addrm_start+0x2c/0xb0\n       [\u003cc1109aa0\u003e] create_dir+0x40/0x90\n       [\u003cc1109b1b\u003e] sysfs_create_dir+0x2b/0x50\n       [\u003cc11b2352\u003e] kobject_add_internal+0xc2/0x1b0\n       [\u003cc11b2531\u003e] kobject_add_varg+0x31/0x50\n       [\u003cc11b25ac\u003e] kobject_add+0x2c/0x60\n       [\u003cc1258294\u003e] device_add+0x94/0x560\n       [\u003cc11036ea\u003e] add_partition+0x18a/0x2a0\n       [\u003cc110418a\u003e] rescan_partitions+0x33a/0x450\n       [\u003cc10de5bf\u003e] __blkdev_get+0x12f/0x2d0\n       [\u003cc10de76a\u003e] blkdev_get+0xa/0x10\n       [\u003cc11034b8\u003e] register_disk+0x108/0x130\n       [\u003cc11a87a9\u003e] add_disk+0xd9/0x130\n       [\u003cc12998e5\u003e] sd_probe_async+0x105/0x1d0\n       [\u003cc10528af\u003e] async_thread+0xcf/0x230\n       [\u003cc104bfd4\u003e] kthread+0x74/0x80\n       [\u003cc1003aab\u003e] kernel_thread_helper+0x7/0x3c\n\n-\u003e #0 (\u0026bdev-\u003ebd_mutex){+.+.+.}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc140199b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc10de2c2\u003e] __blkdev_put+0x22/0x160\n       [\u003cc10de40a\u003e] blkdev_put+0xa/0x10\n       [\u003cc113ce22\u003e] free_journal_ram+0xd2/0x130\n       [\u003cc113ea18\u003e] do_journal_release+0x98/0x190\n       [\u003cc113eb2a\u003e] journal_release+0xa/0x10\n       [\u003cc1128eb6\u003e] reiserfs_put_super+0x36/0x130\n       [\u003cc10b776f\u003e] generic_shutdown_super+0x4f/0xe0\n       [\u003cc10b7825\u003e] kill_block_super+0x25/0x40\n       [\u003cc11255df\u003e] reiserfs_kill_sb+0x7f/0x90\n       [\u003cc10b7f4a\u003e] deactivate_super+0x7a/0x90\n       [\u003cc10cccd8\u003e] mntput_no_expire+0x98/0xd0\n       [\u003cc10ccfcc\u003e] sys_umount+0x4c/0x310\n       [\u003cc10cd2a9\u003e] sys_oldumount+0x19/0x20\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n2 locks held by umount/3904:\n #0:  (\u0026type-\u003es_umount_key#30){+++++.}, at: [\u003cc10b7f45\u003e] deactivate_super+0x75/0x90\n #1:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1143279\u003e] reiserfs_write_lock+0x29/0x40\n\nstack backtrace:\nPid: 3904, comm: umount Not tainted 2.6.32-atom #172\nCall Trace:\n [\u003cc13ff903\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc108b66f\u003e] ? free_pcppages_bulk+0x1f/0x250\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc10de2c2\u003e] ? __blkdev_put+0x22/0x160\n [\u003cc10de2c2\u003e] ? __blkdev_put+0x22/0x160\n [\u003cc140199b\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc10de2c2\u003e] ? __blkdev_put+0x22/0x160\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc10afe12\u003e] ? kfree+0x92/0xd0\n [\u003cc10de2c2\u003e] __blkdev_put+0x22/0x160\n [\u003cc105cc3b\u003e] ? trace_hardirqs_on+0xb/0x10\n [\u003cc10de40a\u003e] blkdev_put+0xa/0x10\n [\u003cc113ce22\u003e] free_journal_ram+0xd2/0x130\n [\u003cc113ea18\u003e] do_journal_release+0x98/0x190\n [\u003cc113eb2a\u003e] journal_release+0xa/0x10\n [\u003cc1128eb6\u003e] reiserfs_put_super+0x36/0x130\n [\u003cc1050596\u003e] ? up_write+0x16/0x30\n [\u003cc10b776f\u003e] generic_shutdown_super+0x4f/0xe0\n [\u003cc10b7825\u003e] kill_block_super+0x25/0x40\n [\u003cc10f41e0\u003e] ? vfs_quota_off+0x0/0x20\n [\u003cc11255df\u003e] reiserfs_kill_sb+0x7f/0x90\n [\u003cc10b7f4a\u003e] deactivate_super+0x7a/0x90\n [\u003cc10cccd8\u003e] mntput_no_expire+0x98/0xd0\n [\u003cc10ccfcc\u003e] sys_umount+0x4c/0x310\n [\u003cc10cd2a9\u003e] sys_oldumount+0x19/0x20\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "27026a05bb805866a3b9068dda8153b72cb942f4",
      "tree": "45fbdb663ad5165b2b5cbc08f11f09e06d502a72",
      "parents": [
        "c4a62ca362258d98f42efb282cfbf9b61caffdbe"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 05:06:21 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:54:47 2010 +0100"
      },
      "message": "reiserfs: Fix reiserfs lock \u003c-\u003e i_mutex dependency inversion on xattr\n\nWhile deleting the xattrs of an inode, we hold the reiserfs lock\nand grab the inode-\u003ei_mutex of the targeted inode and the root\nprivate xattr directory.\n\nLater on, we may relax the reiserfs lock for various reasons, this\ncreates inverted dependencies.\n\nWe can remove the reiserfs lock -\u003e i_mutex dependency by relaxing\nthe former before calling open_xa_dir(). This is fine because the\nlookup and creation of xattr private directories done in\nopen_xa_dir() are covered by the targeted inode mutexes. And deeper\noperations in the tree are still done under the write lock.\n\nThis fixes the following lockdep report:\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 ]\n2.6.32-atom #173\n-------------------------------------------------------\ncp/3204 is trying to acquire lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc1141e18\u003e] open_xa_dir+0xd8/0x1b0\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1141d83\u003e] open_xa_dir+0x43/0x1b0\n       [\u003cc1142722\u003e] reiserfs_for_each_xattr+0x62/0x260\n       [\u003cc114299a\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea1f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0a00\u003e] sys_unlink+0x10/0x20\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n       [\u003cc1117012\u003e] reiserfs_lookup+0x62/0x140\n       [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n       [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n       [\u003cc1141e2a\u003e] open_xa_dir+0xea/0x1b0\n       [\u003cc1141fe5\u003e] xattr_lookup+0x15/0x160\n       [\u003cc1142476\u003e] reiserfs_xattr_get+0x56/0x2a0\n       [\u003cc1144042\u003e] reiserfs_get_acl+0xa2/0x360\n       [\u003cc114461a\u003e] reiserfs_cache_default_acl+0x3a/0x160\n       [\u003cc111789c\u003e] reiserfs_mkdir+0x6c/0x2c0\n       [\u003cc10bea96\u003e] vfs_mkdir+0xd6/0x180\n       [\u003cc10c0c10\u003e] sys_mkdirat+0xc0/0xd0\n       [\u003cc10c0c40\u003e] sys_mkdir+0x20/0x30\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n2 locks held by cp/3204:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/1){+.+.+.}, at: [\u003cc10bd8d6\u003e] lookup_create+0x26/0xa0\n #1:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc1141e18\u003e] open_xa_dir+0xd8/0x1b0\n\nstack backtrace:\nPid: 3204, comm: cp Not tainted 2.6.32-atom #173\nCall Trace:\n [\u003cc13ff993\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc105d3aa\u003e] ? check_usage+0x6a/0x460\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n [\u003cc1117012\u003e] reiserfs_lookup+0x62/0x140\n [\u003cc105ccca\u003e] ? debug_check_no_locks_freed+0x8a/0x140\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n [\u003cc1141e2a\u003e] open_xa_dir+0xea/0x1b0\n [\u003cc1141fe5\u003e] xattr_lookup+0x15/0x160\n [\u003cc1142476\u003e] reiserfs_xattr_get+0x56/0x2a0\n [\u003cc1144042\u003e] reiserfs_get_acl+0xa2/0x360\n [\u003cc10ca2e7\u003e] ? new_inode+0x27/0xa0\n [\u003cc114461a\u003e] reiserfs_cache_default_acl+0x3a/0x160\n [\u003cc1402eb7\u003e] ? _spin_unlock+0x27/0x40\n [\u003cc111789c\u003e] reiserfs_mkdir+0x6c/0x2c0\n [\u003cc10c7cb8\u003e] ? __d_lookup+0x108/0x190\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc1401c8d\u003e] ? mutex_lock_nested+0x2bd/0x340\n [\u003cc10bd17a\u003e] ? generic_permission+0x1a/0xa0\n [\u003cc11788fe\u003e] ? security_inode_permission+0x1e/0x20\n [\u003cc10bea96\u003e] vfs_mkdir+0xd6/0x180\n [\u003cc10c0c10\u003e] sys_mkdirat+0xc0/0xd0\n [\u003cc10505c6\u003e] ? up_read+0x16/0x30\n [\u003cc1002fd8\u003e] ? restore_all_notrace+0x0/0x18\n [\u003cc10c0c40\u003e] sys_mkdir+0x20/0x30\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nv2: Don\u0027t drop reiserfs_mutex_lock_nested_safe() as we\u0027ll still\n    need it later\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c4a62ca362258d98f42efb282cfbf9b61caffdbe",
      "tree": "017484107efa26789ddd96579fcef09d874333c0",
      "parents": [
        "0719d3434747889b314a1e8add776418c4148bcf"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 03:20:19 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:54:37 2010 +0100"
      },
      "message": "reiserfs: Warn on lock relax if taken recursively\n\nWhen we relax the reiserfs lock to avoid creating unwanted\ndependencies against others locks while grabbing these,\nwe want to ensure it has not been taken recursively, otherwise\nthe lock won\u0027t be really relaxed. Only its depth will be decreased.\nThe unwanted dependency would then actually happen.\n\nTo prevent from that, add a reiserfs_lock_check_recursive() call\nin the places that need it.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0719d3434747889b314a1e8add776418c4148bcf",
      "tree": "6ff1fea4ffa9c96ee504bcb026659101eea4a12f",
      "parents": [
        "98ea3f50bcc97689cc0e1fa3b6733f03aeb8fef4"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 00:39:22 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:54:04 2010 +0100"
      },
      "message": "reiserfs: Fix reiserfs lock \u003c-\u003e i_xattr_sem dependency inversion\n\ni_xattr_sem depends on the reiserfs lock. But after we grab\ni_xattr_sem, we may relax/relock the reiserfs lock while waiting\non a freezed filesystem, creating a dependency inversion between\nthe two locks.\n\nIn order to avoid the i_xattr_sem -\u003e reiserfs lock dependency, let\u0027s\ncreate a reiserfs_down_read_safe() that acts like\nreiserfs_mutex_lock_safe(): relax the reiserfs lock while grabbing\nanother lock to avoid undesired dependencies induced by the\nheivyweight reiserfs lock.\n\nThis fixes the following warning:\n\n[  990.005931] \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[  990.012373] [ INFO: possible circular locking dependency detected ]\n[  990.013233] 2.6.33-rc1 #1\n[  990.013233] -------------------------------------------------------\n[  990.013233] dbench/1891 is trying to acquire lock:\n[  990.013233]  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cffffffff81159505\u003e] reiserfs_write_lock+0x35/0x50\n[  990.013233]\n[  990.013233] but task is already holding lock:\n[  990.013233]  (\u0026REISERFS_I(inode)-\u003ei_xattr_sem){+.+.+.}, at: [\u003cffffffff8115899a\u003e] reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]\n[  990.013233] which lock already depends on the new lock.\n[  990.013233]\n[  990.013233]\n[  990.013233] the existing dependency chain (in reverse order) is:\n[  990.013233]\n[  990.013233] -\u003e #1 (\u0026REISERFS_I(inode)-\u003ei_xattr_sem){+.+.+.}:\n[  990.013233]        [\u003cffffffff81063afc\u003e] __lock_acquire+0xf9c/0x1560\n[  990.013233]        [\u003cffffffff8106414f\u003e] lock_acquire+0x8f/0xb0\n[  990.013233]        [\u003cffffffff814ac194\u003e] down_write+0x44/0x80\n[  990.013233]        [\u003cffffffff8115899a\u003e] reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]        [\u003cffffffff81158e30\u003e] reiserfs_xattr_set+0xb0/0x150\n[  990.013233]        [\u003cffffffff8115a6aa\u003e] user_set+0x8a/0x90\n[  990.013233]        [\u003cffffffff8115901a\u003e] reiserfs_setxattr+0xaa/0xb0\n[  990.013233]        [\u003cffffffff810e2596\u003e] __vfs_setxattr_noperm+0x36/0xa0\n[  990.013233]        [\u003cffffffff810e26bc\u003e] vfs_setxattr+0xbc/0xc0\n[  990.013233]        [\u003cffffffff810e2780\u003e] setxattr+0xc0/0x150\n[  990.013233]        [\u003cffffffff810e289d\u003e] sys_fsetxattr+0x8d/0xa0\n[  990.013233]        [\u003cffffffff81002dab\u003e] system_call_fastpath+0x16/0x1b\n[  990.013233]\n[  990.013233] -\u003e #0 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n[  990.013233]        [\u003cffffffff81063e30\u003e] __lock_acquire+0x12d0/0x1560\n[  990.013233]        [\u003cffffffff8106414f\u003e] lock_acquire+0x8f/0xb0\n[  990.013233]        [\u003cffffffff814aba77\u003e] __mutex_lock_common+0x47/0x3b0\n[  990.013233]        [\u003cffffffff814abebe\u003e] mutex_lock_nested+0x3e/0x50\n[  990.013233]        [\u003cffffffff81159505\u003e] reiserfs_write_lock+0x35/0x50\n[  990.013233]        [\u003cffffffff811340e5\u003e] reiserfs_prepare_write+0x45/0x180\n[  990.013233]        [\u003cffffffff81158bb6\u003e] reiserfs_xattr_set_handle+0x2a6/0x470\n[  990.013233]        [\u003cffffffff81158e30\u003e] reiserfs_xattr_set+0xb0/0x150\n[  990.013233]        [\u003cffffffff8115a6aa\u003e] user_set+0x8a/0x90\n[  990.013233]        [\u003cffffffff8115901a\u003e] reiserfs_setxattr+0xaa/0xb0\n[  990.013233]        [\u003cffffffff810e2596\u003e] __vfs_setxattr_noperm+0x36/0xa0\n[  990.013233]        [\u003cffffffff810e26bc\u003e] vfs_setxattr+0xbc/0xc0\n[  990.013233]        [\u003cffffffff810e2780\u003e] setxattr+0xc0/0x150\n[  990.013233]        [\u003cffffffff810e289d\u003e] sys_fsetxattr+0x8d/0xa0\n[  990.013233]        [\u003cffffffff81002dab\u003e] system_call_fastpath+0x16/0x1b\n[  990.013233]\n[  990.013233] other info that might help us debug this:\n[  990.013233]\n[  990.013233] 2 locks held by dbench/1891:\n[  990.013233]  #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#12){+.+.+.}, at: [\u003cffffffff810e2678\u003e] vfs_setxattr+0x78/0xc0\n[  990.013233]  #1:  (\u0026REISERFS_I(inode)-\u003ei_xattr_sem){+.+.+.}, at: [\u003cffffffff8115899a\u003e] reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]\n[  990.013233] stack backtrace:\n[  990.013233] Pid: 1891, comm: dbench Not tainted 2.6.33-rc1 #1\n[  990.013233] Call Trace:\n[  990.013233]  [\u003cffffffff81061639\u003e] print_circular_bug+0xe9/0xf0\n[  990.013233]  [\u003cffffffff81063e30\u003e] __lock_acquire+0x12d0/0x1560\n[  990.013233]  [\u003cffffffff8115899a\u003e] ? reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]  [\u003cffffffff8106414f\u003e] lock_acquire+0x8f/0xb0\n[  990.013233]  [\u003cffffffff81159505\u003e] ? reiserfs_write_lock+0x35/0x50\n[  990.013233]  [\u003cffffffff8115899a\u003e] ? reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]  [\u003cffffffff814aba77\u003e] __mutex_lock_common+0x47/0x3b0\n[  990.013233]  [\u003cffffffff81159505\u003e] ? reiserfs_write_lock+0x35/0x50\n[  990.013233]  [\u003cffffffff81159505\u003e] ? reiserfs_write_lock+0x35/0x50\n[  990.013233]  [\u003cffffffff81062592\u003e] ? mark_held_locks+0x72/0xa0\n[  990.013233]  [\u003cffffffff814ab81d\u003e] ? __mutex_unlock_slowpath+0xbd/0x140\n[  990.013233]  [\u003cffffffff810628ad\u003e] ? trace_hardirqs_on_caller+0x14d/0x1a0\n[  990.013233]  [\u003cffffffff814abebe\u003e] mutex_lock_nested+0x3e/0x50\n[  990.013233]  [\u003cffffffff81159505\u003e] reiserfs_write_lock+0x35/0x50\n[  990.013233]  [\u003cffffffff811340e5\u003e] reiserfs_prepare_write+0x45/0x180\n[  990.013233]  [\u003cffffffff81158bb6\u003e] reiserfs_xattr_set_handle+0x2a6/0x470\n[  990.013233]  [\u003cffffffff81158e30\u003e] reiserfs_xattr_set+0xb0/0x150\n[  990.013233]  [\u003cffffffff814abcb4\u003e] ? __mutex_lock_common+0x284/0x3b0\n[  990.013233]  [\u003cffffffff8115a6aa\u003e] user_set+0x8a/0x90\n[  990.013233]  [\u003cffffffff8115901a\u003e] reiserfs_setxattr+0xaa/0xb0\n[  990.013233]  [\u003cffffffff810e2596\u003e] __vfs_setxattr_noperm+0x36/0xa0\n[  990.013233]  [\u003cffffffff810e26bc\u003e] vfs_setxattr+0xbc/0xc0\n[  990.013233]  [\u003cffffffff810e2780\u003e] setxattr+0xc0/0x150\n[  990.013233]  [\u003cffffffff81056018\u003e] ? sched_clock_cpu+0xb8/0x100\n[  990.013233]  [\u003cffffffff8105eded\u003e] ? trace_hardirqs_off+0xd/0x10\n[  990.013233]  [\u003cffffffff810560a3\u003e] ? cpu_clock+0x43/0x50\n[  990.013233]  [\u003cffffffff810c6820\u003e] ? fget+0xb0/0x110\n[  990.013233]  [\u003cffffffff810c6770\u003e] ? fget+0x0/0x110\n[  990.013233]  [\u003cffffffff81002ddc\u003e] ? sysret_check+0x27/0x62\n[  990.013233]  [\u003cffffffff810e289d\u003e] sys_fsetxattr+0x8d/0xa0\n[  990.013233]  [\u003cffffffff81002dab\u003e] system_call_fastpath+0x16/0x1b\n\nReported-and-tested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "98ea3f50bcc97689cc0e1fa3b6733f03aeb8fef4",
      "tree": "d909a47008ed466e5119f21f366934be5a6276b8",
      "parents": [
        "47376ceba54600cec4dd9e7c4fe8b98e4269633a"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Dec 29 21:51:15 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Dec 29 22:34:59 2009 +0100"
      },
      "message": "reiserfs: Fix remaining in-reclaim-fs \u003c-\u003e reclaim-fs-on locking inversion\n\nCommit 500f5a0bf5f0624dae34307010e240ec090e4cde\n(reiserfs: Fix possible recursive lock) fixed a vmalloc under reiserfs\nlock that triggered a lockdep warning because of a\nIN-FS-RECLAIM \u003c-\u003e RECLAIM-FS-ON locking dependency inversion.\n\nBut this patch has ommitted another vmalloc call in the same path\nthat allocates the journal. Relax the lock for this one too.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ec8e2f7466ca370f5e09000ca40a71759afc9ac8",
      "tree": "41c33d2317d9ffb0cc60cdacebf246bc023f8677",
      "parents": [
        "2bf212b9e48e1c35eaf8f0cc1729d7c4a39b7b5a"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Dec 17 15:27:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 15:45:30 2009 -0800"
      },
      "message": "reiserfs: truncate blocks not used by a write\n\nIt can happen that write does not use all the blocks allocated in\nwrite_begin either because of some filesystem error (like ENOSPC) or\nbecause page with data to write has been removed from memory.  We truncate\nthese blocks so that we don\u0027t have dangling blocks beyond i_size.\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6e3224fb20954f155e41ec5709b2ab70b50ae2d",
      "tree": "96302d1b564c879779b9cc5d7aae7c3c4471ed14",
      "parents": [
        "a2770d86b33024f71df269fde2de096df89d6a48"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 13:23:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 13:23:24 2009 -0800"
      },
      "message": "Revert \"task_struct: make journal_info conditional\"\n\nThis reverts commit e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319, as\nrequested by Alexey:\n\n \"I think I gave a good enough arguments to not merge it.\n  To iterate:\n   * patch makes impossible to start using ext3 on EXT3_FS\u003dn kernels\n     without reboot.\n   * this is done only for one pointer on task_struct\"\n\n  None of config options which define task_struct are tristate directly\n  or effectively.\"\n\nRequested-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47376ceba54600cec4dd9e7c4fe8b98e4269633a",
      "tree": "7282806f0095519200729f0d78810f78aa57a974",
      "parents": [
        "cb1c2e51c5a72f093b5af384b11d2f1c2abd6c13"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 16 23:25:50 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 16 23:25:50 2009 +0100"
      },
      "message": "reiserfs: Fix reiserfs lock \u003c-\u003e inode mutex dependency inversion\n\nThe reiserfs lock -\u003e inode mutex dependency gets inverted when we\nrelax the lock while walking to the tree.\n\nTo fix this, use a specialized version of reiserfs_mutex_lock_safe\nthat takes care of mutex subclasses. Then we can grab the inode\nmutex with I_MUTEX_XATTR subclass without any reiserfs lock\ndependency.\n\nThis fixes the following report:\n\n[ INFO: possible circular locking dependency detected ]\n2.6.32-06793-gf405425-dirty #2\n-------------------------------------------------------\nmv/18566 is trying to acquire lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1110708\u003e] reiserfs_write_lock+0x28\u003d\n/0x40\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#5/3){+.+.+.}, at: [\u003cc111033c\u003e]\nreiserfs_for_each_xattr+0x10c/0x380\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026sb-\u003es_type-\u003ei_mutex_key#5/3){+.+.+.}:\n       [\u003cc104f723\u003e] validate_chain+0xa23/0xf70\n       [\u003cc1050155\u003e] __lock_acquire+0x4e5/0xa70\n       [\u003cc105075a\u003e] lock_acquire+0x7a/0xa0\n       [\u003cc134c76f\u003e] mutex_lock_nested+0x5f/0x2b0\n       [\u003cc11102b4\u003e] reiserfs_for_each_xattr+0x84/0x380\n       [\u003cc1110615\u003e] reiserfs_delete_xattrs+0x15/0x50\n       [\u003cc10ef57f\u003e] reiserfs_delete_inode+0x8f/0x140\n       [\u003cc10a565c\u003e] generic_delete_inode+0x9c/0x150\n       [\u003cc10a574d\u003e] generic_drop_inode+0x3d/0x60\n       [\u003cc10a4667\u003e] iput+0x47/0x50\n       [\u003cc109cc0b\u003e] do_unlinkat+0xdb/0x160\n       [\u003cc109cca0\u003e] sys_unlink+0x10/0x20\n       [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\n-\u003e #0 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc104fc68\u003e] validate_chain+0xf68/0xf70\n       [\u003cc1050155\u003e] __lock_acquire+0x4e5/0xa70\n       [\u003cc105075a\u003e] lock_acquire+0x7a/0xa0\n       [\u003cc134c76f\u003e] mutex_lock_nested+0x5f/0x2b0\n       [\u003cc1110708\u003e] reiserfs_write_lock+0x28/0x40\n       [\u003cc1103d6b\u003e] search_by_key+0x1f7b/0x21b0\n       [\u003cc10e73ef\u003e] search_by_entry_key+0x1f/0x3b0\n       [\u003cc10e77f7\u003e] reiserfs_find_entry+0x77/0x400\n       [\u003cc10e81e5\u003e] reiserfs_lookup+0x85/0x130\n       [\u003cc109a144\u003e] __lookup_hash+0xb4/0x110\n       [\u003cc109b763\u003e] lookup_one_len+0xb3/0x100\n       [\u003cc1110350\u003e] reiserfs_for_each_xattr+0x120/0x380\n       [\u003cc1110615\u003e] reiserfs_delete_xattrs+0x15/0x50\n       [\u003cc10ef57f\u003e] reiserfs_delete_inode+0x8f/0x140\n       [\u003cc10a565c\u003e] generic_delete_inode+0x9c/0x150\n       [\u003cc10a574d\u003e] generic_drop_inode+0x3d/0x60\n       [\u003cc10a4667\u003e] iput+0x47/0x50\n       [\u003cc10a1c4f\u003e] dentry_iput+0x6f/0xf0\n       [\u003cc10a1d74\u003e] d_kill+0x24/0x50\n       [\u003cc10a396b\u003e] dput+0x5b/0x120\n       [\u003cc109ca89\u003e] sys_renameat+0x1b9/0x230\n       [\u003cc109cb28\u003e] sys_rename+0x28/0x30\n       [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\nother info that might help us debug this:\n\n2 locks held by mv/18566:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#5/1){+.+.+.}, at: [\u003cc109b6ac\u003e]\nlock_rename+0xcc/0xd0\n #1:  (\u0026sb-\u003es_type-\u003ei_mutex_key#5/3){+.+.+.}, at: [\u003cc111033c\u003e]\nreiserfs_for_each_xattr+0x10c/0x380\n\nstack backtrace:\nPid: 18566, comm: mv Tainted: G         C 2.6.32-06793-gf405425-dirty #2\nCall Trace:\n [\u003cc134b252\u003e] ? printk+0x18/0x1e\n [\u003cc104e790\u003e] print_circular_bug+0xc0/0xd0\n [\u003cc104fc68\u003e] validate_chain+0xf68/0xf70\n [\u003cc104c8cb\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc1050155\u003e] __lock_acquire+0x4e5/0xa70\n [\u003cc105075a\u003e] lock_acquire+0x7a/0xa0\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc134c76f\u003e] mutex_lock_nested+0x5f/0x2b0\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc134b60a\u003e] ? schedule+0x27a/0x440\n [\u003cc1110708\u003e] reiserfs_write_lock+0x28/0x40\n [\u003cc1103d6b\u003e] search_by_key+0x1f7b/0x21b0\n [\u003cc1050176\u003e] ? __lock_acquire+0x506/0xa70\n [\u003cc1051267\u003e] ? lock_release_non_nested+0x1e7/0x340\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc104e354\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc104e3ab\u003e] ? trace_hardirqs_on+0xb/0x10\n [\u003cc1042a55\u003e] ? T.316+0x15/0x1a0\n [\u003cc1042d2d\u003e] ? sched_clock_cpu+0x9d/0x100\n [\u003cc10e73ef\u003e] search_by_entry_key+0x1f/0x3b0\n [\u003cc134bf2a\u003e] ? __mutex_unlock_slowpath+0x9a/0x120\n [\u003cc104e354\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10e77f7\u003e] reiserfs_find_entry+0x77/0x400\n [\u003cc10e81e5\u003e] reiserfs_lookup+0x85/0x130\n [\u003cc1042d2d\u003e] ? sched_clock_cpu+0x9d/0x100\n [\u003cc109a144\u003e] __lookup_hash+0xb4/0x110\n [\u003cc109b763\u003e] lookup_one_len+0xb3/0x100\n [\u003cc1110350\u003e] reiserfs_for_each_xattr+0x120/0x380\n [\u003cc110ffe0\u003e] ? delete_one_xattr+0x0/0x1c0\n [\u003cc1003342\u003e] ? math_error+0x22/0x150\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc1110615\u003e] reiserfs_delete_xattrs+0x15/0x50\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc10ef57f\u003e] reiserfs_delete_inode+0x8f/0x140\n [\u003cc10a561f\u003e] ? generic_delete_inode+0x5f/0x150\n [\u003cc10ef4f0\u003e] ? reiserfs_delete_inode+0x0/0x140\n [\u003cc10a565c\u003e] generic_delete_inode+0x9c/0x150\n [\u003cc10a574d\u003e] generic_drop_inode+0x3d/0x60\n [\u003cc10a4667\u003e] iput+0x47/0x50\n [\u003cc10a1c4f\u003e] dentry_iput+0x6f/0xf0\n [\u003cc10a1d74\u003e] d_kill+0x24/0x50\n [\u003cc10a396b\u003e] dput+0x5b/0x120\n [\u003cc109ca89\u003e] sys_renameat+0x1b9/0x230\n [\u003cc1042d2d\u003e] ? sched_clock_cpu+0x9d/0x100\n [\u003cc104c8cb\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc1042dde\u003e] ? cpu_clock+0x4e/0x60\n [\u003cc1350825\u003e] ? do_page_fault+0x155/0x370\n [\u003cc1041816\u003e] ? up_read+0x16/0x30\n [\u003cc1350825\u003e] ? do_page_fault+0x155/0x370\n [\u003cc109cb28\u003e] sys_rename+0x28/0x30\n [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "bac5e54c29f352d962a2447d22735316b347b9f1",
      "tree": "7642993fa93164835ffaa2dacd341388193f1979",
      "parents": [
        "529e89430d6c0d64db8ac474cb95e68e2527c79a",
        "c05c4edd876b7ae92787d1295868afcb89b6a348"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:04:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:04:02 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (38 commits)\n  direct I/O fallback sync simplification\n  ocfs: stop using do_sync_mapping_range\n  cleanup blockdev_direct_IO locking\n  make generic_acl slightly more generic\n  sanitize xattr handler prototypes\n  libfs: move EXPORT_SYMBOL for d_alloc_name\n  vfs: force reval of target when following LAST_BIND symlinks (try #7)\n  ima: limit imbalance msg\n  Untangling ima mess, part 3: kill dead code in ima\n  Untangling ima mess, part 2: deal with counters\n  Untangling ima mess, part 1: alloc_file()\n  O_TRUNC open shouldn\u0027t fail after file truncation\n  ima: call ima_inode_free ima_inode_free\n  IMA: clean up the IMA counts updating code\n  ima: only insert at inode creation time\n  ima: valid return code from ima_inode_alloc\n  fs: move get_empty_filp() deffinition to internal.h\n  Sanitize exec_permission_lite()\n  Kill cached_lookup() and real_lookup()\n  Kill path_lookup_open()\n  ...\n\nTrivial conflicts in fs/direct-io.c\n"
    },
    {
      "commit": "431547b3c4533b8c7fd150ab36980b9a3147797b",
      "tree": "807ff2790f3c13c7c91ed2afd6d833032899482d",
      "parents": [
        "ef26ca97e83052790940cbc444b01b0d17a813c1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Nov 13 09:52:56 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:49 2009 -0500"
      },
      "message": "sanitize xattr handler prototypes\n\nAdd a flags argument to struct xattr_handler and pass it to all xattr\nhandler methods.  This allows using the same methods for multiple\nhandlers, e.g. for the ACL methods which perform exactly the same action\nfor the access and default ACLs, just using a different underlying\nattribute.  With a little more groundwork it\u0027ll also allow sharing the\nmethods for the regular user/trusted/secure handlers in extN, ocfs2 and\njffs2 like it\u0027s already done for xfs in this patch.\n\nAlso change the inode argument to the handlers to a dentry to allow\nusing the handlers mechnism for filesystems that require it later,\ne.g. cifs.\n\n[with GFS2 bits updated by Steven Whitehouse \u003cswhiteho@redhat.com\u003e]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e3c96f53ac132743fda1384910feb863a2eab916",
      "tree": "48b97fdf50897d5ee97409db86bd4e4d7220be03",
      "parents": [
        "904e812931f001b984912b2d2f653ea69520313c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Dec 15 16:46:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:06 2009 -0800"
      },
      "message": "reiserfs: don\u0027t compile procfs.o at all if no support\n\n* small define cleanup in header\n* fix #ifdeffery in procfs.c via Kconfig\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "904e812931f001b984912b2d2f653ea69520313c",
      "tree": "c09ae6040d59111bb75594248bdb6b1246e828f3",
      "parents": [
        "f3e2a520f5fb1a1df033efd9c2e5eadb384aad9b"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Dec 15 16:46:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:06 2009 -0800"
      },
      "message": "reiserfs: remove /proc/fs/reiserfs/version\n\n/proc/fs/reiserfs/version is on the way of removing -\u003eread_proc interface.\n It\u0027s empty however, so simply remove it instead of doing dummy\nconversion.  It\u0027s hard to see what information userspace can extract from\nempty file.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319",
      "tree": "ce2be0a79fa2e8d8271426f0fc27b25e83c050b4",
      "parents": [
        "8420e7efa1cf155765c6d77c91d3e3547c7aa557"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Mon Dec 14 18:00:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "task_struct: make journal_info conditional\n\njournal_info in task_struct is used in journaling file system only.  So\nintroduce CONFIG_FS_JOURNAL_INFO and make it conditional.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: KONISHI Ryusuke \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": "cb1c2e51c5a72f093b5af384b11d2f1c2abd6c13",
      "tree": "e4cb094df0a729eaac4eb1229e0f9ee0ab39aeaf",
      "parents": [
        "500f5a0bf5f0624dae34307010e240ec090e4cde"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Dec 13 23:32:06 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 14 11:47:11 2009 +0100"
      },
      "message": "reiserfs: Fix reiserfs lock and journal lock inversion dependency\n\nWhen we were using the bkl, we didn\u0027t care about dependencies against\nother locks, but the mutex conversion created new ones, which is why\nwe have reiserfs_mutex_lock_safe(), which unlocks the reiserfs lock\nbefore acquiring another mutex.\n\nBut this trick actually fails if we have acquired the reiserfs lock\nrecursively, as we try to unlock it to acquire the new mutex without\ninverted dependency, but we eventually only decrease its depth.\n\nThis happens in the case of a nested inode creation/deletion.\nSay we have no space left on the device, we create an inode\nand tak the lock but fail to create its entry, then we release the\ninode using iput(), which calls reiserfs_delete_inode() that takes\nthe reiserfs lock recursively. The path eventually ends up in\njournal_begin() where we try to take the journal safely but we\nfail because of the reiserfs lock recursion:\n\n[ INFO: possible circular locking dependency detected ]\n2.6.32-06486-g053fe57 #2\n-------------------------------------------------------\nvi/23454 is trying to acquire lock:\n (\u0026journal-\u003ej_mutex){+.+...}, at: [\u003cc110dac4\u003e] do_journal_begin_r+0x64/0x2f0\n\nbut task is already holding lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc11106a8\u003e] reiserfs_write_lock+0x28/0x40\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc104f8f3\u003e] validate_chain+0xa23/0xf70\n       [\u003cc1050325\u003e] __lock_acquire+0x4e5/0xa70\n       [\u003cc105092a\u003e] lock_acquire+0x7a/0xa0\n       [\u003cc134c78f\u003e] mutex_lock_nested+0x5f/0x2b0\n       [\u003cc11106a8\u003e] reiserfs_write_lock+0x28/0x40\n       [\u003cc110dacb\u003e] do_journal_begin_r+0x6b/0x2f0\n       [\u003cc110ddcf\u003e] journal_begin+0x7f/0x120\n       [\u003cc10f76c2\u003e] reiserfs_remount+0x212/0x4d0\n       [\u003cc1093997\u003e] do_remount_sb+0x67/0x140\n       [\u003cc10a9ca6\u003e] do_mount+0x436/0x6b0\n       [\u003cc10a9f86\u003e] sys_mount+0x66/0xa0\n       [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\n-\u003e #0 (\u0026journal-\u003ej_mutex){+.+...}:\n       [\u003cc104fe38\u003e] validate_chain+0xf68/0xf70\n       [\u003cc1050325\u003e] __lock_acquire+0x4e5/0xa70\n       [\u003cc105092a\u003e] lock_acquire+0x7a/0xa0\n       [\u003cc134c78f\u003e] mutex_lock_nested+0x5f/0x2b0\n       [\u003cc110dac4\u003e] do_journal_begin_r+0x64/0x2f0\n       [\u003cc110ddcf\u003e] journal_begin+0x7f/0x120\n       [\u003cc10ef52f\u003e] reiserfs_delete_inode+0x9f/0x140\n       [\u003cc10a55fc\u003e] generic_delete_inode+0x9c/0x150\n       [\u003cc10a56ed\u003e] generic_drop_inode+0x3d/0x60\n       [\u003cc10a4607\u003e] iput+0x47/0x50\n       [\u003cc10e915c\u003e] reiserfs_create+0x16c/0x1c0\n       [\u003cc109a9c1\u003e] vfs_create+0xc1/0x130\n       [\u003cc109dbec\u003e] do_filp_open+0x81c/0x920\n       [\u003cc109004f\u003e] do_sys_open+0x4f/0x110\n       [\u003cc1090179\u003e] sys_open+0x29/0x40\n       [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\nother info that might help us debug this:\n\n2 locks held by vi/23454:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#5){+.+.+.}, at: [\u003cc109d64e\u003e]\ndo_filp_open+0x27e/0x920\n #1:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc11106a8\u003e]\nreiserfs_write_lock+0x28/0x40\n\nstack backtrace:\nPid: 23454, comm: vi Not tainted 2.6.32-06486-g053fe57 #2\nCall Trace:\n [\u003cc134b202\u003e] ? printk+0x18/0x1e\n [\u003cc104e960\u003e] print_circular_bug+0xc0/0xd0\n [\u003cc104fe38\u003e] validate_chain+0xf68/0xf70\n [\u003cc104ca9b\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc1050325\u003e] __lock_acquire+0x4e5/0xa70\n [\u003cc105092a\u003e] lock_acquire+0x7a/0xa0\n [\u003cc110dac4\u003e] ? do_journal_begin_r+0x64/0x2f0\n [\u003cc134c78f\u003e] mutex_lock_nested+0x5f/0x2b0\n [\u003cc110dac4\u003e] ? do_journal_begin_r+0x64/0x2f0\n [\u003cc110dac4\u003e] ? do_journal_begin_r+0x64/0x2f0\n [\u003cc110ff80\u003e] ? delete_one_xattr+0x0/0x1c0\n [\u003cc110dac4\u003e] do_journal_begin_r+0x64/0x2f0\n [\u003cc110ddcf\u003e] journal_begin+0x7f/0x120\n [\u003cc11105b5\u003e] ? reiserfs_delete_xattrs+0x15/0x50\n [\u003cc10ef52f\u003e] reiserfs_delete_inode+0x9f/0x140\n [\u003cc10a55bf\u003e] ? generic_delete_inode+0x5f/0x150\n [\u003cc10ef490\u003e] ? reiserfs_delete_inode+0x0/0x140\n [\u003cc10a55fc\u003e] generic_delete_inode+0x9c/0x150\n [\u003cc10a56ed\u003e] generic_drop_inode+0x3d/0x60\n [\u003cc10a4607\u003e] iput+0x47/0x50\n [\u003cc10e915c\u003e] reiserfs_create+0x16c/0x1c0\n [\u003cc1099a5d\u003e] ? inode_permission+0x7d/0xa0\n [\u003cc109a9c1\u003e] vfs_create+0xc1/0x130\n [\u003cc10e8ff0\u003e] ? reiserfs_create+0x0/0x1c0\n [\u003cc109dbec\u003e] do_filp_open+0x81c/0x920\n [\u003cc104ca9b\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc134dc0d\u003e] ? _spin_unlock+0x1d/0x20\n [\u003cc10a6eea\u003e] ? alloc_fd+0xba/0xf0\n [\u003cc109004f\u003e] do_sys_open+0x4f/0x110\n [\u003cc1090179\u003e] sys_open+0x29/0x40\n [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\nTo fix this, use reiserfs_lock_once() from reiserfs_delete_inode()\nwhich prevents from adding reiserfs lock recursion.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "500f5a0bf5f0624dae34307010e240ec090e4cde",
      "tree": "2b91adce6d79d8d5caaad1ad3c6421ade480e4bf",
      "parents": [
        "6548698f929814375fa5d62ae1db96959b0418c1"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Dec 13 22:48:54 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 14 11:43:09 2009 +0100"
      },
      "message": "reiserfs: Fix possible recursive lock\n\nWhile allocating the bitmap using vmalloc, we hold the reiserfs lock,\nwhich makes lockdep later reporting a possible deadlock as we may\nswap out pages to allocate memory and then take the reiserfs lock\nrecursively:\n\ninconsistent {RECLAIM_FS-ON-W} -\u003e {IN-RECLAIM_FS-W} usage.\nkswapd0/312 [HC0[0]:SC0[0]:HE1:SE1] takes:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.?.}, at: [\u003cc11108a8\u003e] reiserfs_write_lock+0x28/0x40\n{RECLAIM_FS-ON-W} state was registered at:\n  [\u003cc104e1c2\u003e] mark_held_locks+0x62/0x90\n  [\u003cc104e28a\u003e] lockdep_trace_alloc+0x9a/0xc0\n  [\u003cc108e396\u003e] kmem_cache_alloc+0x26/0xf0\n  [\u003cc10850ec\u003e] __get_vm_area_node+0x6c/0xf0\n  [\u003cc10857de\u003e] __vmalloc_node+0x7e/0xa0\n  [\u003cc108597b\u003e] vmalloc+0x2b/0x30\n  [\u003cc10e00b9\u003e] reiserfs_init_bitmap_cache+0x39/0x70\n  [\u003cc10f8178\u003e] reiserfs_fill_super+0x2e8/0xb90\n  [\u003cc1094345\u003e] get_sb_bdev+0x145/0x180\n  [\u003cc10f5a11\u003e] get_super_block+0x21/0x30\n  [\u003cc10931f0\u003e] vfs_kern_mount+0x40/0xd0\n  [\u003cc10932d9\u003e] do_kern_mount+0x39/0xd0\n  [\u003cc10a9857\u003e] do_mount+0x2c7/0x6b0\n  [\u003cc10a9ca6\u003e] sys_mount+0x66/0xa0\n  [\u003cc161589b\u003e] mount_block_root+0xc4/0x245\n  [\u003cc1615a75\u003e] mount_root+0x59/0x5f\n  [\u003cc1615b8c\u003e] prepare_namespace+0x111/0x14b\n  [\u003cc1615269\u003e] kernel_init+0xcf/0xdb\n  [\u003cc10031fb\u003e] kernel_thread_helper+0x7/0x1c\n\nThis is actually fine for two reasons: we call vmalloc at mount time\nthen it\u0027s not in the swapping out path. Also the reiserfs lock can be\nacquired recursively, but since its implementation depends on a mutex,\nit\u0027s hard and not necessary worth it to teach that to lockdep.\n\nThe lock is useless at mount time anyway, at least until we replay the\njournal. But let\u0027s remove it from this path later as this needs\nmore thinking and is a sensible change.\n\nFor now we can just relax the lock around vmalloc,\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "4ef58d4e2ad1fa2a3e5bbf41af2284671fca8cf8",
      "tree": "856ba96302a36014736747e8464f80eeb827bbdd",
      "parents": [
        "f6c4c8195b5e7878823caa1181be404d9e86d369",
        "d014d043869cdc591f3a33243d3481fa4479c2d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (42 commits)\n  tree-wide: fix misspelling of \"definition\" in comments\n  reiserfs: fix misspelling of \"journaled\"\n  doc: Fix a typo in slub.txt.\n  inotify: remove superfluous return code check\n  hdlc: spelling fix in find_pvc() comment\n  doc: fix regulator docs cut-and-pasteism\n  mtd: Fix comment in Kconfig\n  doc: Fix IRQ chip docs\n  tree-wide: fix assorted typos all over the place\n  drivers/ata/libata-sff.c: comment spelling fixes\n  fix typos/grammos in Documentation/edac.txt\n  sysctl: add missing comments\n  fs/debugfs/inode.c: fix comment typos\n  sgivwfb: Make use of ARRAY_SIZE.\n  sky2: fix sky2_link_down copy/paste comment error\n  tree-wide: fix typos \"couter\" -\u003e \"counter\"\n  tree-wide: fix typos \"offest\" -\u003e \"offset\"\n  fix kerneldoc for set_irq_msi()\n  spidev: fix double \"of of\" in comment\n  comment typo fix: sybsystem -\u003e subsystem\n  ...\n"
    },
    {
      "commit": "a9280fed383082da08a40af3f38daccaed6d8d62",
      "tree": "7eeacfcd07f7f1de56b1b29f473cb31b7251d8b4",
      "parents": [
        "2b876f95d03e226394b5d360c86127cbefaf614b",
        "1d2c6cfd40b2dece3bb958cbbc405a2c1536ab75"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 07:58:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 07:58:15 2009 -0800"
      },
      "message": "Merge branch \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing\n\n* \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing: (31 commits)\n  kill-the-bkl/reiserfs: turn GFP_ATOMIC flag to GFP_NOFS in reiserfs_get_block()\n  kill-the-bkl/reiserfs: drop the fs race watchdog from _get_block_create_0()\n  kill-the-bkl/reiserfs: definitely drop the bkl from reiserfs_ioctl()\n  kill-the-bkl/reiserfs: always lock the ioctl path\n  kill-the-bkl/reiserfs: fix reiserfs lock to cpu_add_remove_lock dependency\n  kill-the-bkl/reiserfs: Fix induced mm-\u003emmap_sem to sysfs_mutex dependency\n  kill-the-bkl/reiserfs: panic in case of lock imbalance\n  kill-the-bkl/reiserfs: fix recursive reiserfs write lock in reiserfs_commit_write()\n  kill-the-bkl/reiserfs: fix recursive reiserfs lock in reiserfs_mkdir()\n  kill-the-bkl/reiserfs: fix \"reiserfs lock\" / \"inode mutex\" lock inversion dependency\n  kill-the-bkl/reiserfs: move the concurrent tree accesses checks per superblock\n  kill-the-bkl/reiserfs: acquire the inode mutex safely\n  kill-the-bkl/reiserfs: unlock only when needed in search_by_key\n  kill-the-bkl/reiserfs: use mutex_lock in reiserfs_mutex_lock_safe\n  kill-the-bkl/reiserfs: factorize the locking in reiserfs_write_end()\n  kill-the-bkl/reiserfs: reduce number of contentions in search_by_key()\n  kill-the-bkl/reiserfs: don\u0027t hold the write recursively in reiserfs_lookup()\n  kill-the-bkl/reiserfs: lock only once on reiserfs_get_block()\n  kill-the-bkl/reiserfs: conditionaly release the write lock on fs_changed()\n  kill-the-BKL/reiserfs: add reiserfs_cond_resched()\n  ...\n"
    },
    {
      "commit": "6548698f929814375fa5d62ae1db96959b0418c1",
      "tree": "340924ae82cb0946aa15045b2b72186de52a8146",
      "parents": [
        "1d2c6cfd40b2dece3bb958cbbc405a2c1536ab75",
        "22763c5cf3690a681551162c15d34d935308c8d7"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 07 07:28:35 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 07 07:29:22 2009 +0100"
      },
      "message": "Merge commit \u0027v2.6.32\u0027 into reiserfs/kill-bkl\n\nMerge-reason: The tree was based 2.6.31. It\u0027s better to be up to date\nwith 2.6.32. Although no conflicting changes were made in between,\nit gives benchmarking results closer to the lastest kernel behaviour.\n"
    },
    {
      "commit": "febe29d957c5076ff6a9fa49f39b01f1e48d1c04",
      "tree": "a8707ab69455a7082c594445881403df2870d19e",
      "parents": [
        "e02f0e868a2664c1f5d72cd9a7fc08b4c4309169"
      ],
      "author": {
        "name": "Adam Buchbinder",
        "email": "adam.buchbinder@gmail.com",
        "time": "Fri Dec 04 15:24:22 2009 -0500"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 23:39:11 2009 +0100"
      },
      "message": "reiserfs: fix misspelling of \"journaled\"\n\n\"Journaled\" is misspelled \"journlaled\" in an output string; this patch\nfixed it. No changes in functionality.\n\nSigned-off-by: Adam Buchbinder \u003cadam.buchbinder@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "1d2c6cfd40b2dece3bb958cbbc405a2c1536ab75",
      "tree": "52ab33b148548083ae0456857791a8d410c83a31",
      "parents": [
        "27b3a5c51b50a234fb4a21146841e6723b5934ce"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Nov 20 04:11:30 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Nov 20 18:25:02 2009 +0100"
      },
      "message": "kill-the-bkl/reiserfs: turn GFP_ATOMIC flag to GFP_NOFS in reiserfs_get_block()\n\nGFP_ATOMIC was used in reiserfs_get_block to not lose the Bkl so that\nnobody can modify the tree in the middle of its work. Now that we\nkicked out the bkl, we can use a more friendly flag. We use GFP_NOFS\nhere because we already hold the reiserfs lock.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "27b3a5c51b50a234fb4a21146841e6723b5934ce",
      "tree": "41b1df81b0b40b0115c77f835b3791db7c13c1f5",
      "parents": [
        "205cb37b89ab37db553907e5ac17962eec561804"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:34:31 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:34:31 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: drop the fs race watchdog from _get_block_create_0()\n\nWe had a watchdog in _get_block_create_0() that jumped to a fixup retry\npath in case the bkl got relaxed while calling kmap().\nThis is not necessary anymore since we now have a reiserfs lock that is\nnot implicitly relaxed while sleeping.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "205cb37b89ab37db553907e5ac17962eec561804",
      "tree": "1ba8dcbef0112fbd0d77d28a317c950b11c19563",
      "parents": [
        "ac78a07893d24d95ff5f39d0433c25210f224f07"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:22:17 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:28:12 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: definitely drop the bkl from reiserfs_ioctl()\n\nThe reiserfs ioctl path doesn\u0027t need the big kernel lock anymore , now\nthat the filesystem synchronizes through its own lock.\n\nWe can then turn reiserfs_ioctl() into an unlocked_ioctl callback.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ac78a07893d24d95ff5f39d0433c25210f224f07",
      "tree": "ac48d2a828ef6daa62d5f5373cc14ba658b2a945",
      "parents": [
        "48f6ba5e691948caba2e7bc362153fb28e4f1e09"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:08:43 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:27:57 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: always lock the ioctl path\n\nReiserfs uses the ioctl callback for its file operations, which means\nthat its ioctl path is still locked by the bkl, this was synchronizing\nwith the rest of the filsystem operations. We have changed that by\nlocking it with the new reiserfs lock but we do that only from the\ncompat_ioctl callback.\n\nFix that by locking reiserfs_ioctl() everytime.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "48f6ba5e691948caba2e7bc362153fb28e4f1e09",
      "tree": "318e755ec8c3664b1276a5a87f455b8dc37c3862",
      "parents": [
        "193be0ee17dd7ea309ddab1093da17e5924d7f36"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Oct 05 16:31:37 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Oct 05 16:31:37 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix reiserfs lock to cpu_add_remove_lock dependency\n\nWhile creating the reiserfs workqueue during the journal\ninitialization, we are holding the reiserfs lock, but\ncreate_workqueue() also holds the cpu_add_remove_lock, creating\nthen the following dependency:\n\n- reiserfs lock -\u003e cpu_add_remove_lock\n\nBut we also have the following existing dependencies:\n\n- mm-\u003emmap_sem -\u003e reiserfs lock\n- cpu_add_remove_lock -\u003e cpu_hotplug.lock -\u003e slub_lock -\u003e sysfs_mutex\n\nThe merged dependency chain then becomes:\n\n- mm-\u003emmap_sem -\u003e reiserfs lock -\u003e cpu_add_remove_lock -\u003e\n\tcpu_hotplug.lock -\u003e slub_lock -\u003e sysfs_mutex\n\nBut when we fill a dir entry in sysfs_readir(), we are holding the\nsysfs_mutex and we also might fault while copying the directory entry\nto the user, leading to the following dependency:\n\n- sysfs_mutex -\u003e mm-\u003emmap_sem\n\nThe end result is then a lock inversion between sysfs_mutex and\nmm-\u003emmap_sem, as reported in the following lockdep warning:\n\n[ INFO: possible circular locking dependency detected ]\n2.6.31-07095-g25a3912 #4\n-------------------------------------------------------\nudevadm/790 is trying to acquire lock:\n (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc1098942\u003e] might_fault+0x72/0xc0\n\nbut task is already holding lock:\n (sysfs_mutex){+.+.+.}, at: [\u003cc110813c\u003e] sysfs_readdir+0x7c/0x260\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #5 (sysfs_mutex){+.+.+.}:\n      [...]\n\n-\u003e #4 (slub_lock){+++++.}:\n      [...]\n\n-\u003e #3 (cpu_hotplug.lock){+.+.+.}:\n      [...]\n\n-\u003e #2 (cpu_add_remove_lock){+.+.+.}:\n      [...]\n\n-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n      [...]\n\n-\u003e #0 (\u0026mm-\u003emmap_sem){++++++}:\n      [...]\n\nThis can be fixed by relaxing the reiserfs lock while creating the\nworkqueue.\nThis is fine to relax the lock here, we just keep it around to pass\nthrough reiserfs lock checks and for paranoid reasons.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nTested-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "0d54b217a247f39605361f867fefbb9e099a5432",
      "tree": "5af6a2cc4cbc6c327e735ac5edb642d47a1f0013",
      "parents": [
        "61e225dc341107be304fd1088146c2a5e88ff9e0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: make struct super_block::s_qcop 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": "61e225dc341107be304fd1088146c2a5e88ff9e0",
      "tree": "e6d3e1dc5506e232497f17721175a081a5306b5b",
      "parents": [
        "00d3803b656a5f0935518d746f6bb27d5181d29d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: make struct super_block::dq_op 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": "193be0ee17dd7ea309ddab1093da17e5924d7f36",
      "tree": "d57d6a5162311b9f4513f485aca89fe5b992e31a",
      "parents": [
        "80503185989b2dd84170bb842e23d3fd45ebdf40"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Sep 17 05:31:37 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Sep 17 05:31:37 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: Fix induced mm-\u003emmap_sem to sysfs_mutex dependency\n\nAlexander Beregalov reported the following warning:\n\n\t\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\t[ INFO: possible circular locking dependency detected ]\n\t2.6.31-03149-gdcc030a #1\n\t-------------------------------------------------------\n\tudevadm/716 is trying to acquire lock:\n\t (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc107249a\u003e] might_fault+0x4a/0xa0\n\n\tbut task is already holding lock:\n\t (sysfs_mutex){+.+.+.}, at: [\u003cc10cb9aa\u003e] sysfs_readdir+0x5a/0x200\n\n\twhich lock already depends on the new lock.\n\n\tthe existing dependency chain (in reverse order) is:\n\n\t-\u003e #3 (sysfs_mutex){+.+.+.}:\n\t       [...]\n\n\t-\u003e #2 (\u0026bdev-\u003ebd_mutex){+.+.+.}:\n\t       [...]\n\n\t-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n\t       [...]\n\n\t-\u003e #0 (\u0026mm-\u003emmap_sem){++++++}:\n\t       [...]\n\nOn reiserfs mount path, we take the reiserfs lock and while\ninitializing the journal, we open the device, taking the\nbdev-\u003ebd_mutex. Then rescan_partition() may signal the change\nto sysfs.\n\nWe have then the following dependency:\n\n\treiserfs_lock -\u003e bd_mutex -\u003e sysfs_mutex\n\nLater, while entering reiserfs_readpage() after a pagefault in an\nmmaped reiserfs file, we are holding the mm-\u003emmap_sem, and we are going\nto take the reiserfs lock too.\nWe have then the following dependency:\n\n\tmm-\u003emmap_sem -\u003e reiserfs_lock\n\nwhich, expanded with the previous dependency gives us:\n\n\tmm-\u003emmap_sem -\u003e reiserfs_lock -\u003e bd_mutex -\u003e sysfs_mutex\n\nNow while entering the sysfs readdir path, we are holding the\nsysfs_mutex. And when we copy a directory entry to the user buffer, we\nmight fault and then take the mm-\u003emmap_sem lock. Which leads to the\ncircular locking dependency reported.\n\nWe can fix that by relaxing the reiserfs lock during the call to\njournal_init_dev(), which is the place where we open the mounted\ndevice.\n\nThis is fine to relax the lock here because we are in the begining of\nthe reiserfs mount path and there is nothing to protect at this time,\nthe journal is not intialized.\nWe just keep this lock around for paranoid reasons.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nTested-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "80503185989b2dd84170bb842e23d3fd45ebdf40",
      "tree": "5b1a862071199421ba0427137067b8ed14a0c843",
      "parents": [
        "7e94277050e31aa4204060f03953bba72598cf7d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 04:18:06 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:30 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: panic in case of lock imbalance\n\nUntil now, trying to unlock the reiserfs write lock whereas the current\ntask doesn\u0027t hold it lead to a simple warning.\nWe should actually warn and panic in this case to avoid the user datas\nto reach an unstable state.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "7e94277050e31aa4204060f03953bba72598cf7d",
      "tree": "7a53cd463e76c0ed5e72345152755b5318ad430b",
      "parents": [
        "b10ab4c337a600456ed2d9daea0331016f7cdeeb"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 03:38:12 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:29 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix recursive reiserfs write lock in reiserfs_commit_write()\n\nreiserfs_commit_write() is always called with the write lock held.\nThus the current calls to reiserfs_write_lock() in this function are\nacquiring the lock recursively.\nWe can safely drop them.\n\nThis also solves further assumptions for this lock to be really\nreleased while calling reiserfs_write_unlock().\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "b10ab4c337a600456ed2d9daea0331016f7cdeeb",
      "tree": "6e85b1faea80835b5dcab78bf66d51b529711ada",
      "parents": [
        "ae635c0bbd6c10aa62bf5149c6f41add59fbf4d2"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 02:44:21 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:27 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix recursive reiserfs lock in reiserfs_mkdir()\n\nreiserfs_mkdir() acquires the reiserfs lock, assuming it has been called\nfrom the dir inodes callbacks, without the lock held.\n\nBut it can also be called from other internal sites such as\nreiserfs_xattr_init() which already holds the lock. This recursive\nlocking leads to further wrong assumptions. For example, later calls\nto reiserfs_mutex_lock_safe() won\u0027t actually unlock the reiserfs lock\nthe time we acquire a given mutex, creating unexpected lock inversions.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "ae635c0bbd6c10aa62bf5149c6f41add59fbf4d2",
      "tree": "a8f3ed7ca8452fba1cb153bdb0e2ec98ea5219e1",
      "parents": [
        "08f14fc8963e585e65b71212ce8050607b9b6c36"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 02:24:45 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:26 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix \"reiserfs lock\" / \"inode mutex\" lock inversion dependency\n\nreiserfs_xattr_init is called with the reiserfs write lock held, but\nif the \".reiserfs_priv\" entry is not created, we take the superblock\nroot directory inode mutex until .reiserfs_priv is created.\n\nThis creates a lock dependency inversion against other sites such as\nreiserfs_file_release() which takes an inode mutex and the reiserfs\nlock after.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "08f14fc8963e585e65b71212ce8050607b9b6c36",
      "tree": "04d808f71193df2a90d485fcc0e2604bd8fe8d93",
      "parents": [
        "c72e05756b900b3be24cd73a16de52bab80984c0"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 16 19:10:38 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:25 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: move the concurrent tree accesses checks per superblock\n\nWhen do_balance() balances the tree, a trick is performed to\nprovide the ability for other tree writers/readers to check whether\ndo_balance() is executing concurrently (requires CONFIG_REISERFS_CHECK).\n\nThis is done to protect concurrent accesses to the tree. The trick\nis the following:\n\nWhen do_balance is called, a unique global variable called cur_tb\ntakes a pointer to the current tree to be rebalanced.\nOnce do_balance finishes its work, cur_tb takes the NULL value.\n\nThen, concurrent tree readers/writers just have to check the value\nof cur_tb to ensure do_balance isn\u0027t executing concurrently.\nIf it is, then it proves that schedule() occured on do_balance(),\nwhich then relaxed the bkl that protected the tree.\n\nNow that the bkl has be turned into a mutex, this check is still\nfine even though do_balance() becomes preemptible: the write lock\nwill not be automatically released on schedule(), so the tree is\nstill protected.\n\nBut this is only fine if we have a single reiserfs mountpoint.\nIndeed, because the bkl is a global lock, it didn\u0027t allowed\nconcurrent executions between a tree reader/writer in a mount point\nand a do_balance() on another tree from another mountpoint.\n\nSo assuming all these readers/writers weren\u0027t supposed to be\nreentrant, the current check now sometimes detect false positives with\nthe current per-superblock mutex which allows this reentrancy.\n\nThis patch keeps the concurrent tree accesses check but moves it\nper superblock, so that only trees from a same mount point are\nchecked to be not accessed concurrently.\n\n[ Impact: fix spurious panic while running several reiserfs mount-points ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "c72e05756b900b3be24cd73a16de52bab80984c0",
      "tree": "4fc35ad9efc1a6a9ca14baa3612e551fb4da793e",
      "parents": [
        "2ac626955ed62ee8596f00581f959cc86e6198d1"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 16 18:12:08 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:24 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: acquire the inode mutex safely\n\nWhile searching a pathname, an inode mutex can be acquired\nin do_lookup() which calls reiserfs_lookup() which in turn\nacquires the write lock.\n\nOn the other side reiserfs_fill_super() can acquire the write_lock\nand then call reiserfs_lookup_privroot() which can acquire an\ninode mutex (the root of the mount point).\n\nSo we theoretically risk an AB - BA lock inversion that could lead\nto a deadlock.\n\nAs for other lock dependencies found since the bkl to mutex\nconversion, the fix is to use reiserfs_mutex_lock_safe() which\ndrops the lock dependency to the write lock.\n\n[ Impact: fix a possible deadlock with reiserfs ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "2ac626955ed62ee8596f00581f959cc86e6198d1",
      "tree": "a5bd28e558b889ad7c026199f6032b2ff33f9103",
      "parents": [
        "c63e3c0b2498adec921b06c670d12c8c74b85538"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 14 02:56:39 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:22 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: unlock only when needed in search_by_key\n\nsearch_by_key() is the site which most requires the lock.\nThis is mostly because it is a very central function and also\nbecause it releases/reaqcuires the write lock at least once each\ntime it is called.\n\nSuch release/reacquire creates a lot of contention in this place and\nalso opens more the window which let another thread changing the tree.\nWhen it happens, the current path searching over the tree must be\nretried from the beggining (the root) which is a wasteful and\ntime consuming recovery.\n\nThis patch factorizes two release/reacquire sequences:\n\n- reading leaf nodes blocks\n- reading current block\n\nThe latter immediately follows the former.\n\nThe whole sequence is safe as a single unlocked section because\nwe check just after if the tree has changed during these operations.\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "c63e3c0b2498adec921b06c670d12c8c74b85538",
      "tree": "27ca06415b5fdd51e369361ea8aa8f8e8e1ac741",
      "parents": [
        "d6f5b0aa08078c3dabe377d5b1a6077e9c9352d3"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 20:01:09 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:21 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: use mutex_lock in reiserfs_mutex_lock_safe\n\nreiserfs_mutex_lock_safe() is a hack to avoid any dependency between\nan internal reiserfs mutex and the write lock, it has been proposed\nto follow the old bkl logic.\n\nThe code does the following:\n\nwhile (!mutex_trylock(m)) {\n\treiserfs_write_unlock(s);\n\tschedule();\n\treiserfs_write_lock(s);\n}\n\nIt then imitate the implicit behaviour of the lock when it was\na Bkl and hadn\u0027t such dependency:\n\nmutex_lock(m) {\n\tif (fastpath)\n\t\tlet\u0027s go\n\telse {\n\t\twait_for_mutex() {\n\t\t\tschedule() {\n\t\t\t\tunlock_kernel()\n\t\t\t\treacquire_lock_kernel()\n\t\t\t}\n\t\t}\n\t}\n}\n\nThe problem is that by using such explicit schedule(), we don\u0027t\nbenefit of the adaptive mutex spinning on owner.\n\nThe logic in use now is:\n\nreiserfs_write_unlock(s);\nmutex_lock(m); // -\u003e possible adaptive spinning\nreiserfs_write_lock(s);\n\n[ Impact: restore the use of adaptive spinning mutexes in reiserfs ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "d6f5b0aa08078c3dabe377d5b1a6077e9c9352d3",
      "tree": "b5d6bd99e007c57a6cd4953368202d99a41141cd",
      "parents": [
        "09eb47a7c52ad535aafca889e0b936c445c375ce"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 14:53:52 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:20 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: factorize the locking in reiserfs_write_end()\n\nreiserfs_write_end() is a hot path in reiserfs.\nWe have two wasteful write lock lock/release inside that can be gathered\nwithout changing the code logic.\n\nThis patch factorizes them out in a single protected section, reducing the\nnumber of contentions inside.\n\n[ Impact: reduce lock contention in a reiserfs hotpath ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "09eb47a7c52ad535aafca889e0b936c445c375ce",
      "tree": "81ebee49cb84f29e0aa3d884f6ed9c23ab044218",
      "parents": [
        "b1c839bb2d8d6f1f6bf48f5c657752b4963f88f8"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 14:21:33 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:19 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: reduce number of contentions in search_by_key()\n\nsearch_by_key() is a central function in reiserfs which searches\nthe patch in the fs tree from the root to a node given its key.\n\nIt is the function that is most requesting the write lock\nbecause it\u0027s a path very often used.\n\nAlso we forget to release the lock while reading the next tree node,\nmaking us holding the lock in a wasteful way.\n\nThen we release the lock while reading the current node and its childs,\nall-in-one. It should be safe because we have a reference to these\nblocks and even if we read a block that will be concurrently changed,\nwe have an fs_changed check later that will make us retry the path from\nthe root.\n\n[ Impact: release the write lock while unused in a hot path ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "b1c839bb2d8d6f1f6bf48f5c657752b4963f88f8",
      "tree": "7396e1e56cfe544248d0e21374ab10f4edf6de3a",
      "parents": [
        "26931309a47747fd31b2ef029c29d47794c2d93d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 01:05:06 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:17 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: don\u0027t hold the write recursively in reiserfs_lookup()\n\nThe write lock can be acquired recursively in reiserfs_lookup(). But we may\nwant to *really* release the lock before possible rescheduling from a\nreiserfs_lookup() callee.\n\nHence we want to only acquire the lock once (ie: not recursively).\n\n[ Impact: prevent from possible false unreleased write lock on sleeping ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "26931309a47747fd31b2ef029c29d47794c2d93d",
      "tree": "85b3ba9ee14c6d90243e4590af60e7ef3e72c5ff",
      "parents": [
        "d663af807d8bb226394cb7e02f4665f6141a8140"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 07 23:48:44 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:16 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: lock only once on reiserfs_get_block()\n\nreiserfs_get_block() is one of these sites where the write lock might\nbe acquired recursively.\n\nIt\u0027s a particular problem because this function is called very often.\nIt\u0027s a hot spot which needs to reschedule() periodically while converting\ndirect items to indirect ones because it can take some time.\n\nThen if we are applying the write lock release/reacquire pattern on\nschedule() here, it may not produce the desired effect since we may have\nlocked in more than one depth.\n\nThe solution is to use reiserfs_write_lock_once() which won\u0027t try\nto reacquire the lock recursively. Then the lock will be *really*\nreleased before schedule().\n\nAlso, we only release the lock if TIF_NEED_RESCHED is set to not\ncreate wasteful numerous contentions.\n\n[ Impact: fix a too long holded lock case in reiserfs_get_block() ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "6e3647acb4f200add1d8e0203514f7ac925ae463",
      "tree": "95a779d1f59c04ca58956a49340b88497b476f13",
      "parents": [
        "4c5eface5d0e4eb7f77be346193c2850e7e3b983"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 01 02:27:39 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:13 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock on flush_commit_list()\n\nflush_commit_list() uses ll_rw_block() to commit the pending log blocks.\nll_rw_block() might sleep, and the bkl was released at this point. Then\nwe can also relax the write lock at this point.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "4c5eface5d0e4eb7f77be346193c2850e7e3b983",
      "tree": "f827eb485149bc52974a41a8d0b5f1d553953fb5",
      "parents": [
        "148d3504c1d9f964cf14fafc46d2b7d1f0bed2b1"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 01 01:44:57 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:11 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock inside reiserfs_read_bitmap_block()\n\nreiserfs_read_bitmap_block() uses sb_bread() to read the bitmap block. This\nhelper might sleep.\n\nThen, when the bkl was used, it was released at this point. We can then\nrelax the write lock too here.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "148d3504c1d9f964cf14fafc46d2b7d1f0bed2b1",
      "tree": "6b17f1361099e8b579d10e892a8d919eae037354",
      "parents": [
        "5e69e3a4492ea5abfd2e8ddc575448becf28e4d9"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 01 01:10:52 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:10 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock inside get_neighbors()\n\nget_neighbors() is used to get the left and/or right blocks\nagainst a given one in order to balance a tree.\n\nsb_bread() is used to read the buffer of these neighors blocks and\nwhile it waits for this operation, it might sleep.\n\nThe bkl was released at this point, and then we can also release\nthe write lock before calling sb_bread().\n\nThis is safe because if the filesystem is changed after this\nlock release, the function returns REPEAT_SEARCH (aka SCHEDULE_OCCURRED\nin the function header comments) in order to repeat the neighbhor\nresearch.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "5e69e3a4492ea5abfd2e8ddc575448becf28e4d9",
      "tree": "85cad0034222ceef31241e7c0e406bc76aca0186",
      "parents": [
        "e6950a4da33fa84ef4402d29e2331cd5e5df9cb8"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Apr 30 23:36:33 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:09 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release write lock while rescheduling on prepare_for_delete_or_cut()\n\nprepare_for_delete_or_cut() can process several types of items, including\nindirect items, ie: items which contain no file data but pointers to\nunformatted nodes scattering the datas of a file.\n\nIn this case it has to zero out these pointers to block numbers of\nunformatted nodes and release the bitmap from these block numbers.\n\nIt can take some time, so a rescheduling() is performed between each\nblock processed. We can safely release the write lock while\nrescheduling(), like the bkl did, because the code checks just after\nif the item has moved after sleeping.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "e6950a4da33fa84ef4402d29e2331cd5e5df9cb8",
      "tree": "05650bb6b4fc7c148253dd3c7c4222c2783f84d3",
      "parents": [
        "f32049dc244f4d394c8faa161b4f13cb8c4f5c8c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Apr 30 23:04:32 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:08 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock before rescheduling on do_journal_end()\n\nWhen do_journal_end() copies data to the journal blocks buffers in memory,\nit reschedules if needed between each block copied and dirtyfied.\n\nWe can also release the write lock at this rescheduling stage,\nlike did the bkl implicitly.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "dc8f6d8936eb244eea452af689df5ee19e635206",
      "tree": "c93624678a2d2821c78048f6f7db19889eac5b3a",
      "parents": [
        "22c963addcf426bef97a43f6e601f985f8082ed5"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 05:34:25 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:04 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: only acquire the write lock once in reiserfs_dirty_inode\n\nImpact: fix a deadlock\n\nreiserfs_dirty_inode() is the super_operations::dirty_inode() callback\nof reiserfs. It can be called from different contexts where the write\nlock can be already held.\n\nBut this function also grab the write lock (possibly recursively).\nSubsequent release of the lock before sleep will actually not release\nthe lock if the caller of mark_inode_dirty() (which in turn calls\nreiserfs_dirty_inode()) already owns the lock.\n\nA typical case:\n\nreiserfs_write_end() {\n\tacquire_write_lock()\n\tmark_inode_dirty() {\n\t\treiserfs_dirty_inode() {\n\t\t\treacquire_write_lock() {\n\t\t\t\tjournal_begin() {\n\t\t\t\t\tdo_journal_begin_r() {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * fail to release, still\n\t\t\t\t\t\t * one depth of lock\n\t\t\t\t\t\t */\n\t\t\t\t\t\trelease_write_lock()\n\t\t\t\t\t\treiserfs_wait_on_write_block() {\n\t\t\t\t\t\t\twait_event()\n\nThe event is usually provided by something which needs the write lock but\nit hasn\u0027t been released.\n\nWe use reiserfs_write_lock_once() here to ensure we only grab the\nwrite lock in one level.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nLKML-Reference: \u003c1239680065-25013-4-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "22c963addcf426bef97a43f6e601f985f8082ed5",
      "tree": "f71ae95fd1eee899c446ebb03a3cc02fe24daf3c",
      "parents": [
        "daf88c898312a22b5385655bc6e0b064eaa2efba"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 05:34:24 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:03 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: lock only once in reiserfs_truncate_file\n\nImpact: fix a deadlock\n\nreiserfs_truncate_file() can be called from multiple context where\nthe write lock can be already hold or not.\n\nThis function also acquire (possibly recursively) the write\nlock. Subsequent releases before sleeping will not actually release\nthe lock because we may be in more than one lock depth degree.\n\nA typical case is:\n\nreiserfs_file_release {\n\tacquire_the_lock()\n\treiserfs_truncate_file()\n\t\treacquire_the_lock()\n\t\tjournal_begin() {\n\t\t\tdo_journal_begin_r() {\n\t\t\t\treiserfs_wait_on_write_block() {\n\t\t\t\t\t/*\n\t\t\t\t\t * Not released because still one\n\t\t\t\t\t * depth owned\n\t\t\t\t\t */\n\t\t\t\t\trelease_lock()\n\t\t\t\t\twait_for_event()\n\nAt this stage the event never happen because the one which provides\nit needs the write lock.\n\nWe use reiserfs_write_lock_once() here to ensure that we don\u0027t acquire the\nwrite lock recursively.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nLKML-Reference: \u003c1239680065-25013-3-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "daf88c898312a22b5385655bc6e0b064eaa2efba",
      "tree": "016c432fc26c174d5aee3647e54f2aafb690dceb",
      "parents": [
        "a412f9efdd6424bf4bf28c8e8c92060b5e975482"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 05:34:23 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:02 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: provide a tool to lock only once the write lock\n\nSometimes we don\u0027t want to recursively hold the per superblock write\nlock because we want to be sure it is actually released when we come\nto sleep.\n\nThis patch introduces the necessary tools for that.\n\nreiserfs_write_lock_once() does the same job than reiserfs_write_lock()\nexcept that it won\u0027t try to acquire recursively the lock if the current\ntask already owns it. Also the lock_depth before the call of this function\nis returned.\n\nreiserfs_write_unlock_once() unlock only if reiserfs_write_lock_once()\nreturned a depth equal to -1, ie: only if it actually locked.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nLKML-Reference: \u003c1239680065-25013-2-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a412f9efdd6424bf4bf28c8e8c92060b5e975482",
      "tree": "b290d38a85c4b675af426dbd8593768bc5339fa1",
      "parents": [
        "8ebc423238341b52912c7295b045a32477b33f09"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 00:10:35 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:01 2009 +0200"
      },
      "message": "reiserfs, kill-the-BKL: fix unsafe j_flush_mutex lock\n\nImpact: fix a deadlock\n\nThe j_flush_mutex is acquired safely in journal.c:\nif we can\u0027t take it, we free the reiserfs per superblock lock\nand wait a bit.\n\nBut we have a remaining place in kupdate_transactions() where\nj_flush_mutex is still acquired traditionnaly. Thus the following\nscenario (warned by lockdep) can happen:\n\nA\t\t\t\t\t\tB\n\nmutex_lock(\u0026write_lock)\t\t\tmutex_lock(\u0026write_lock)\n\tmutex_lock(\u0026j_flush_mutex)\tmutex_lock(\u0026j_flush_mutex) //block\n\tmutex_unlock(\u0026write_lock)\n\tsleep...\n\tmutex_lock(\u0026write_lock) //deadlock\n\nFix this by using reiserfs_mutex_lock_safe() in kupdate_transactions().\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nLKML-Reference: \u003c1239660635-12940-1-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8ebc423238341b52912c7295b045a32477b33f09",
      "tree": "39677401de0df98c09ca888c87d85033b6fe93c9",
      "parents": [
        "74fca6a42863ffacaf7ba6f1936a9f228950f657"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 07 04:19:49 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:17:59 2009 +0200"
      },
      "message": "reiserfs: kill-the-BKL\n\nThis patch is an attempt to remove the Bkl based locking scheme from\nreiserfs and is intended.\n\nIt is a bit inspired from an old attempt by Peter Zijlstra:\n\n   http://lkml.indiana.edu/hypermail/linux/kernel/0704.2/2174.html\n\nThe bkl is heavily used in this filesystem to prevent from\nconcurrent write accesses on the filesystem.\n\nReiserfs makes a deep use of the specific properties of the Bkl:\n\n- It can be acqquired recursively by a same task\n- It is released on the schedule() calls and reacquired when schedule() returns\n\nThe two properties above are a roadmap for the reiserfs write locking so it\u0027s\nvery hard to simply replace it with a common mutex.\n\n- We need a recursive-able locking unless we want to restructure several blocks\n  of the code.\n- We need to identify the sites where the bkl was implictly relaxed\n  (schedule, wait, sync, etc...) so that we can in turn release and\n  reacquire our new lock explicitly.\n  Such implicit releases of the lock are often required to let other\n  resources producer/consumer do their job or we can suffer unexpected\n  starvations or deadlocks.\n\nSo the new lock that replaces the bkl here is a per superblock mutex with a\nspecific property: it can be acquired recursively by a same task, like the\nbkl.\n\nFor such purpose, we integrate a lock owner and a lock depth field on the\nsuperblock information structure.\n\nThe first axis on this patch is to turn reiserfs_write_(un)lock() function\ninto a wrapper to manage this mutex. Also some explicit calls to\nlock_kernel() have been converted to reiserfs_write_lock() helpers.\n\nThe second axis is to find the important blocking sites (schedule...(),\nwait_on_buffer(), sync_dirty_buffer(), etc...) and then apply an explicit\nrelease of the write lock on these locations before blocking. Then we can\nsafely wait for those who can give us resources or those who need some.\nTypically this is a fight between the current writer, the reiserfs workqueue\n(aka the async commiter) and the pdflush threads.\n\nThe third axis is a consequence of the second. The write lock is usually\non top of a lock dependency chain which can include the journal lock, the\nflush lock or the commit lock. So it\u0027s dangerous to release and trying to\nreacquire the write lock while we still hold other locks.\n\nThis is fine with the bkl:\n\n      T1                       T2\n\nlock_kernel()\n    mutex_lock(A)\n    unlock_kernel()\n    // do something\n                            lock_kernel()\n                                mutex_lock(A) -\u003e already locked by T1\n                                schedule() (and then unlock_kernel())\n    lock_kernel()\n    mutex_unlock(A)\n    ....\n\nThis is not fine with a mutex:\n\n      T1                       T2\n\nmutex_lock(write)\n    mutex_lock(A)\n    mutex_unlock(write)\n    // do something\n                           mutex_lock(write)\n                              mutex_lock(A) -\u003e already locked by T1\n                              schedule()\n\n    mutex_lock(write) -\u003e already locked by T2\n    deadlock\n\nThe solution in this patch is to provide a helper which releases the write\nlock and sleep a bit if we can\u0027t lock a mutex that depend on it. It\u0027s another\nsimulation of the bkl behaviour.\n\nThe last axis is to locate the fs callbacks that are called with the bkl held,\naccording to Documentation/filesystem/Locking.\n\nThose are:\n\n- reiserfs_remount\n- reiserfs_fill_super\n- reiserfs_put_super\n\nReiserfs didn\u0027t need to explicitly lock because of the context of these callbacks.\nBut now we must take care of that with the new locking.\n\nAfter this patch, reiserfs suffers from a slight performance regression (for now).\nOn UP, a high volume write with dd reports an average of 27 MB/s instead\nof 30 MB/s without the patch applied.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Bron Gondwana \u003cbrong@fastmail.fm\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nLKML-Reference: \u003c1239070789-13354-1-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8aa7e847d834ed937a9ad37a0f2ad5b8584c1ab0",
      "tree": "76c8b4f1362a928d426f2201790ab5d128f57724",
      "parents": [
        "c2cc49a2f8a479dde96a599646d30b6cc9dbed78"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 09 14:52:32 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 10 20:31:53 2009 +0200"
      },
      "message": "Fix congestion_wait() sync/async vs read/write confusion\n\nCommit 1faa16d22877f4839bd433547d770c676d1d964c accidentally broke\nthe bdi congestion wait queue logic, causing us to wait on congestion\nfor WRITE (\u003d\u003d 1) when we really wanted BLK_RW_ASYNC (\u003d\u003d 0) instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b43f3cbd21ffbd719fd4fa6642bfe6af255ded34",
      "tree": "f09372f7aa3057a4cca32d5c7fc19032bd7cda5a",
      "parents": [
        "622f8061a68d3f7a576c20a47b7f3bae7c8cfbef"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jul 08 01:54:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 08 09:31:56 2009 -0700"
      },
      "message": "headers: mnt_namespace.h redux\n\nFix various silly problems wrt mnt_namespace.h:\n\n - exit_mnt_ns() isn\u0027t used, remove it\n - done that, sched.h and nsproxy.h inclusions aren\u0027t needed\n - mount.h inclusion was need for vfsmount_lock, but no longer\n - remove mnt_namespace.h inclusion from files which don\u0027t use anything\n   from mnt_namespace.h\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "073aaa1b142461d91f83da66db1184d7c1b1edea",
      "tree": "2b54d185d78f1229418fca521a93e6b55c57248b",
      "parents": [
        "06b16e9f68edaa1e71aee943d3c030bcf7380af1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 09 12:11:54 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:07 2009 -0400"
      },
      "message": "helpers for acl caching + switch to those\n\nhelpers: get_cached_acl(inode, type), set_cached_acl(inode, type, acl),\nforget_cached_acl(inode, type).\n\nubifs/xattr.c needed includes reordered, the rest is a plain switchover.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "281eede0328c84a8f20e0e85b807d5b51c3de4f2",
      "tree": "9eb0184c7066f27593f2fd75db1593bf688c330f",
      "parents": [
        "7a77b15d9294749809de918e24bebc39e0fbc9ab"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 21:07:04 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:06 2009 -0400"
      },
      "message": "switch reiserfs to inode-\u003ei_acl\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7a77b15d9294749809de918e24bebc39e0fbc9ab",
      "tree": "d5e0d6d46dbcfece1c99854fbfc642e671d12b53",
      "parents": [
        "e68888bcb60ccba4dc21df9f2d8cd7325b64dce7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 21:01:13 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:06 2009 -0400"
      },
      "message": "switch reiserfs to usual conventions for caching ACLs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e68888bcb60ccba4dc21df9f2d8cd7325b64dce7",
      "tree": "bbdf38e109cc6f3533525a88c88b8e570b12ff4d",
      "parents": [
        "d441b1c293149212045de00f346c8ea6cd41cce4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 20:46:54 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:05 2009 -0400"
      },
      "message": "reiserfs: minimal fix for ACL caching\n\nreiserfs uses NULL as \"unknown\" and ERR_PTR(-ENODATA) as \"no ACL\";\nseveral codepaths store the former instead of the latter.\n\nAll those codepaths go through iset_acl() and all cases when it\u0027s\ncalled with NULL acl are for the second variety, so the minimal\nfix is to teach iset_acl() to deal with that.\n\nProper fix is to switch to more usual conventions and avoid back\nand forth between internally used ERR_PTR(-ENODATA) and NULL\nexpected by the rest of the kernel.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b5450d9c84bdd38b261922057cd167da51dfae93",
      "tree": "ddcbeec84c3b48ecaa45bf1bf6add04eaa20f524",
      "parents": [
        "4e8a2372f9255a1464ef488ed925455f53fbdaa1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 19 10:30:07 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:15:24 2009 -0400"
      },
      "message": "reiserfs: remove stray unlock_super in reiserfs_resize\n\nReiserfs doesn\u0027t use lock_super anywhere internally, and -\u003eremount_fs\nwhich calls reiserfs_resize does have it currently but also expects it\nto be held on return, so there\u0027s no business for the unlock_super here.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked by Edward Shishkin \u003cedward.shishkin@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1d965fe0eb435b3f9a10538815f6a68de0aef03c",
      "tree": "67859aad430ba6e83be86ad227b704d31e0a818e",
      "parents": [
        "37044c86baf8cb894c69bb811e35a7f6f6dbce1c"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@jeffreymahoney.com",
        "time": "Wed Jun 17 16:26:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:46 2009 -0700"
      },
      "message": "reiserfs: fix warnings with gcc 4.4\n\nSeveral code paths in reiserfs have a construct like:\n\n if (is_direntry_le_ih(ih \u003d B_N_PITEM_HEAD(src, item_num))) ...\n\nwhich, in addition to being ugly, end up causing compiler warnings with\ngcc 4.4.0.  Previous compilers didn\u0027t issue a warning.\n\nfs/reiserfs/do_balan.c:1273: warning: operation on `aux_ih\u0027 may be undefined\nfs/reiserfs/lbalance.c:393: warning: operation on `ih\u0027 may be undefined\nfs/reiserfs/lbalance.c:421: warning: operation on `ih\u0027 may be undefined\nfs/reiserfs/lbalance.c:777: warning: operation on `ih\u0027 may be undefined\n\nI believe this is due to the ih being passed to macros which evaluate the\nargument more than once.  This is old code and we haven\u0027t seen any\nproblems with it, but this patch eliminates the warnings.\n\nIt converts the multiple evaluation macros to static inlines and does a\npreassignment for the cases that were causing the warnings because that\ncode is just ugly.\n\nReported-by: Chris Mason \u003cmason@oracle.com\u003e\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "337eb00a2c3a421999c39c94ce7e33545ee8baa7",
      "tree": "d9b780d095b638b1d8fa23841ff70347cf5daa08",
      "parents": [
        "4195f73d1329e49727bcceb028e58cb38376c2b0"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@texware.it",
        "time": "Tue May 12 15:10:54 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:11 2009 -0400"
      },
      "message": "Push BKL down into -\u003eremount_fs()\n\n[xfs, btrfs, capifs, shmem don\u0027t need BKL, exempt]\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6cfd0148425e528b859b26e436b01f23f6926224",
      "tree": "60e3257053554ff198fe5825e6f12a00c3b4422a",
      "parents": [
        "a9e220f8322e2b0e0b8903fe00265461cffad3f0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 05 15:40:36 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:07 2009 -0400"
      },
      "message": "push BKL down into -\u003eput_super\n\nMove BKL into -\u003eput_super from the only caller.  A couple of\nfilesystems had trivial enough -\u003eput_super (only kfree and NULLing of\ns_fs_info + stuff in there) to not get any locking: coda, cramfs, efs,\nhugetlbfs, omfs, qnx4, shmem, all others got the full treatment.  Most\nof them probably don\u0027t need it, but I\u0027d rather sort that out individually.\nPreferably after all the other BKL pushdowns in that area.\n\n[AV: original used to move lock_super() down as well; these changes are\nremoved since we don\u0027t do lock_super() at all in generic_shutdown_super()\nnow]\n[AV: fuse, btrfs and xfs are known to need no damn BKL, exempt]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5af7926ff33b68b3ba46531471c6e0564b285efc",
      "tree": "a25266f9db482ce9dd8e663148ffb0f1a524bd83",
      "parents": [
        "e5004753388dcf5e1b8a52ac0ab807d232340fbb"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 05 15:41:25 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:06 2009 -0400"
      },
      "message": "enforce -\u003esync_fs is only called for rw superblock\n\nMake sure a superblock really is writeable by checking MS_RDONLY\nunder s_umount.  sync_filesystems needed some re-arragement for\nthat, but all but one sync_filesystem caller had the correct locking\nalready so that we could add that check there.  cachefiles grew\ns_umount locking.\n\nI\u0027ve also added a WARN_ON to sync_filesystem to assert this for\nfuture callers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8c85e125124a473d6f3e9bb187b0b84207f81d91",
      "tree": "d883424a156c00c55193e46567efdffddb6ef6b9",
      "parents": [
        "517bfae28353e996160518add4d00033d3886e61"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Apr 28 18:00:26 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:06 2009 -0400"
      },
      "message": "remove -\u003ewrite_super call in generic_shutdown_super\n\nWe just did a full fs writeout using sync_filesystem before, and if\nthat\u0027s not enough for the filesystem it can perform it\u0027s own writeout\nin -\u003eput_super, which many filesystems already do.\n\nMove a call to foofs_write_super into every foofs_put_super for now to\nguarantee identical behaviour until it\u0027s cleaned up by the individual\nfilesystem maintainers.\n\nExceptions:\n\n - affs already has identical copy \u0026 pasted code at the beginning of\n   affs_put_super so no need to do it twice.\n - xfs does the right thing without it and I have changes pending for\n   the xfs tree touching this are so I don\u0027t really need conflicts\n   here..\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "73422811d290c628b4ddbf6830e5cd6fa42e84f1",
      "tree": "9308c36ee82a8217b02848372896209335c69575",
      "parents": [
        "a525890cb6a2949b644d212ae290b658967d3919"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun May 10 16:05:39 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:35:58 2009 -0400"
      },
      "message": "reiserfs: allow exposing privroot w/ xattrs enabled\n\nThis patch adds an -oexpose_privroot option to allow access to the privroot.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b83674c0da6558e357c6b482ccf299eeea77d8ef",
      "tree": "22f71c1f3f099887b53884a9cabbb6aaeb3bc0a6",
      "parents": [
        "ceb5edc457f07956c82dccfb54ca8ae7e2a399f0"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun May 17 01:02:03 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 17 11:45:45 2009 -0700"
      },
      "message": "reiserfs: fixup perms when xattrs are disabled\n\nThis adds CONFIG_REISERFS_FS_XATTR protection from reiserfs_permission.\n\nThis is needed to avoid warnings during file deletions and chowns with\nxattrs disabled.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ceb5edc457f07956c82dccfb54ca8ae7e2a399f0",
      "tree": "0b58e5a5e359090e47583ec0b49e7b29af0b2179",
      "parents": [
        "12abb35a03e32c97235fcefdcf2d851be9f82dc2"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun May 17 01:02:02 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 17 11:45:45 2009 -0700"
      },
      "message": "reiserfs: deal with NULL xattr root w/ xattrs disabled\n\nThis avoids an Oops in open_xa_root that can occur when deleting a file\nwith xattrs disabled.  It assumes that the xattr root will be there, and\nthat is not guaranteed.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "12abb35a03e32c97235fcefdcf2d851be9f82dc2",
      "tree": "b415acb9230b775a899252f9fc7b66b14092911e",
      "parents": [
        "bba0b4ec3cd6c52cb778af34ad70f6cc3aec1c7e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun May 17 01:02:01 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 17 11:45:45 2009 -0700"
      },
      "message": "reiserfs: clean up ifdefs\n\nWith xattr cleanup even with xattrs disabled, much of the initial setup\nis still performed.  Some #ifdefs are just not needed since the options\nthey protect wouldn\u0027t be available anyway.\n\nThis cleans those up.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a32cebd6cbcc43996c3e2d114fa32ba1e71192a",
      "tree": "0ad94849a7bc3e97cd19978005d1898c8bb44b36",
      "parents": [
        "f9dbd05bc97d1d4f17c2057612f6a8e4dbd039e0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 08 16:05:57 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:51:34 2009 -0400"
      },
      "message": "Fix races around the access to -\u003es_options\n\nPut generic_show_options read access to s_options under rcu_read_lock,\nsplit save_mount_options() into \"we are setting it the first time\"\n(uses in foo_fill_super()) and \"we are relacing and freeing the old one\",\nsynchronize_rcu() before kfree() in the latter.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "677c9b2e393a0cd203bd54e9c18b012b2c73305a",
      "tree": "575d3f70bb9fbf12171ff526909b68377bede67b",
      "parents": [
        "b82bb72ba7df473461c5e2368a4e7497c8ce76e9"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Tue May 05 15:30:17 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:39 2009 -0400"
      },
      "message": "reiserfs: remove privroot hiding in lookup\n\n With Al Viro\u0027s patch to move privroot lookup to fs mount, there\u0027s no need\n to have special code to hide the privroot in reiserfs_lookup.\n\n I\u0027ve also cleaned up the privroot hiding in reiserfs_readdir_dentry and\n removed the last user of reiserfs_xattrs().\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b82bb72ba7df473461c5e2368a4e7497c8ce76e9",
      "tree": "e68e065466cbe333174cf24f3d1ffc39ddceb56d",
      "parents": [
        "ab17c4f02156c4f75d7fa43a5aa2a7f942d47201"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Tue May 05 15:30:16 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:39 2009 -0400"
      },
      "message": "reiserfs: dont associate security.* with xattr files\n\n The security.* xattrs are ignored for xattr files, so don\u0027t create them.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ab17c4f02156c4f75d7fa43a5aa2a7f942d47201",
      "tree": "20ff8ec91144d20966ac70adb24bd3372e3508c4",
      "parents": [
        "edcc37a0478836b4a51eafb1bcec6a52708f681d"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Tue May 05 15:30:15 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:39 2009 -0400"
      },
      "message": "reiserfs: fixup xattr_root caching\n\n The xattr_root caching was broken from my previous patch set. It wouldn\u0027t\n cause corruption, but could cause decreased performance due to allocating\n a larger chunk of the journal (~ 27 blocks) than it would actually use.\n\n This patch loads the xattr root dentry at xattr initialization and creates\n it on-demand. Since we\u0027re using the cached dentry, there\u0027s no point\n in keeping lookup_or_create_dir around, so that\u0027s removed.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "edcc37a0478836b4a51eafb1bcec6a52708f681d",
      "tree": "95294fa607420d760823401a6c6e7d9deb698bb1",
      "parents": [
        "5a6059c358d3b3004cb6b8562e3b049b1f8564f9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun May 03 06:00:05 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:38 2009 -0400"
      },
      "message": "Always lookup priv_root on reiserfs mount and keep it\n\n... even if it\u0027s a negative dentry.  That way we can set -\u003ed_op on\nroot before anyone could race with us.  Simplify d_compare(), while\nwe are at it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5a6059c358d3b3004cb6b8562e3b049b1f8564f9",
      "tree": "3c0d0bfabc7545963c0d618afbe4bd483b7c6166",
      "parents": [
        "67e55205ec55cc7899f1d783f217961596798419"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Fri May 01 12:11:12 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:38 2009 -0400"
      },
      "message": "reiserfs: Expand i_mutex to enclose lookup_one_len\n\n 2.6.30-rc3 introduced some sanity checks in the VFS code to avoid NFS\n bugs by ensuring that lookup_one_len is always called under i_mutex.\n\n This patch expands the i_mutex locking to enclose lookup_one_len. This was\n always required, but not not enforced in the reiserfs code since it\n does locking around the xattr interactions with the xattr_sem.\n\n This is obvious enough, and it survived an overnight 50 thread ACL test.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8fe74cf053de7ad2124a894996f84fa890a81093",
      "tree": "77dcd8fbf33ce53a3821942233962fb28c6f2848",
      "parents": [
        "c2eb2fa6d2b6fe122d3479ec5b28d978418b2698",
        "ced117c73edc917e96dea7cca98c91383f0792f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  Remove two unneeded exports and make two symbols static in fs/mpage.c\n  Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225\n  Trim includes of fdtable.h\n  Don\u0027t crap into descriptor table in binfmt_som\n  Trim includes in binfmt_elf\n  Don\u0027t mess with descriptor table in load_elf_binary()\n  Get rid of indirect include of fs_struct.h\n  New helper - current_umask()\n  check_unsafe_exec() doesn\u0027t care about signal handlers sharing\n  New locking/refcounting for fs_struct\n  Take fs_struct handling to new file (fs/fs_struct.c)\n  Get rid of bumping fs_struct refcount in pivot_root(2)\n  Kill unsharing fs_struct in __set_personality()\n"
    },
    {
      "commit": "651d0623045d3265a21ab9803b3a1e0f24a17461",
      "tree": "dcfe9c374fcf7f36601a870837f19877d926f9aa",
      "parents": [
        "5b76dc066a4deb937665521566f89aead756f049"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:10 2009 -0700"
      },
      "message": "fs/reiserfs: return f_fsid for statfs(2)\n\nMake reiserfs3 return f_fsid info for statfs(2).  By Andreas\u0027 suggestion,\nthis patch populates a persistent f_fsid between boots/mounts with help of\non-disk uuid record.\n\nRandy Dunlap reported a compiling error from v2 patch like:\n    fs/built-in.o: In function `reiserfs_statfs\u0027:\n    super.c:(.text+0x7332b): undefined reference to `crc32_le\u0027\n    super.c:(.text+0x7333f): undefined reference to `crc32_le\u0027\nAlso he provided helpful solution to fix this error. The modification of v3\npatch is based on Randy\u0027s suggestion, add \u0027select CRC32\u0027 in fs/reiserfs/Kconfig.\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48",
      "tree": "ab952affafe18e604f6aaf6b13315b9435588e60",
      "parents": [
        "f1191b50ec11c8e2ca766d6d99eb5bb9d2c084a3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:08:22 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "New helper - current_umask()\n\ncurrent-\u003efs-\u003eumask is what most of fs_struct users are doing.\nPut that into a helper function.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cf2f7d7c90279cdbc12429de278f3d27ac2050ae",
      "tree": "c84bb54712f566e6497ccadd1ae9f42b4baf0c63",
      "parents": [
        "53d8f67082c9b86699dd88b7f9e667e245193f21",
        "a9caa3de249a6c43bc9c6aec87881f09276677e3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 16:06:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 16:06:04 2009 -0700"
      },
      "message": "Merge branch \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc\n\n* \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc:\n  Revert \"proc: revert /proc/uptime to -\u003eread_proc hook\"\n  proc 2/2: remove struct proc_dir_entry::owner\n  proc 1/2: do PDE usecounting even for -\u003eread_proc, -\u003ewrite_proc\n  proc: fix sparse warnings in pagemap_read()\n  proc: move fs/proc/inode-alloc.txt comment into a source file\n"
    },
    {
      "commit": "3a355cc61d41bc31cc23a57247df63dba80a6018",
      "tree": "cf39d0b861fa8a33b748a95f3c86bbb33d9c2dac",
      "parents": [
        "77e465867080c2d1e0c410e96dcdcd51e8584a6f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 16:49:58 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 14:28:58 2009 -0700"
      },
      "message": "reiserfs: xattr_create is unused with xattrs disabled\n\nThis patch ifdefs xattr_create when xattrs aren\u0027t enabled.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99b76233803beab302123d243eea9e41149804f3",
      "tree": "398178210fe66845ccd6fa4258ba762a87e023ad",
      "parents": [
        "3dec7f59c370c7b58184d63293c3dc984d475840"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Mar 25 22:48:06 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:44 2009 +0400"
      },
      "message": "proc 2/2: remove struct proc_dir_entry::owner\n\nSetting -\u003eowner as done currently (pde-\u003eowner \u003d THIS_MODULE) is racy\nas correctly noted at bug #12454. Someone can lookup entry with NULL\n-\u003eowner, thus not pinning enything, and release it later resulting\nin module refcount underflow.\n\nWe can keep -\u003eowner and supply it at registration time like -\u003eproc_fops\nand -\u003edata.\n\nBut this leaves -\u003eowner as easy-manipulative field (just one C assignment)\nand somebody will forget to unpin previous/pin current module when\nswitching -\u003eowner. -\u003eproc_fops is declared as \"const\" which should give\nsome thoughts.\n\n-\u003eread_proc/-\u003ewrite_proc were just fixed to not require -\u003eowner for\nprotection.\n\nrmmod\u0027ed directories will be empty and return \".\" and \"..\" -- no harm.\nAnd directories with tricky enough readdir and lookup shouldn\u0027t be modular.\nWe definitely don\u0027t want such modular code.\n\nRemoving -\u003eowner will also make PDE smaller.\n\nSo, let\u0027s nuke it.\n\nKudos to Jeff Layton for reminding about this, let\u0027s say, oversight.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12454\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "e1c502482853f84606928f5a2f2eb6da1993cda1",
      "tree": "ca296007164906342a195bdf3a5305277e6af5da",
      "parents": [
        "019abbc87025a030fd25008612afd4eff8a375f7",
        "ee93961be1faddf9e9a638bc519145c20f0cfeba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:29:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:33:01 2009 -0700"
      },
      "message": "Merge branch \u0027reiserfs-updates\u0027 from Jeff Mahoney\n\n* reiserfs-updates: (35 commits)\n  reiserfs: rename [cn]_* variables\n  reiserfs: rename p_._ variables\n  reiserfs: rename p_s_tb to tb\n  reiserfs: rename p_s_inode to inode\n  reiserfs: rename p_s_bh to bh\n  reiserfs: rename p_s_sb to sb\n  reiserfs: strip trailing whitespace\n  reiserfs: cleanup path functions\n  reiserfs: factor out buffer_info initialization\n  reiserfs: add atomic addition of selinux attributes during inode creation\n  reiserfs: use generic readdir for operations across all xattrs\n  reiserfs: journaled xattrs\n  reiserfs: use generic xattr handlers\n  reiserfs: remove i_has_xattr_dir\n  reiserfs: make per-inode xattr locking more fine grained\n  reiserfs: eliminate per-super xattr lock\n  reiserfs: simplify xattr internal file lookups/opens\n  reiserfs: Clean up xattrs when REISERFS_FS_XATTR is unset\n  reiserfs: remove IS_PRIVATE helpers\n  reiserfs: remove link detection code\n  ...\n\nFixed up conflicts manually due to:\n - quota name cleanups vs variable naming changes:\n\tfs/reiserfs/inode.c\n\tfs/reiserfs/namei.c\n\tfs/reiserfs/stree.c\n        fs/reiserfs/xattr.c\n - exported include header cleanups\n\tinclude/linux/reiserfs_fs.h\n"
    },
    {
      "commit": "ee93961be1faddf9e9a638bc519145c20f0cfeba",
      "tree": "9c62f05dca9ea72c2b419a7f1f9d5874b587e5ab",
      "parents": [
        "d68caa9530a8ba54f97002e02bf6a0ad2462b8c0"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:50 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:40 2009 -0700"
      },
      "message": "reiserfs: rename [cn]_* variables\n\nThis patch renames n_, c_, etc variables to something more sane.  This\nis the sixth in a series of patches to rip out some of the awful\nvariable naming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d68caa9530a8ba54f97002e02bf6a0ad2462b8c0",
      "tree": "39a2b877483270253f95f3678a4559e9bd5524e8",
      "parents": [
        "a063ae17925cafabe55ebe1957ca0e8c480bd132"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:49 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:40 2009 -0700"
      },
      "message": "reiserfs: rename p_._ variables\n\nThis patch is a simple s/p_._//g to the reiserfs code.  This is the\nfifth in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a063ae17925cafabe55ebe1957ca0e8c480bd132",
      "tree": "85d8797ec51124d33398a15a5a8d5a6b81e3a36f",
      "parents": [
        "995c762ea486b48c9777522071fbf132dea96807"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:48 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:40 2009 -0700"
      },
      "message": "reiserfs: rename p_s_tb to tb\n\nThis patch is a simple s/p_s_tb/tb/g to the reiserfs code.  This is the\nfourth in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "995c762ea486b48c9777522071fbf132dea96807",
      "tree": "d6d82ca71ca67a98687762b83ce2858eb8dc624f",
      "parents": [
        "ad31a4fc0386e8590c51ca4b8f1ae1d8b8b2ac5e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:47 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: rename p_s_inode to inode\n\nThis patch is a simple s/p_s_inode/inode/g to the reiserfs code.  This\nis the third in a series of patches to rip out some of the awful\nvariable naming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ad31a4fc0386e8590c51ca4b8f1ae1d8b8b2ac5e",
      "tree": "636010f3ba98e15245f04ade1a74a730e40abf57",
      "parents": [
        "a9dd364358fbdc68faee5d20c2d648c320dc3cf0"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:46 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: rename p_s_bh to bh\n\nThis patch is a simple s/p_s_bh/bh/g to the reiserfs code.  This is the\nsecond in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "a9dd364358fbdc68faee5d20c2d648c320dc3cf0"
}
