)]}'
{
  "commit": "c23fbb6bcb3eb9cdf39a103edadf57bde8ce309c",
  "tree": "d79ab2278774de2c1a8061aa948ed068902e87b4",
  "parents": [
    "2793274298c4423d79701e9a8190f2940bf3c785"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "dada1@cosmosbay.com",
    "time": "Tue May 08 00:26:18 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Tue May 08 11:15:03 2007 -0700"
  },
  "message": "VFS: delay the dentry name generation on sockets and pipes\n\n1) Introduces a new method in \u0027struct dentry_operations\u0027.  This method\n   called d_dname() might be called from d_path() to build a pathname for\n   special filesystems.  It is called without locks.\n\n   Future patches (if we succeed in having one common dentry for all\n   pipes/sockets) may need to change prototype of this method, but we now\n   use : char *d_dname(struct dentry *dentry, char *buffer, int buflen);\n\n2) Adds a dynamic_dname() helper function that eases d_dname() implementations\n\n3) Defines d_dname method for sockets : No more sprintf() at socket\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\n4) Defines d_dname method for pipes : No more sprintf() at pipe\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\nA benchmark consisting of 1.000.000 calls to pipe()/close()/close() gives a\n*nice* speedup on my Pentium(M) 1.6 Ghz :\n\n3.090 s instead of 3.450 s\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "28bfea75bcf26151ac5594d131cbbc71d0dc93d0",
      "old_mode": 33188,
      "old_path": "Documentation/filesystems/Locking",
      "new_id": "59c14159cc47ddce04a19ae48d559fabedcf6902",
      "new_mode": 33188,
      "new_path": "Documentation/filesystems/Locking"
    },
    {
      "type": "modify",
      "old_id": "ea271f2d395400b82cd8023db74fed76d878ce06",
      "old_mode": 33188,
      "old_path": "Documentation/filesystems/vfs.txt",
      "new_id": "a47cc819f37bb7f5535afbf2bf720766ae51dfdd",
      "new_mode": 33188,
      "new_path": "Documentation/filesystems/vfs.txt"
    },
    {
      "type": "modify",
      "old_id": "268da2e2bc09f8f4694dafb5a55675dd22b3c8ee",
      "old_mode": 33188,
      "old_path": "fs/dcache.c",
      "new_id": "2135ab8bb103d1fabef4ef2f90b7bcafc50dbabd",
      "new_mode": 33188,
      "new_path": "fs/dcache.c"
    },
    {
      "type": "modify",
      "old_id": "ebafde7d6abab948f9fa3a23e71f39360c757c71",
      "old_mode": 33188,
      "old_path": "fs/pipe.c",
      "new_id": "3a89592bdf577930b4c1698c4811261aa467cbf2",
      "new_mode": 33188,
      "new_path": "fs/pipe.c"
    },
    {
      "type": "modify",
      "old_id": "63f64a9a5bf7b207b674be433d1c3b218ff39813",
      "old_mode": 33188,
      "old_path": "include/linux/dcache.h",
      "new_id": "aab53df4fafa338e46b96919d61e77ed2b20ff78",
      "new_mode": 33188,
      "new_path": "include/linux/dcache.h"
    },
    {
      "type": "modify",
      "old_id": "759825b7ca263b4073d39338debc7a4a04a4a6a1",
      "old_mode": 33188,
      "old_path": "net/socket.c",
      "new_id": "98a8f67abbfcfe84f2cb026737c710c39647d8cc",
      "new_mode": 33188,
      "new_path": "net/socket.c"
    }
  ]
}
