)]}'
{
  "commit": "dbca9b2750e3b1ee6f56a616160ccfc12e8b161f",
  "tree": "bf84c0acb5495fc95bc616d32b8af946f2e3bca9",
  "parents": [
    "eac3731bd04c7131478722a3c148b78774553116"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "dada1@cosmosbay.com",
    "time": "Thu Feb 08 14:16:46 2007 -0800"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Thu Feb 08 14:16:46 2007 -0800"
  },
  "message": "[NET]: change layout of ehash table\n\nehash table layout is currently this one :\n\nFirst half of this table is used by sockets not in TIME_WAIT state\nSecond half of it is used by sockets in TIME_WAIT state.\n\nThis is non optimal because of for a given hash or socket, the two chain heads \nare located in separate cache lines.\nMoreover the locks of the second half are never used.\n\nIf instead of this halving, we use two list heads in inet_ehash_bucket instead \nof only one, we probably can avoid one cache miss, and reduce ram usage, \nparticularly if sizeof(rwlock_t) is big (various CONFIG_DEBUG_SPINLOCK, \nCONFIG_DEBUG_LOCK_ALLOC settings). So we still halves the table but we keep \ntogether related chains to speedup lookups and socket state change.\n\nIn this patch I did not try to align struct inet_ehash_bucket, but a future \npatch could try to make this structure have a convenient size (a power of two \nor a multiple of L1_CACHE_SIZE).\nI guess rwlock will just vanish as soon as RCU is plugged into ehash :) , so \nmaybe we dont need to scratch our heads to align the bucket...\n\nNote : In case struct inet_ehash_bucket is not a power of two, we could \nprobably change alloc_large_system_hash() (in case it use __get_free_pages()) \nto free the unused space. It currently allocates a big zone, but the last \nquarter of it could be freed. Again, this should be a temporary \u0027problem\u0027.\n\nPatch tested on ipv4 tcp only, but should be OK for IPV6 and DCCP.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "34cc76e3ddb42139bdd7d9b48971bb5d174c7130",
      "old_mode": 33188,
      "old_path": "include/net/inet_hashtables.h",
      "new_id": "d27ee8c0da3f2cc5ac84f29a642118734eade381",
      "new_mode": 33188,
      "new_path": "include/net/inet_hashtables.h"
    },
    {
      "type": "modify",
      "old_id": "63b3fa20e14bbb718d3baa9a7a16c2bcb1a503bd",
      "old_mode": 33188,
      "old_path": "net/dccp/proto.c",
      "new_id": "48438565d70f8da9b6d7938d22b2d61512582c6f",
      "new_mode": 33188,
      "new_path": "net/dccp/proto.c"
    },
    {
      "type": "modify",
      "old_id": "9cd53addb78459db61857b65114fc4047ab08222",
      "old_mode": 33188,
      "old_path": "net/ipv4/inet_diag.c",
      "new_id": "8aa7d51e6881494584110ee183016606b8c0ed9d",
      "new_mode": 33188,
      "new_path": "net/ipv4/inet_diag.c"
    },
    {
      "type": "modify",
      "old_id": "8c79c8a4ea5c2e2daee5f9184d2401ddd60b3192",
      "old_mode": 33188,
      "old_path": "net/ipv4/inet_hashtables.c",
      "new_id": "150ace18dc759562414565dacfb4c918214d28c4",
      "new_mode": 33188,
      "new_path": "net/ipv4/inet_hashtables.c"
    },
    {
      "type": "modify",
      "old_id": "9f414e35c488fe2c1464b1aae47363b17968fb5f",
      "old_mode": 33188,
      "old_path": "net/ipv4/inet_timewait_sock.c",
      "new_id": "a73cf93cee36d146eb4cfd2171a76a949d8d374a",
      "new_mode": 33188,
      "new_path": "net/ipv4/inet_timewait_sock.c"
    },
    {
      "type": "modify",
      "old_id": "b67e0dd743be9a159754c61fee6915241585cc01",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp.c",
      "new_id": "5bd43d7294fd1fe1f901a5f5f628051296313557",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp.c"
    },
    {
      "type": "modify",
      "old_id": "383e4b52dbde402e8bad91da376a8b612eef19e4",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_ipv4.c",
      "new_id": "f51d6404c61c982d96cc589af2cc15c911ac48e8",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_ipv4.c"
    },
    {
      "type": "modify",
      "old_id": "b7e5bae0e347dd59a0a9926b16911f2d3f20800a",
      "old_mode": 33188,
      "old_path": "net/ipv6/inet6_hashtables.c",
      "new_id": "e61116949bee97650f0265eecd284a892f05f27b",
      "new_mode": 33188,
      "new_path": "net/ipv6/inet6_hashtables.c"
    }
  ]
}
