)]}'
{
  "commit": "c32ccd87bfd1414b0aabfcd8dbc7539ad23bcbaa",
  "tree": "612dc637976cbe36e8b72924a1f7bd76e75463fd",
  "parents": [
    "bf36b9011e3c5b2739f9da2f6de8a6fa3edded32"
  ],
  "author": {
    "name": "Nick Piggin",
    "email": "nickpiggin@yahoo.com.au",
    "time": "Sat Mar 25 03:07:09 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sat Mar 25 08:22:53 2006 -0800"
  },
  "message": "[PATCH] inotify: lock avoidance with parent watch status in dentry\n\nPrevious inotify work avoidance is good when inotify is completely unused,\nbut it breaks down if even a single watch is in place anywhere in the\nsystem.  Robin Holt notices that udev is one such culprit - it slows down a\n512-thread application on a 512 CPU system from 6 seconds to 22 minutes.\n\nSolve this by adding a flag in the dentry that tells inotify whether or not\nits parent inode has a watch on it.  Event queueing to parent will skip\ntaking locks if this flag is cleared.  Setting and clearing of this flag on\nall child dentries versus event delivery: this is no in terms of race\ncases, and that was shown to be equivalent to always performing the check.\n\nThe essential behaviour is that activity occuring _after_ a watch has been\nadded and _before_ it has been removed, will generate events.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Robert Love \u003crml@novell.com\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\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": "139e5fd22fa68751a3f06aa8931ef03f4f8d0ba5",
      "old_mode": 33188,
      "old_path": "fs/dcache.c",
      "new_id": "0f7ec12d65ffb3b69edc37c1ea9855d1a8afee9e",
      "new_mode": 33188,
      "new_path": "fs/dcache.c"
    },
    {
      "type": "modify",
      "old_id": "0ee39ef591c6dac600a4cb07d2741be546becc38",
      "old_mode": 33188,
      "old_path": "fs/inotify.c",
      "new_id": "a61e93e1785331eb87847df058b7b1b504459250",
      "new_mode": 33188,
      "new_path": "fs/inotify.c"
    },
    {
      "type": "modify",
      "old_id": "4361f3789975d366a39a762d688d02df9408eb82",
      "old_mode": 33188,
      "old_path": "include/linux/dcache.h",
      "new_id": "d10bd30c337e2ca56da7a33cac3be9e83deab955",
      "new_mode": 33188,
      "new_path": "include/linux/dcache.h"
    },
    {
      "type": "modify",
      "old_id": "03b8e7932b830a3f1bfffcc531ec4ee9b1662b1e",
      "old_mode": 33188,
      "old_path": "include/linux/fsnotify.h",
      "new_id": "f7e517c1f1bdb493d9e02c729afc6f6755d24252",
      "new_mode": 33188,
      "new_path": "include/linux/fsnotify.h"
    },
    {
      "type": "modify",
      "old_id": "267c88b5f742592b69dabf70bfcdfb2c471ec706",
      "old_mode": 33188,
      "old_path": "include/linux/inotify.h",
      "new_id": "09e00433c78e267b37b3f485c0d877de780a0674",
      "new_mode": 33188,
      "new_path": "include/linux/inotify.h"
    }
  ]
}
