)]}'
{
  "commit": "b5e618181a927210f8be1d3d2249d31904ba358d",
  "tree": "731f1ae4ff1ba56d402bb329182b7d935bb439a1",
  "parents": [
    "db9c02fa8bd50eb104781a9f78cae923d8da1e74"
  ],
  "author": {
    "name": "Pavel Emelianov",
    "email": "xemul@sw.ru",
    "time": "Tue May 08 00:30:19 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Tue May 08 11:15:11 2007 -0700"
  },
  "message": "Introduce a handy list_first_entry macro\n\nThere are many places in the kernel where the construction like\n\n   foo \u003d list_entry(head-\u003enext, struct foo_struct, list);\n\nare used.\nThe code might look more descriptive and neat if using the macro\n\n   list_first_entry(head, type, member) \\\n             list_entry((head)-\u003enext, type, member)\n\nHere is the macro itself and the examples of its usage in the generic code.\n If it will turn out to be useful, I can prepare the set of patches to\ninject in into arch-specific code, drivers, networking, etc.\n\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dcc5a582e1f16059e9113afafde4e873f2eba6a6",
      "old_mode": 33188,
      "old_path": "fs/dquot.c",
      "new_id": "3a995841de90e0f648dc915ba450a2aaf7fa9674",
      "new_mode": 33188,
      "new_path": "fs/dquot.c"
    },
    {
      "type": "modify",
      "old_id": "d0b86060cc192325748a8530dd29699e4ad27899",
      "old_mode": 33188,
      "old_path": "fs/eventpoll.c",
      "new_id": "b5c7ca584939acb628cd3f7644a99c3c53d0681d",
      "new_mode": 33188,
      "new_path": "fs/eventpoll.c"
    },
    {
      "type": "modify",
      "old_id": "81508b0a3a70c2403986e77acef9aac1960d8762",
      "old_mode": 33188,
      "old_path": "fs/inode.c",
      "new_id": "410f235c337bb3a0fcdecd5487f3fcc9e24b3213",
      "new_mode": 33188,
      "new_path": "fs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "f5099d86fd91fba6d3574e804be85a26e2201d68",
      "old_mode": 33188,
      "old_path": "fs/inotify.c",
      "new_id": "7457501b95656087cfe27339b94d3bace7585782",
      "new_mode": 33188,
      "new_path": "fs/inotify.c"
    },
    {
      "type": "modify",
      "old_id": "c5b88100d914d8ae618261cb38cf2af652849340",
      "old_mode": 33188,
      "old_path": "fs/namespace.c",
      "new_id": "72bb1062bfe77886394a79c0822ec141aad55045",
      "new_mode": 33188,
      "new_path": "fs/namespace.c"
    },
    {
      "type": "modify",
      "old_id": "56aacead836284b7577ad9146aed46582c592a5f",
      "old_mode": 33188,
      "old_path": "fs/pnode.c",
      "new_id": "89940f243fc235d2f2f8d9abf27e5b0f6862cd52",
      "new_mode": 33188,
      "new_path": "fs/pnode.c"
    },
    {
      "type": "modify",
      "old_id": "f9d71eab05eecc9a7d3891d346b86aa58d24233b",
      "old_mode": 33188,
      "old_path": "include/linux/list.h",
      "new_id": "9202703be2a43d15f371a62090ba68ae9ae525e0",
      "new_mode": 33188,
      "new_path": "include/linux/list.h"
    },
    {
      "type": "modify",
      "old_id": "657f77697415b2879c07b85e759e8d19b0880b93",
      "old_mode": 33188,
      "old_path": "kernel/posix-cpu-timers.c",
      "new_id": "1de710e183734b6e47bd7aa4819bd5b3c54deeb2",
      "new_mode": 33188,
      "new_path": "kernel/posix-cpu-timers.c"
    },
    {
      "type": "modify",
      "old_id": "ba41af2bb6cc27d16d9526e181d225bf5398151c",
      "old_mode": 33188,
      "old_path": "kernel/timer.c",
      "new_id": "7a6448340f9032d798cb470c0d028a5f13aaaa68",
      "new_mode": 33188,
      "new_path": "kernel/timer.c"
    }
  ]
}
