)]}'
{
  "commit": "6946bd636364effce06ea46fe8f8cd6e2edb004e",
  "tree": "f910a0c27dbb36ad94e228c9a7509051c2ce57ae",
  "parents": [
    "7334bb4ae931159384acf168eacb0d5d6e0d083c"
  ],
  "author": {
    "name": "Peter Zijlstra",
    "email": "a.p.zijlstra@chello.nl",
    "time": "Sun Aug 27 01:23:31 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sun Aug 27 11:01:29 2006 -0700"
  },
  "message": "[PATCH] lockdep: fix blkdev_open() warning\n\nOn Wed, 2006-08-09 at 07:57 +0200, Rolf Eike Beer wrote:\n\u003e \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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\u003e [ INFO: possible recursive locking detected ]\n\u003e ---------------------------------------------\n\u003e parted/7929 is trying to acquire lock:\n\u003e  (\u0026bdev-\u003ebd_mutex){--..}, at: [\u003cc105eb8d\u003e] __blkdev_put+0x1e/0x13c\n\u003e\n\u003e but task is already holding lock:\n\u003e  (\u0026bdev-\u003ebd_mutex){--..}, at: [\u003cc105eec6\u003e] do_open+0x72/0x3a8\n\u003e\n\u003e other info that might help us debug this:\n\u003e 1 lock held by parted/7929:\n\u003e  #0:  (\u0026bdev-\u003ebd_mutex){--..}, at: [\u003cc105eec6\u003e] do_open+0x72/0x3a8\n\u003e stack backtrace:\n\u003e  [\u003cc1003aad\u003e] show_trace_log_lvl+0x58/0x15b\n\u003e  [\u003cc100495f\u003e] show_trace+0xd/0x10\n\u003e  [\u003cc1004979\u003e] dump_stack+0x17/0x1a\n\u003e  [\u003cc102dee5\u003e] __lock_acquire+0x753/0x99c\n\u003e  [\u003cc102e3b0\u003e] lock_acquire+0x4a/0x6a\n\u003e  [\u003cc1204501\u003e] mutex_lock_nested+0xc8/0x20c\n\u003e  [\u003cc105eb8d\u003e] __blkdev_put+0x1e/0x13c\n\u003e  [\u003cc105ecc4\u003e] blkdev_put+0xa/0xc\n\u003e  [\u003cc105f18a\u003e] do_open+0x336/0x3a8\n\u003e  [\u003cc105f21b\u003e] blkdev_open+0x1f/0x4c\n\u003e  [\u003cc1057b40\u003e] __dentry_open+0xc7/0x1aa\n\u003e  [\u003cc1057c91\u003e] nameidata_to_filp+0x1c/0x2e\n\u003e  [\u003cc1057cd1\u003e] do_filp_open+0x2e/0x35\n\u003e  [\u003cc1057dd7\u003e] do_sys_open+0x38/0x68\n\u003e  [\u003cc1057e33\u003e] sys_open+0x16/0x18\n\u003e  [\u003cc1002845\u003e] sysenter_past_esp+0x56/0x8d\n\nOK, I\u0027m having a look here; its all new to me so bear with me.\n\nblkdev_open() calls\n  do_open(bdev, ...,BD_MUTEX_NORMAL) and takes\n    mutex_lock_nested(\u0026bdev-\u003ebd_mutex, BD_MUTEX_NORMAL)\n\nthen something fails, and we\u0027re thrown to:\n\nout_first: where\n    if (bdev !\u003d bdev-\u003ebd_contains)\n      blkdev_put(bdev-\u003ebd_contains) which is\n        __blkdev_put(bdev-\u003ebd_contains, BD_MUTEX_NORMAL) which does\n          mutex_lock_nested(\u0026bdev-\u003ebd_contains-\u003ebd_mutex, BD_MUTEX_NORMAL) \u003c--- lockdep trigger\n\nWhen going to out_first, dbev-\u003ebd_contains is either bdev or whole, and\nsince we take the branch it must be whole. So it seems to me the\nfollowing patch would be the right one:\n\n[akpm@osdl.org: compile fix]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "37534573960bc5cd1149ef52c118d438dd66833d",
      "old_mode": 33188,
      "old_path": "fs/block_dev.c",
      "new_id": "045f98854f14ab91c71cc6a61a9cafb1716a53c4",
      "new_mode": 33188,
      "new_path": "fs/block_dev.c"
    }
  ]
}
