)]}'
{
  "commit": "8feaf0c0a5488b3d898a9c207eb6678f44ba3f26",
  "tree": "ddd004afe2f7c8295f6fdb94d34f78a42b5961cb",
  "parents": [
    "33b62231908c58ae04185e4f1063d1e35a7c8576"
  ],
  "author": {
    "name": "Arnaldo Carvalho de Melo",
    "email": "acme@ghostprotocols.net",
    "time": "Tue Aug 09 20:09:30 2005 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@sunset.davemloft.net",
    "time": "Mon Aug 29 15:42:13 2005 -0700"
  },
  "message": "[INET]: Generalise tcp_tw_bucket, aka TIME_WAIT sockets\n\nThis paves the way to generalise the rest of the sock ID lookup\nroutines and saves some bytes in TCPv4 TIME_WAIT sockets on distro\nkernels (where IPv6 is always built as a module):\n\n[root@qemu ~]# grep tw_sock /proc/slabinfo\ntw_sock_TCPv6  0  0  128  31  1\ntw_sock_TCP    0  0   96  41  1\n[root@qemu ~]#\n\nNow if a protocol wants to use the TIME_WAIT generic infrastructure it\nonly has to set the sk_prot-\u003etwsk_obj_size field with the size of its\ninet_timewait_sock derived sock and proto_register will create\nsk_prot-\u003etwsk_slab, for now its only for INET sockets, but we can\nintroduce timewait_sock later if some non INET transport protocolo\nwants to use this stuff.\n\nNext changesets will take advantage of this new infrastructure to\ngeneralise even more TCP code.\n\n[acme@toy net-2.6.14]$ grep built-in /tmp/before.size /tmp/after.size\n/tmp/before.size: 188646   11764    5068  205478   322a6 net/ipv4/built-in.o\n/tmp/after.size:  188144   11764    5068  204976   320b0 net/ipv4/built-in.o\n[acme@toy net-2.6.14]$\n\nTested with both IPv4 \u0026 IPv6 (::1 (localhost) \u0026 ::ffff:172.20.0.1\n(qemu host)).\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6fcd6a0ade24860807917b746abc5179c6338f6a",
      "old_mode": 33188,
      "old_path": "include/linux/ipv6.h",
      "new_id": "98fa32316e401e4f9de3d4b27edab57c1c144cf1",
      "new_mode": 33188,
      "new_path": "include/linux/ipv6.h"
    },
    {
      "type": "modify",
      "old_id": "b88fe05fdcbf688d82b09b6f25aaef7361136398",
      "old_mode": 33188,
      "old_path": "include/linux/tcp.h",
      "new_id": "5d295b1b3de7d2c82c1053e9e5d73954f395914e",
      "new_mode": 33188,
      "new_path": "include/linux/tcp.h"
    },
    {
      "type": "modify",
      "old_id": "1c4fa0065a8e6277821a14a8ce2c92bbd151aead",
      "old_mode": 33188,
      "old_path": "include/net/inet_hashtables.h",
      "new_id": "c38c637e0734fd571a05e1dd97088fb1e8f2f75f",
      "new_mode": 33188,
      "new_path": "include/net/inet_hashtables.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ce117048f2fd929ee13c1af8d5dfd1371929fa4f",
      "new_mode": 33188,
      "new_path": "include/net/inet_timewait_sock.h"
    },
    {
      "type": "modify",
      "old_id": "391d00b5b7b4d9339d837cd814d351563068279e",
      "old_mode": 33188,
      "old_path": "include/net/sock.h",
      "new_id": "c902c57bf2b7654ef4964aa9e36882706cb39b5d",
      "new_mode": 33188,
      "new_path": "include/net/sock.h"
    },
    {
      "type": "modify",
      "old_id": "9d026d81d8c825731a9774431fd8548c18f34d49",
      "old_mode": 33188,
      "old_path": "include/net/tcp.h",
      "new_id": "cf8e664176add00236fb6f2fcacdcdabd7aff015",
      "new_mode": 33188,
      "new_path": "include/net/tcp.h"
    },
    {
      "type": "modify",
      "old_id": "a1a23be10aa3777471781c99f6d7c8c3a8bee896",
      "old_mode": 33188,
      "old_path": "net/core/sock.c",
      "new_id": "aba31fedf2ac5d8d9f0620a254ab96c3eb10529d",
      "new_mode": 33188,
      "new_path": "net/core/sock.c"
    },
    {
      "type": "modify",
      "old_id": "2f4b1a374bb7d2f515d757f81f0d1ab4a3143a73",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp.c",
      "new_id": "f1a708bf7a97d5f87dfb48b516d67743a5dbde9e",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp.c"
    },
    {
      "type": "modify",
      "old_id": "1a89a03c449b47016bf0b27d525ecc6fb95a9b62",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_diag.c",
      "new_id": "6f2d6f2276b981a6bd30b97867112b72d14cd4ce",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_diag.c"
    },
    {
      "type": "modify",
      "old_id": "a678709b36f678b8a7dea8efd84520c2522047dd",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_ipv4.c",
      "new_id": "ce423e48ebe09bc72df480696f48269e87596738",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_ipv4.c"
    },
    {
      "type": "modify",
      "old_id": "f29e2f6ebe1bffa2839a1daee8c8b4cad8e7ad61",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_minisocks.c",
      "new_id": "5b5a49335fbbdc787e562835aa49ce00828b57c6",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_minisocks.c"
    },
    {
      "type": "modify",
      "old_id": "77004b9456c049f05cadbc52de47a4880c62fdd7",
      "old_mode": 33188,
      "old_path": "net/ipv6/addrconf.c",
      "new_id": "4582d9cf4bbedcda92cd2c02811b8c561d9375c1",
      "new_mode": 33188,
      "new_path": "net/ipv6/addrconf.c"
    },
    {
      "type": "modify",
      "old_id": "93a66b9a76e12248101c37e76ff538b6adc98805",
      "old_mode": 33188,
      "old_path": "net/ipv6/tcp_ipv6.c",
      "new_id": "af8ad5bb273bfbd20f8d69dcfa76179c49602be7",
      "new_mode": 33188,
      "new_path": "net/ipv6/tcp_ipv6.c"
    }
  ]
}
