)]}'
{
  "commit": "942e4a2bd680c606af0211e64eb216be2e19bf61",
  "tree": "a83af49242d4a8d53aa0f3b5814eb17da72edc09",
  "parents": [
    "bf368e4e70cd4e0f880923c44e95a4273d725ab4"
  ],
  "author": {
    "name": "Stephen Hemminger",
    "email": "shemminger@vyatta.com",
    "time": "Tue Apr 28 22:36:33 2009 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Tue Apr 28 22:36:33 2009 -0700"
  },
  "message": "netfilter: revised locking for x_tables\n\nThe x_tables are organized with a table structure and a per-cpu copies\nof the counters and rules. On older kernels there was a reader/writer \nlock per table which was a performance bottleneck. In 2.6.30-rc, this\nwas converted to use RCU and the counters/rules which solved the performance\nproblems for do_table but made replacing rules much slower because of\nthe necessary RCU grace period.\n\nThis version uses a per-cpu set of spinlocks and counters to allow to\ntable processing to proceed without the cache thrashing of a global\nreader lock and keeps the same performance for table updates.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7b1a652066c08a205a255223cc754169de1905ae",
      "old_mode": 33188,
      "old_path": "include/linux/netfilter/x_tables.h",
      "new_id": "1b2e43502ef77b63e50a428a3b61dcfa956da967",
      "new_mode": 33188,
      "new_path": "include/linux/netfilter/x_tables.h"
    },
    {
      "type": "modify",
      "old_id": "5ba533d234db60c88504af505cdb4eee7a9a1dc2",
      "old_mode": 33188,
      "old_path": "net/ipv4/netfilter/arp_tables.c",
      "new_id": "831fe1879dc07dfacdb8eff3970829140f748e16",
      "new_mode": 33188,
      "new_path": "net/ipv4/netfilter/arp_tables.c"
    },
    {
      "type": "modify",
      "old_id": "810c0b62c7d4b213ea21c8ab0aaf3198e7e7bc36",
      "old_mode": 33188,
      "old_path": "net/ipv4/netfilter/ip_tables.c",
      "new_id": "2ec8d7290c400a4e8adfe71888150c41927be835",
      "new_mode": 33188,
      "new_path": "net/ipv4/netfilter/ip_tables.c"
    },
    {
      "type": "modify",
      "old_id": "800ae854247163f8890ea244060835eccc5f0a99",
      "old_mode": 33188,
      "old_path": "net/ipv6/netfilter/ip6_tables.c",
      "new_id": "219e165aea1008368b99b8786a3fcdb731c14a98",
      "new_mode": 33188,
      "new_path": "net/ipv6/netfilter/ip6_tables.c"
    },
    {
      "type": "modify",
      "old_id": "509a95621f9f5e68a93916414717beae2b69a60f",
      "old_mode": 33188,
      "old_path": "net/netfilter/x_tables.c",
      "new_id": "150e5cf62f8531d98b99fa4b04d2842238f149ba",
      "new_mode": 33188,
      "new_path": "net/netfilter/x_tables.c"
    }
  ]
}
