)]}'
{
  "commit": "dc351252b33f8fede396d6173dba117bcb933607",
  "tree": "282d57855f66119f930eb629ab483bffcc5b6c21",
  "parents": [
    "99f9f3d49cbc7d944476f6fde53a77ec789ab2aa"
  ],
  "author": {
    "name": "Eric Sandeen",
    "email": "sandeen@sandeen.net",
    "time": "Mon Jun 11 14:02:45 2007 +0900"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Tue Jun 12 16:08:46 2007 -0700"
  },
  "message": "sysfs: store sysfs inode nrs in s_ino to avoid readdir oopses\n\nBackport of\nftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc1/2.6.22-rc1-mm1/broken-out/gregkh-driver-sysfs-allocate-inode-number-using-ida.patch\n\nFor regular files in sysfs, sysfs_readdir wants to traverse\nsysfs_dirent-\u003es_dentry-\u003ed_inode-\u003ei_ino to get to the inode number.\nBut, the dentry can be reclaimed under memory pressure, and there is\nno synchronization with readdir.  This patch follows Tejun\u0027s scheme of\nallocating and storing an inode number in the new s_ino member of a\nsysfs_dirent, when dirents are created, and retrieving it from there\nfor readdir, so that the pointer chain doesn\u0027t have to be traversed.\n\nTejun\u0027s upstream patch uses a new-ish \"ida\" allocator which brings\nalong some extra complexity; this -stable patch has a brain-dead\nincrementing counter which does not guarantee uniqueness, but because\nsysfs doesn\u0027t hash inodes as iunique expects, uniqueness wasn\u0027t\nguaranteed today anyway.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "85a668680f82af4e550b3b381cf7340419eb7d86",
      "old_mode": 33188,
      "old_path": "fs/sysfs/dir.c",
      "new_id": "17a819151b91cde7fcc75b92f2de2522e7c57f04",
      "new_mode": 33188,
      "new_path": "fs/sysfs/dir.c"
    },
    {
      "type": "modify",
      "old_id": "bdd30e74de6b00c16685e98745d2fe96325c483b",
      "old_mode": 33188,
      "old_path": "fs/sysfs/inode.c",
      "new_id": "082e2d430e93389be6343b80397cc236061cd896",
      "new_mode": 33188,
      "new_path": "fs/sysfs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "23a48a38e6af01455575083f8242ef4538f76cac",
      "old_mode": 33188,
      "old_path": "fs/sysfs/mount.c",
      "new_id": "00ab9125d398984efa12496fa3b48ff405f62bad",
      "new_mode": 33188,
      "new_path": "fs/sysfs/mount.c"
    },
    {
      "type": "modify",
      "old_id": "a77c57e5a6d5d983116203656559911142251c87",
      "old_mode": 33188,
      "old_path": "fs/sysfs/sysfs.h",
      "new_id": "1966e1a0a0159616a7b88c0c2a4cb4b99acf26cc",
      "new_mode": 33188,
      "new_path": "fs/sysfs/sysfs.h"
    }
  ]
}
