)]}'
{
  "commit": "a8defca048fd11eb2d1a17ab61a60a856292dd4e",
  "tree": "b486460fd1f2310cd4572bd36c126a3fa8b3a5c5",
  "parents": [
    "0c200d935346fe0ebde9b6dffbb683dddd166fb9"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "eric.dumazet@gmail.com",
    "time": "Mon Oct 04 20:56:05 2010 +0200"
  },
  "committer": {
    "name": "Patrick McHardy",
    "email": "kaber@trash.net",
    "time": "Mon Oct 04 20:56:05 2010 +0200"
  },
  "message": "netfilter: ipt_LOG: add bufferisation to call printk() once\n\nipt_LOG \u0026 ip6t_LOG use lot of calls to printk() and use a lock in a hope\nseveral cpus wont mix their output in syslog.\n\nprintk() being very expensive [1], its better to call it once, on a\nprebuilt and complete line. Also, with mixed IPv4 and IPv6 trafic,\nseparate IPv4/IPv6 locks dont avoid garbage.\n\nI used an allocation of a 1024 bytes structure, sort of seq_printf() but\nwith a fixed size limit.\nUse a static buffer if dynamic allocation failed.\n\nEmit a once time alert if buffer size happens to be too short.\n\n[1]: printk() has various features like printk_delay()...\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "915fc17d7ce214a017f1993e0ab82a0603a3f4f6",
      "old_mode": 33188,
      "old_path": "net/ipv4/netfilter/ipt_LOG.c",
      "new_id": "72ffc8fda2e9faca3ab8c4cf3682df0de4a44faa",
      "new_mode": 33188,
      "new_path": "net/ipv4/netfilter/ipt_LOG.c"
    },
    {
      "type": "modify",
      "old_id": "0a07ae7b933f2fbbac6fbf8cf9741d8bea6882e6",
      "old_mode": 33188,
      "old_path": "net/ipv6/netfilter/ip6t_LOG.c",
      "new_id": "09c88891a753e725d8594edc68941b293d171100",
      "new_mode": 33188,
      "new_path": "net/ipv6/netfilter/ip6t_LOG.c"
    }
  ]
}
