)]}'
{
  "commit": "e105b8bfc769b0545b6f0f395179d1e43cbee822",
  "tree": "23a1f0839547829c4ca6e89cd40adf285eb9feb6",
  "parents": [
    "93ded9b8fd42abe2c3607097963d8de6ad9117eb"
  ],
  "author": {
    "name": "Dan Williams",
    "email": "dan.j.williams@intel.com",
    "time": "Mon Apr 21 10:51:07 2008 -0700"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Mon Jul 21 21:54:40 2008 -0700"
  },
  "message": "sysfs: add /sys/dev/{char,block} to lookup sysfs path by major:minor\n\nWhy?:\nThere are occasions where userspace would like to access sysfs\nattributes for a device but it may not know how sysfs has named the\ndevice or the path.  For example what is the sysfs path for\n/dev/disk/by-id/ata-ST3160827AS_5MT004CK?  With this change a call to\nstat(2) returns the major:minor then userspace can see that\n/sys/dev/block/8:32 links to /sys/block/sdc.\n\nWhat are the alternatives?:\n1/ Add an ioctl to return the path: Doable, but sysfs is meant to reduce\n   the need to proliferate ioctl interfaces into the kernel, so this\n   seems counter productive.\n\n2/ Use udev to create these symlinks: Also doable, but it adds a\n   udev dependency to utilities that might be running in a limited\n   environment like an initramfs.\n\n3/ Do a full-tree search of sysfs.\n\n[kay.sievers@vrfy.org: fix duplicate registrations]\n[kay.sievers@vrfy.org: cleanup suggestions]\n\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nReviewed-by: SL Baur \u003csteve@xemacs.org\u003e\nAcked-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nAcked-by: Mark Lord \u003clkml@rtr.ca\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a9f2b8b0530fb193be12ccfb7d0a529bf0ba435d",
      "new_mode": 33188,
      "new_path": "Documentation/ABI/testing/sysfs-dev"
    },
    {
      "type": "modify",
      "old_id": "7f27b8f840d06210df1511db6ef603cedb8f0e58",
      "old_mode": 33188,
      "old_path": "Documentation/filesystems/sysfs.txt",
      "new_id": "9e9c348275a96fd362acf9916d2789be8a08c4c8",
      "new_mode": 33188,
      "new_path": "Documentation/filesystems/sysfs.txt"
    },
    {
      "type": "modify",
      "old_id": "9074f384b0970535c9048432065ef043ff231923",
      "old_mode": 33188,
      "old_path": "block/genhd.c",
      "new_id": "24e3fc9095fe454439c3108e0eae0a1d8e9a8b50",
      "new_mode": 33188,
      "new_path": "block/genhd.c"
    },
    {
      "type": "modify",
      "old_id": "e085af0ff94fb93007e7dce12f98443e4c5daa6d",
      "old_mode": 33188,
      "old_path": "drivers/base/class.c",
      "new_id": "71ce3ff6bdf53261af4cc41e5763846803569f27",
      "new_mode": 33188,
      "new_path": "drivers/base/class.c"
    },
    {
      "type": "modify",
      "old_id": "ee0a51a3a41d876451395b0f2a93b6a06a430394",
      "old_mode": 33188,
      "old_path": "drivers/base/core.c",
      "new_id": "be9aba4dc2fbf9e2d4e746d1841093bc31aa69b9",
      "new_mode": 33188,
      "new_path": "drivers/base/core.c"
    },
    {
      "type": "modify",
      "old_id": "54a350ccd0333870fc4a7c01371f2dd1e7042d78",
      "old_mode": 33188,
      "old_path": "drivers/usb/core/devio.c",
      "new_id": "6fbc8f5ab80cf3e114e26e1be58cf85214faa9b3",
      "new_mode": 33188,
      "new_path": "drivers/usb/core/devio.c"
    },
    {
      "type": "modify",
      "old_id": "f71a78d123aef9d7b3b03276921d10286e1eceed",
      "old_mode": 33188,
      "old_path": "include/linux/device.h",
      "new_id": "e49aa74f248c52ba038b98b34077120dcd9b936d",
      "new_mode": 33188,
      "new_path": "include/linux/device.h"
    }
  ]
}
