)]}'
{
  "commit": "a2e2725541fad72416326798c2d7fa4dafb7d337",
  "tree": "6174be11da607e83eb8efb3775114ad4d6e0ca3a",
  "parents": [
    "c05e85a06e376f6b6d59e71e5333d707e956d78b"
  ],
  "author": {
    "name": "Arnaldo Carvalho de Melo",
    "email": "acme@redhat.com",
    "time": "Mon Oct 12 23:40:10 2009 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon Oct 12 23:40:10 2009 -0700"
  },
  "message": "net: Introduce recvmmsg socket syscall\n\nMeaning receive multiple messages, reducing the number of syscalls and\nnet stack entry/exit operations.\n\nNext patches will introduce mechanisms where protocols that want to\noptimize this operation will provide an unlocked_recvmsg operation.\n\nThis takes into account comments made by:\n\n. Paul Moore: sock_recvmsg is called only for the first datagram,\n  sock_recvmsg_nosec is used for the rest.\n\n. Caitlin Bestler: recvmmsg now has a struct timespec timeout, that\n  works in the same fashion as the ppoll one.\n\n  If the underlying protocol returns a datagram with MSG_OOB set, this\n  will make recvmmsg return right away with as many datagrams (+ the OOB\n  one) it has received so far.\n\n. Rémi Denis-Courmont \u0026 Steven Whitehouse: If we receive N \u003c vlen\n  datagrams and then recvmsg returns an error, recvmmsg will return\n  the successfully received datagrams, store the error and return it\n  in the next call.\n\nThis paves the way for a subsequent optimization, sk_prot-\u003eunlocked_recvmsg,\nwhere we will be able to acquire the lock only at batch start and end, not at\nevery underlying recvmsg call.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "95c9aef1c10645fd1462e0c93961301f17e2dc7e",
      "old_mode": 33188,
      "old_path": "arch/alpha/kernel/systbls.S",
      "new_id": "cda6b8b3d573cb9322acf887e507c5503fe4ba6a",
      "new_mode": 33188,
      "new_path": "arch/alpha/kernel/systbls.S"
    },
    {
      "type": "modify",
      "old_id": "fafce1b5c69fc82922f04a4d91bfa2ab3198401c",
      "old_mode": 33188,
      "old_path": "arch/arm/kernel/calls.S",
      "new_id": "f58c1156e779f4a7caf94ea238a757c26d64e795",
      "new_mode": 33188,
      "new_path": "arch/arm/kernel/calls.S"
    },
    {
      "type": "modify",
      "old_id": "7ee0057613b3a70789663f604651bdbc319e2551",
      "old_mode": 33188,
      "old_path": "arch/avr32/kernel/syscall_table.S",
      "new_id": "e76bad16b0f08570f548934a78238bf54910d4c0",
      "new_mode": 33188,
      "new_path": "arch/avr32/kernel/syscall_table.S"
    },
    {
      "type": "modify",
      "old_id": "1e7cac23e25fcd90d26c657019f08a6ee9182b93",
      "old_mode": 33188,
      "old_path": "arch/blackfin/mach-common/entry.S",
      "new_id": "48692724b74c2a43e56321cfa8a2996a42f6be40",
      "new_mode": 33188,
      "new_path": "arch/blackfin/mach-common/entry.S"
    },
    {
      "type": "modify",
      "old_id": "d0e7d37017b405bda73a8a3eaded42861b4fc6d3",
      "old_mode": 33188,
      "old_path": "arch/ia64/kernel/entry.S",
      "new_id": "d75b872ca4dc8cbe632d0b7d2a8659d9e07c1c8f",
      "new_mode": 33188,
      "new_path": "arch/ia64/kernel/entry.S"
    },
    {
      "type": "modify",
      "old_id": "ecec19155135efd92cc48f2abca8bd1418e3f931",
      "old_mode": 33188,
      "old_path": "arch/microblaze/kernel/syscall_table.S",
      "new_id": "c1ab1dc10898b70e5ef6c9204dae740979c7d3e3",
      "new_mode": 33188,
      "new_path": "arch/microblaze/kernel/syscall_table.S"
    },
    {
      "type": "modify",
      "old_id": "fd2a9bb620d6618399e315e3155020a319d2671f",
      "old_mode": 33188,
      "old_path": "arch/mips/kernel/scall32-o32.S",
      "new_id": "17202bbe843f91172534dd30e41e8a9542e0d762",
      "new_mode": 33188,
      "new_path": "arch/mips/kernel/scall32-o32.S"
    },
    {
      "type": "modify",
      "old_id": "18bf7f32c5e4cc540e8d52f29785839834988bfd",
      "old_mode": 33188,
      "old_path": "arch/mips/kernel/scall64-64.S",
      "new_id": "a8a6c596eb0405bab886e8dfff6ffeb8097d7fc6",
      "new_mode": 33188,
      "new_path": "arch/mips/kernel/scall64-64.S"
    },
    {
      "type": "modify",
      "old_id": "6ebc07976694bb03fed79e2026037f41d474fd04",
      "old_mode": 33188,
      "old_path": "arch/mips/kernel/scall64-n32.S",
      "new_id": "5154e64f7cfe59d202bb877d4401058c0c7d4586",
      "new_mode": 33188,
      "new_path": "arch/mips/kernel/scall64-n32.S"
    },
    {
      "type": "modify",
      "old_id": "9bbf9775e0bdade7b45a1cf227506cadb7e33b22",
      "old_mode": 33188,
      "old_path": "arch/mips/kernel/scall64-o32.S",
      "new_id": "d0eff53d7cb917dc1ea2f9dfa590849f2f9f7ab4",
      "new_mode": 33188,
      "new_path": "arch/mips/kernel/scall64-o32.S"
    },
    {
      "type": "modify",
      "old_id": "5bfde6c77498f76826ee031f86ca50d9d9004b43",
      "old_mode": 33188,
      "old_path": "arch/sh/kernel/syscalls_64.S",
      "new_id": "07d2aaea9ae8c901406ed95197e7041cce8a939f",
      "new_mode": 33188,
      "new_path": "arch/sh/kernel/syscalls_64.S"
    },
    {
      "type": "modify",
      "old_id": "0f1658d374903044c7a160f03454f97cc10904ba",
      "old_mode": 33188,
      "old_path": "arch/sparc/kernel/systbls_32.S",
      "new_id": "ceb1530f8aa66c00b4b016beb836f6cb14d2e85d",
      "new_mode": 33188,
      "new_path": "arch/sparc/kernel/systbls_32.S"
    },
    {
      "type": "modify",
      "old_id": "009825f6e73cd635a70d0e8807ebaa72a2ab08aa",
      "old_mode": 33188,
      "old_path": "arch/sparc/kernel/systbls_64.S",
      "new_id": "f37bef747e60b07c88f6ade9d1877d0954a5c8b7",
      "new_mode": 33188,
      "new_path": "arch/sparc/kernel/systbls_64.S"
    },
    {
      "type": "modify",
      "old_id": "74619c4f9fda82652b37cfd3edbd6a52f6845fa7",
      "old_mode": 33188,
      "old_path": "arch/x86/ia32/ia32entry.S",
      "new_id": "11a6c79d5f46b6b194306ed57b7c4a0f278cc3f2",
      "new_mode": 33188,
      "new_path": "arch/x86/ia32/ia32entry.S"
    },
    {
      "type": "modify",
      "old_id": "6fb3c209a7e34edbffeb56b22bf8f88dc978fb9b",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/unistd_32.h",
      "new_id": "3baf379fa8402a0df08a1ea6ab7f388e3fdac081",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/unistd_32.h"
    },
    {
      "type": "modify",
      "old_id": "8d3ad0adbc6829566b2e795aabd56f6fc84eedf7",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/unistd_64.h",
      "new_id": "4843f7ba754a6a8b2674da68ecc14af3058b9d44",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/unistd_64.h"
    },
    {
      "type": "modify",
      "old_id": "0157cd26d7cc129774cf745773746130413edad6",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/syscall_table_32.S",
      "new_id": "70c2125d55b97c5a4e0bd9b25ae6f2cfe9374e14",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/syscall_table_32.S"
    },
    {
      "type": "modify",
      "old_id": "c092c8fbb2cf918def5f3a54ace7fcc78c9bfa55",
      "old_mode": 33188,
      "old_path": "arch/xtensa/include/asm/unistd.h",
      "new_id": "4e55dc763021376d8dde31d4c333dd0ca4c495bc",
      "new_mode": 33188,
      "new_path": "arch/xtensa/include/asm/unistd.h"
    },
    {
      "type": "modify",
      "old_id": "529a0931711da5875cc70e88953dbe9621afd5d3",
      "old_mode": 33188,
      "old_path": "include/linux/net.h",
      "new_id": "b42bb60fe92f40135c15a98f456d5990c8fd92ad",
      "new_mode": 33188,
      "new_path": "include/linux/net.h"
    },
    {
      "type": "modify",
      "old_id": "3273a0c5043b96321bf6dda00bc44d4d4c254003",
      "old_mode": 33188,
      "old_path": "include/linux/socket.h",
      "new_id": "59966f12990cb0464f6047dcacff13a34dd6793d",
      "new_mode": 33188,
      "new_path": "include/linux/socket.h"
    },
    {
      "type": "modify",
      "old_id": "a990ace1a8380f01901b742a6b0821aff46a5d9d",
      "old_mode": 33188,
      "old_path": "include/linux/syscalls.h",
      "new_id": "714f063a3e6d288ebbf91d53326887b26caff6a9",
      "new_mode": 33188,
      "new_path": "include/linux/syscalls.h"
    },
    {
      "type": "modify",
      "old_id": "7c3002832d05a62f98be2fcc9145807f618e9095",
      "old_mode": 33188,
      "old_path": "include/net/compat.h",
      "new_id": "9679f05e98967c56ae9b1c1f35cf00a891a99d44",
      "new_mode": 33188,
      "new_path": "include/net/compat.h"
    },
    {
      "type": "modify",
      "old_id": "e06d0b8d195191fa818d166c362ba652e4802d38",
      "old_mode": 33188,
      "old_path": "kernel/sys_ni.c",
      "new_id": "f050ba85d420a64c520beddaaa71073d8d29db0b",
      "new_mode": 33188,
      "new_path": "kernel/sys_ni.c"
    },
    {
      "type": "modify",
      "old_id": "a407c3addbae432913a20dce2560d2bab1d248f2",
      "old_mode": 33188,
      "old_path": "net/compat.c",
      "new_id": "e13f5256fd20011b6e28d8549397f5137fc925b5",
      "new_mode": 33188,
      "new_path": "net/compat.c"
    },
    {
      "type": "modify",
      "old_id": "807935693846661cf182bf7e777b6cc77b48dde6",
      "old_mode": 33188,
      "old_path": "net/socket.c",
      "new_id": "9dff31c9b799aad1472222e760278daeb2e1b996",
      "new_mode": 33188,
      "new_path": "net/socket.c"
    }
  ]
}
