)]}'
{
  "commit": "35f9c09fe9c72eb8ca2b8e89a593e1c151f28fc2",
  "tree": "6e57508d6633c47b8846cfdbaefc33e6e0128a47",
  "parents": [
    "78d50217baf36093ab320f95bae0d6452daec85c"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "eric.dumazet@gmail.com",
    "time": "Thu Apr 05 03:05:35 2012 +0000"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Thu Apr 05 19:04:27 2012 -0400"
  },
  "message": "tcp: tcp_sendpages() should call tcp_push() once\n\ncommit 2f533844242 (tcp: allow splice() to build full TSO packets) added\na regression for splice() calls using SPLICE_F_MORE.\n\nWe need to call tcp_flush() at the end of the last page processed in\ntcp_sendpages(), or else transmits can be deferred and future sends\nstall.\n\nAdd a new internal flag, MSG_SENDPAGE_NOTLAST, acting like MSG_MORE, but\nwith different semantic.\n\nFor all sendpage() providers, its a transparent change. Only\nsock_sendpage() and tcp_sendpages() can differentiate the two different\nflags provided by pipe_to_sendpage()\n\nReported-by: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Nandita Dukkipati \u003cnanditad@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: H.K. Jerry Chu \u003chkchu@google.com\u003e\nCc: Maciej Żenczykowski \u003cmaze@google.com\u003e\nCc: Mahesh Bandewar \u003cmaheshb@google.com\u003e\nCc: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail\u003ecom\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5f883de7ef3ad0bd8dfe9392356725660f9a69b3",
      "old_mode": 33188,
      "old_path": "fs/splice.c",
      "new_id": "f8476841eb04e08edc2ad069e97cddc3da242e7f",
      "new_mode": 33188,
      "new_path": "fs/splice.c"
    },
    {
      "type": "modify",
      "old_id": "da2d3e2543f31cbd1464d40609dac996379c1449",
      "old_mode": 33188,
      "old_path": "include/linux/socket.h",
      "new_id": "b84bbd48b874b22d40d22c3cc8d57cc58346b86f",
      "new_mode": 33188,
      "new_path": "include/linux/socket.h"
    },
    {
      "type": "modify",
      "old_id": "2ff6f45a76f46dce6d9ed1cae24afa7852643766",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp.c",
      "new_id": "5d54ed30e821fc1744432178b33d0585831cd32f",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp.c"
    },
    {
      "type": "modify",
      "old_id": "484cc6953fc61ebcb049604e5dbdb57a4ffcd385",
      "old_mode": 33188,
      "old_path": "net/socket.c",
      "new_id": "851edcd6b0982d5a820da29e2145be75bddcff9c",
      "new_mode": 33188,
      "new_path": "net/socket.c"
    }
  ]
}
