)]}'
{
  "log": [
    {
      "commit": "317fe0e6c5dc9448bcef41a2e31fecfd3dba7f55",
      "tree": "c2a042e1c8bb96b7fdeadf658309ead1b6e8dabc",
      "parents": [
        "fdb93f8ac39aa5902f3d264edd50dffcabfdd13b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 16 04:52:13 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 16 11:55:39 2010 -0700"
      },
      "message": "inetpeer: restore small inet_peer structures\n\nAddition of rcu_head to struct inet_peer added 16bytes on 64bit arches.\n\nThats a bit unfortunate, since old size was exactly 64 bytes.\n\nThis can be solved, using an union between this rcu_head an four fields,\nthat are normally used only when a refcount is taken on inet_peer.\nrcu_head is used only when refcnt\u003d-1, right before structure freeing.\n\nAdd a inet_peer_refcheck() function to check this assertion for a while.\n\nWe can bring back SLAB_HWCACHE_ALIGN qualifier in kmem cache creation.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa1039e73cc2cf834e99c09d2033d5d2675357b9",
      "tree": "0db06e4adddaf0f77b4e8de170710b74a17375e4",
      "parents": [
        "7b34a4644b4342896e0c1967b8f953213ea4a990"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 15 08:23:14 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 15 14:23:38 2010 -0700"
      },
      "message": "inetpeer: RCU conversion\n\ninetpeer currently uses an AVL tree protected by an rwlock.\n\nIt\u0027s possible to make most lookups use RCU\n\n1) Add a struct rcu_head to struct inet_peer\n\n2) add a lookup_rcu_bh() helper to perform lockless and opportunistic\nlookup. This is a normal function, not a macro like lookup().\n\n3) Add a limit to number of links followed by lookup_rcu_bh(). This is\nneeded in case we fall in a loop.\n\n4) add an smp_wmb() in link_to_pool() right before node insert.\n\n5) make unlink_from_pool() use atomic_cmpxchg() to make sure it can take\nlast reference to an inet_peer, since lockless readers could increase\nrefcount, even while we hold peers.lock.\n\n6) Delay struct inet_peer freeing after rcu grace period so that\nlookup_rcu_bh() cannot crash.\n\n7) inet_getpeer() first attempts lockless lookup.\n   Note this lookup can fail even if target is in AVL tree, but a\nconcurrent writer can let tree in a non correct form.\n   If this attemps fails, lock is taken a regular lookup is performed\nagain.\n\n8) convert peers.lock from rwlock to a spinlock\n\n9) Remove SLAB_HWCACHE_ALIGN when peer_cachep is created, because\nrcu_head adds 16 bytes on 64bit arches, doubling effective size (64 -\u003e\n128 bytes)\nIn a future patch, this is probably possible to revert this part, if rcu\nfield is put in an union to share space with rid, ip_id_count, tcp_ts \u0026\ntcp_ts_stamp. These fields being manipulated only with refcnt \u003e 0.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2c1409a0a2b88585ec0c03f1de0aafa178c56313",
      "tree": "e9fc25badfb716e5368079535f548cc8e4b5576a",
      "parents": [
        "234b27c3fd58fc0e15c04dd0fbf4337fac9c2a06"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Nov 12 09:33:09 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 13 20:46:58 2009 -0800"
      },
      "message": "inetpeer: Optimize inet_getid()\n\nWhile investigating for network latencies, I found inet_getid() was a\ncontention point for some workloads, as inet_peer_idlock is shared\nby all inet_getid() users regardless of peers.\n\nOne way to fix this is to make ip_id_count an atomic_t instead\nof __u16, and use atomic_add_return().\n\nIn order to keep sizeof(struct inet_peer) \u003d 64 on 64bit arches\ntcp_ts_stamp is also converted to __u32 instead of \"unsigned long\".\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fd2c3ef761fbc5e6c27fa7d40b30cda06bfcd7d8",
      "tree": "25922196160e9d5be8aa2a473ce981756926390f",
      "parents": [
        "4b7673a04a16f1d8faf1e367ae28a6ee1671843d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Nov 03 03:26:03 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 04 05:06:25 2009 -0800"
      },
      "message": "net: cleanup include/net\n\nThis cleanup patch puts struct/union/enum opening braces,\nin first line to ease grep games.\n\nstruct something\n{\n\nbecomes :\n\nstruct something {\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0b040829952d84bf2a62526f0e24b624e0699447",
      "tree": "b2e836e7e64343f19b949e50099bbe2ea554ec30",
      "parents": [
        "573bf470e693f73a6ac437b17a64a10902ba54bf"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Jun 10 22:46:50 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 11 21:00:38 2008 -0700"
      },
      "message": "net: remove CVS keywords\n\nThis patch removes CVS keywords that weren\u0027t updated for a long time\nfrom comments.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d71209ded2ba6010070d02005384897c59859d00",
      "tree": "a812e34e54e36f74ce9ef61f6e9e42100d0a6ef4",
      "parents": [
        "22649d1afbe6988688a07fd70abb06f1e2213567"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Nov 12 21:27:28 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 12 21:27:28 2007 -0800"
      },
      "message": "[INET]: Use list_head-s in inetpeer.c\n\nThe inetpeer.c tracks the LRU list of inet_perr-s, but makes\nit by hands. Use the list_head-s for this.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "78d79423179c0efc7ec34b55d287e7be4ca07da6",
      "tree": "493041961b8da774b5d9c6a5cc00add000111137",
      "parents": [
        "06ca719faddaf5ea46c6356b12847663c3ed8806"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Fri Oct 20 00:28:35 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 20 00:28:35 2006 -0700"
      },
      "message": "[IPV4] inet_peer: Group together avl_left, avl_right, v4daddr to speedup lookups on some CPUS\n\nLot of routers/embedded devices still use CPUS with 16/32 bytes cache\nlines.  (486, Pentium, ...  PIII) It makes sense to group together\nfields used at lookup time so they fit in one cache line.  This reduce\ncache footprint and speedup lookups.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4663afe2c848e2abc8791202beecf40684f13eb4",
      "tree": "4d67cf3a9910bb9c224b4495b554560ec438477e",
      "parents": [
        "ea614d7f4fb2d436b7a5ee490d1011615f6b38d5"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Thu Oct 12 21:21:06 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sun Oct 15 23:14:17 2006 -0700"
      },
      "message": "[NET]: reduce sizeof(struct inet_peer), cleanup, change in peer_check_expire()\n\n1) shrink struct inet_peer on 64 bits platforms.\n"
    },
    {
      "commit": "53576d9b995605a9edc7414b900a9218c8f23b1f",
      "tree": "a0287612fda29ef5908febacecd001f59fe2ff28",
      "parents": [
        "d878e72e419db9ff4c66848375ee30a19820e4de"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 26 22:18:43 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 28 18:01:09 2006 -0700"
      },
      "message": "[IPV4]: inetpeer annotations\n\nThis one is interesting - we use net-endian value as search key, but\norder the tree by *host-endian* comparisons of keys.  OK since we only\ncare about lookups.  Annotated inet_getpeer() and friends.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "89cee8b1cbb9dac40c92ef1968aea2b45f82fd18",
      "tree": "01049841b15a9c2f3f136710382c7e4c11c1b1e5",
      "parents": [
        "d5228a4f49db32d22a39c653281b527ef371129c"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Dec 13 23:14:27 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jan 03 13:10:31 2006 -0800"
      },
      "message": "[IPV4]: Safer reassembly\n\nAnother spin of Herbert Xu\u0027s \"safer ip reassembly\" patch\nfor 2.6.16.\n\n(The original patch is here:\nhttp://marc.theaimsgroup.com/?l\u003dlinux-netdev\u0026m\u003d112281936522415\u0026w\u003d2\nand my only contribution is to have tested it.)\n\nThis patch (optionally) does additional checks before accepting IP\nfragments, which can greatly reduce the possibility of reassembling\nfragments which originated from different IP datagrams.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Arthur Kepner \u003cakepner@sgi.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
