)]}'
{
  "log": [
    {
      "commit": "efbc2d7cfa67a9753cd45eb7eee8c9ad10c8b74c",
      "tree": "e41bae99b78853be4d41f98a12a53fd4f2fd253e",
      "parents": [
        "0ea05ce7fd0c1286759933933764aacd12f6ac3a"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Mon Sep 13 04:14:49 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 13 19:55:22 2010 -0700"
      },
      "message": "sfc: Fix order of channel_name array dimensions\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0ea05ce7fd0c1286759933933764aacd12f6ac3a",
      "tree": "84245f1ebbab408d95028e5a42430a8388c2ce75",
      "parents": [
        "9ca7f8762299bb391c11a81c844224216e925b5c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 12 12:06:00 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 12 12:06:00 2010 -0700"
      },
      "message": "bna: Check for NULL before deref in bnad_cb_tx_cleanup\n\nReported-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9ca7f8762299bb391c11a81c844224216e925b5c",
      "tree": "f4e3b114727a1fef133dd617c37d816da46703d3",
      "parents": [
        "a034ee3cca5726b14107f281f4bed1c0fd44472a"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Sep 08 09:16:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:47:59 2010 -0700"
      },
      "message": "pkt_sched: remov unnecessary bh_disable\n\nNow that est_tree_lock is acquired with BH protection, the other\ncall is unnecessary.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a034ee3cca5726b14107f281f4bed1c0fd44472a",
      "tree": "09e4ccf3da1377aea06771357b216a1b372c6687",
      "parents": [
        "4642610c77b345130d6b5a08c75d23ad98601fd5"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Sep 09 23:32:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:32:02 2010 -0700"
      },
      "message": "fib: cleanups\n\nUse rcu_dereference_rtnl() helper\n\nChange hard coded constants in fib_flag_trans()\n 7 -\u003e RTN_UNREACHABLE\n 8 -\u003e RTN_PROHIBIT\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4642610c77b345130d6b5a08c75d23ad98601fd5",
      "tree": "bf6345d84e6dbd3a3d44ff4e050dc862f01a01fc",
      "parents": [
        "ecc910f520ba8f22848982ee816ad75c449b805d"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Sep 10 06:42:33 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:34 2010 -0700"
      },
      "message": "sfc: Allow changing the DMA ring sizes dynamically via ethtool\n\nThis requires some reorganisation of channel setup and teardown to\nensure that we can always roll-back a failed change.\n\nBased on work by Steve Hodgson \u003cshodgson@solarflare.com\u003e\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ecc910f520ba8f22848982ee816ad75c449b805d",
      "tree": "e934380209532b831b7e7e334ddc33d75db7eef5",
      "parents": [
        "8313aca38b3937947fffebca6e34bac8e24300c8"
      ],
      "author": {
        "name": "Steve Hodgson",
        "email": "shodgson@solarflare.com",
        "time": "Fri Sep 10 06:42:22 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:33 2010 -0700"
      },
      "message": "sfc: Make the dmaq size a run-time setting (rather than compile-time)\n\n- Allow the ring size to be specified in non\n   power-of-two sizes (for instance to limit\n   the amount of receive buffers).\n - Automatically size the event queue.\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8313aca38b3937947fffebca6e34bac8e24300c8",
      "tree": "725830070d3509459e90b106b668047c25ed880a",
      "parents": [
        "f7d12cdcbb28207b3bdcf4affbf3935e4c015d03"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Sep 10 06:41:57 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:33 2010 -0700"
      },
      "message": "sfc: Allocate each channel separately, along with its RX and TX queues\n\nThis will allow for reallocation of channel structures and rings.\n\nChange module parameter separate_tx_channels to be read-only, since we\nnow require its value to be constant.\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f7d12cdcbb28207b3bdcf4affbf3935e4c015d03",
      "tree": "ab94c3e81e355c8df47102ede2d5d0aa02738945",
      "parents": [
        "ba1e8a35b77f3bc7d109696dbd2a7fd5af208b62"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Sep 10 06:41:47 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:32 2010 -0700"
      },
      "message": "sfc: Refactor channel and queue lookup and iteration\n\nIn preparation for changes to the way channels and queue structures\nare allocated, revise the macros and functions used to look up and\niterator over them.\n\n- Replace efx_for_each_tx_queue() with iteration over channels then TX\n  queues\n- Replace efx_for_each_rx_queue() with iteration over channels then RX\n  queues (with one exception, shortly to be removed)\n- Introduce efx_get_{channel,rx_queue,tx_queue}() functions to look up\n  channels and queues by index\n- Introduce efx_channel_get_{rx,tx}_queue() functions to look up a\n  channel\u0027s queues\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ba1e8a35b77f3bc7d109696dbd2a7fd5af208b62",
      "tree": "5c65eea772e85b7e31b3488fa09e523bbd68b272",
      "parents": [
        "58758aa505edc5b8f8393cee45b54c7485d76de5"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Sep 10 06:41:36 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:32 2010 -0700"
      },
      "message": "sfc: Abstract channel and index lookup for RX queues\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "58758aa505edc5b8f8393cee45b54c7485d76de5",
      "tree": "6935e011c85f37661b2e3928fbfdcbcdb6b8af91",
      "parents": [
        "e42de26249c88a00715ea686993192546d07133e"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Sep 10 06:41:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:31 2010 -0700"
      },
      "message": "sfc: Allocate DMA and event rings using GFP_KERNEL\n\nCurrently we allocate DMA descriptor rings and event rings using\npci_alloc_consistent() which selects non-blocking behaviour from the\npage allocator (GFP_ATOMIC). This is unnecessary, and since we\ncurrently allocate a single contiguous block for each ring (up to 32\npages!) these allocations are likely to fail if there is any\nsignificant memory pressure.  Use dma_alloc_coherent() and GFP_KERNEL\ninstead.\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e42de26249c88a00715ea686993192546d07133e",
      "tree": "67006585135553897cafd08aaac41b586950a2c9",
      "parents": [
        "7db8e8ec3995a1dc2bfadd8ac97e9024013db9c3"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Sep 10 06:41:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:30 2010 -0700"
      },
      "message": "sfc: Fix failure paths in efx_probe_port()\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7db8e8ec3995a1dc2bfadd8ac97e9024013db9c3",
      "tree": "a3f9cf7b7b65c47319d84159879b1c2269368c6d",
      "parents": [
        "80485d3441fc26aff5ddb2bf44baf7a61e1909b4"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Sep 10 06:41:12 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:30 2010 -0700"
      },
      "message": "sfc: Remove declarations of functions that no longer exist\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "80485d3441fc26aff5ddb2bf44baf7a61e1909b4",
      "tree": "b900b993d07936be6b810bb39948f14685338e57",
      "parents": [
        "1cdc2cfc8af6d1045c844b9e24a7910b57232065"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Sep 10 06:41:06 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:29 2010 -0700"
      },
      "message": "sfc: Accumulate RX_NODESC_DROP count in rx_dropped, not rx_over_errors\n\nrx_over_errors appears to be intended as a count of packets that\noverflow a packet buffer in the NIC.  Given that we implement a\ncut-through receive path, this should always be 0.\n\nrx_dropped appears to be the correct counter for packets dropped due\nto lack of host buffers.\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1cdc2cfc8af6d1045c844b9e24a7910b57232065",
      "tree": "1e285f5ab1089fc936839693de40af5da1b180ff",
      "parents": [
        "e548833df83c3554229eff0672900bfe958b45fd"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Sep 10 06:41:00 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 10 12:27:29 2010 -0700"
      },
      "message": "sfc: Use MCDI RX_BAD_FCS_PKTS count as MAC rx_bad count\n\nCalculating rx_bad as rx_packets - rx_good is unnecessary and\nincorrect, since rx_good does not include control frames (e.g.\npause frames) and rx_packets does.\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e548833df83c3554229eff0672900bfe958b45fd",
      "tree": "85efc4a76dc356593d6d394776aeb845dc580fb6",
      "parents": [
        "cbd9da7be869f676afc204e1a664163778c770bd",
        "053d8f6622701f849fda2ca2c9ae596c13599ba9"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 22:27:33 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 22:27:33 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tnet/mac80211/main.c\n"
    },
    {
      "commit": "053d8f6622701f849fda2ca2c9ae596c13599ba9",
      "tree": "e5dd90cca3a69bc993b5aa860a9eeb8c9178450a",
      "parents": [
        "c9cedbba0fc591e1c0587f838932ca3f3c6fec57",
        "615cc2211c17ed05a2a5d94abdac6c340a8ea508"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:59:51 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:59:51 2010 -0700"
      },
      "message": "Merge branch \u0027vhost-net\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost\n"
    },
    {
      "commit": "cbd9da7be869f676afc204e1a664163778c770bd",
      "tree": "eee8a43469e77e882e2a388351693eccb0490ef4",
      "parents": [
        "dc99839cf600518ed1f20e47522fe7f629387078"
      ],
      "author": {
        "name": "Nikitas Angelinas",
        "email": "nikitasangelinas@gmail.com",
        "time": "Wed Sep 08 11:20:37 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:56:01 2010 -0700"
      },
      "message": "drivers/net/bnx2x: use ARRAY_SIZE macro in bnx2x_main.c\n\nReplace sizeof(bnx2x_parity_mask)/(sizeof(bnx2x_parity_mask[0]) with\nARRAY_SIZE(bnx2x_parity_mask) in drivers/net/bnx2x/bnx2x_main.c\n\nSigned-off-by: Nikitas Angelinas \u003cnikitasangelinas@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c9cedbba0fc591e1c0587f838932ca3f3c6fec57",
      "tree": "0e0111f7713bfb05974a42d803aa791b958af5be",
      "parents": [
        "201b6bab6798fcd8ec1cb30165b91fdb89a91775"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dcbw@redhat.com",
        "time": "Wed Sep 08 07:50:47 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:41:59 2010 -0700"
      },
      "message": "ipheth: remove incorrect devtype to WWAN\n\nThe \u0027wwan\u0027 devtype is meant for devices that require preconfiguration\nand *every* time setup before the ethernet interface can be used, like\ncellular modems which require a series of setup commands on serial ports\nor other mechanisms before the ethernet interface will handle packets.\n\nAs ipheth only requires one-per-hotplug pairing setup with no\npreconfiguration (like APN, phone #, etc) and the network interface is\nusable at any time after that initial setup, remove the incorrect\ndevtype wwan.\n\nSigned-off-by: Dan Williams \u003cdcbw@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "201b6bab6798fcd8ec1cb30165b91fdb89a91775",
      "tree": "3f616915202d513c2c4ca49037b1dbde631178c5",
      "parents": [
        "123031c0eeda6144b4002dc3285375aa9ae9dc11"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue Sep 07 20:33:24 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:41:59 2010 -0700"
      },
      "message": "MAINTAINERS: Add CAIF\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dc99839cf600518ed1f20e47522fe7f629387078",
      "tree": "2ed9fbafcba8b90b226b0c5db39234bd4ae80d77",
      "parents": [
        "d0e7cb5d401695809ba8c980124ab1d8c66efc8b"
      ],
      "author": {
        "name": "Florian Fainelli",
        "email": "florian@openwrt.org",
        "time": "Wed Sep 08 11:11:59 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:36:39 2010 -0700"
      },
      "message": "au1000-eth: change multi-line comments style\n\nSigned-off-by: Florian Fainelli \u003cflorian@openwrt.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d0e7cb5d401695809ba8c980124ab1d8c66efc8b",
      "tree": "ec2598de266cf3d9aa485d9f2f5e9b2b46e8bc4b",
      "parents": [
        "49a42c080fbba9e99b4339763dd7771569ee38c3"
      ],
      "author": {
        "name": "Florian Fainelli",
        "email": "florian@openwrt.org",
        "time": "Wed Sep 08 11:15:13 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:36:38 2010 -0700"
      },
      "message": "au1000-eth: remove volatiles, switch to I/O accessors\n\nRemove all the volatile keywords where they were used, switch to using the\nproper readl/writel accessors.\n\nSigned-off-by: Florian Fainelli \u003cflorian@openwrt.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "49a42c080fbba9e99b4339763dd7771569ee38c3",
      "tree": "c8c482cdf3cb8cbb2cdf9a7e10f0c398feae1128",
      "parents": [
        "215e17be9f390e787cf9b9e5c9020d298b41d513"
      ],
      "author": {
        "name": "Florian Fainelli",
        "email": "florian@openwrt.org",
        "time": "Wed Sep 08 11:11:49 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:36:38 2010 -0700"
      },
      "message": "au1000-eth: fix asm -\u003e linux headers inclusion\n\nReplace asm/io.h and asm/cpu.h wih linux/io.h and linux/cpu.h\n\nSigned-off-by: Florian Fainelli \u003cflorian@openwrt.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "215e17be9f390e787cf9b9e5c9020d298b41d513",
      "tree": "831125b7f6e981110f326fc5bcbde47f4c8a7451",
      "parents": [
        "18b8e15b0433ac682138ce5d03157ddc28bdf350"
      ],
      "author": {
        "name": "Florian Fainelli",
        "email": "florian@openwrt.org",
        "time": "Wed Sep 08 11:11:45 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:36:37 2010 -0700"
      },
      "message": "au1000-eth: fix bad printk usages\n\nUse pr_(info|err) and pr_cont where required instead of calls to printk.\nAdd missing pr_fmt to the driver.\n\nSigned-off-by: Florian Fainelli \u003cflorian@openwrt.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "18b8e15b0433ac682138ce5d03157ddc28bdf350",
      "tree": "b2b17e2537a52288813aaa1590ecfeafdf35ded8",
      "parents": [
        "ec7eabdde2cc3e71fa71f979bd3448c45122a4a8"
      ],
      "author": {
        "name": "Florian Fainelli",
        "email": "florian@openwrt.org",
        "time": "Wed Sep 08 11:11:40 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:36:37 2010 -0700"
      },
      "message": "au1000-eth: fix all but one \"line over 80 characters warnings\"\n\nOne line has not been changed because it would not improve readability.\n\nSigned-off-by: Florian Fainelli \u003cflorian@openwrt.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ec7eabdde2cc3e71fa71f979bd3448c45122a4a8",
      "tree": "543997d67852b46fcb041cc7c733b6c57d0f6f7e",
      "parents": [
        "3441592b34121a38047ed6680f0ed9b9017de9cf"
      ],
      "author": {
        "name": "Florian Fainelli",
        "email": "florian@openwrt.org",
        "time": "Wed Sep 08 11:11:31 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:36:36 2010 -0700"
      },
      "message": "au1000-eth: stylistic fixes\n\nThis patch fixes the following checkpatch.pl warnings:\n- spaces after tabs\n- space between function and arguments\n- one-line statement braces\n- tabs instead of spaces\n\nSigned-off-by: Florian Fainelli \u003cflorian@openwrt.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3441592b34121a38047ed6680f0ed9b9017de9cf",
      "tree": "62a590be79af628b4c70681585d99b36c28c6699",
      "parents": [
        "b2abd4c033c3965ce670841dfb401f5f166222d5"
      ],
      "author": {
        "name": "Florian Fainelli",
        "email": "florian@openwrt.org",
        "time": "Wed Sep 08 11:11:25 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:36:36 2010 -0700"
      },
      "message": "au1000-eth: typedefs removal\n\nSigned-off-by: Florian Fainelli \u003cflorian@openwrt.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b2abd4c033c3965ce670841dfb401f5f166222d5",
      "tree": "4dc7d0ac0f24001a95a9842a9c58468a343b4e08",
      "parents": [
        "fb621bac21fc315af9f66a754b7abe26ded3f260"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Sep 08 13:31:24 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:34:14 2010 -0700"
      },
      "message": "tipc: Optimize handling excess content on incoming messages\n\nRemove code that trimmed excess trailing info from incoming messages\narriving over an Ethernet interface.  TIPC now ignores the extra info\nwhile the message is being processed by the node, and only trims it off\nif the message is retransmitted to another node.  (This latter step is\ndone to ensure the extra info doesn\u0027t cause the sk_buff to exceed the\noutgoing interface\u0027s MTU limit.) The outgoing buffer is guaranteed to\nbe linear.\n\nSigned-off-by: Allan Stephens \u003callan.stephens@windriver.com\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fb621bac21fc315af9f66a754b7abe26ded3f260",
      "tree": "bd707d6f09a2b1204309ce895852637e12c207b1",
      "parents": [
        "49d61e2390c92bd226fc395a6165eb5a65ae4de6"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 08 22:48:31 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 21:33:23 2010 -0700"
      },
      "message": "ixgbevf: remove private net_device_stats\n\nUse the net_device provided net_device_stats structure.\n\nRemove ixgbevf_get_stats() now its not needed.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "49d61e2390c92bd226fc395a6165eb5a65ae4de6",
      "tree": "d5c6e07e51999aca2a461c7087b7a01461c66ba8",
      "parents": [
        "f39234d60617d37818b30991e6794643ce220296"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Sep 09 05:33:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 15:02:39 2010 -0700"
      },
      "message": "tunnels: missing rcu_assign_pointer()\n\nxfrm4_tunnel_register() \u0026 xfrm6_tunnel_register() should\nuse rcu_assign_pointer() to make sure previous writes\n(to handler-\u003enext) are committed to memory before chain\ninsertion.\n\nderegister functions dont need a particular barrier.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f39234d60617d37818b30991e6794643ce220296",
      "tree": "1aabce34fdfa06f1bc90b2281ac0a819a7df91ee",
      "parents": [
        "a700d8be733bd593ea4797dfde17aed4f35213c0"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Sep 08 03:48:48 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 15:02:39 2010 -0700"
      },
      "message": "net/core: add lock context change annotations in net/core/sock.c\n\n__lock_sock() and __release_sock() releases and regrabs lock but\nwere missing proper annotations. Add it. This removes following\nwarning from sparse. (Currently __lock_sock() does not emit any\nwarning about it but I think it is better to add also.)\n\n net/core/sock.c:1580:17: warning: context imbalance in \u0027__release_sock\u0027 - unexpected unlock\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a700d8be733bd593ea4797dfde17aed4f35213c0",
      "tree": "03686d890db4825472a3ae10ff49394994723d3f",
      "parents": [
        "cf0ac2b8a759fecbefd80f890c6dbe80ba65fd95"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Sep 08 03:48:47 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 15:02:38 2010 -0700"
      },
      "message": "net/core: remove address space warnings on verify_iovec()\n\nmove_addr_to_kernel() and copy_from_user() requires their argument\nas __user pointer but were missing proper markups. Add it.\nThis removes following warnings from sparse.\n\n net/core/iovec.c:44:52: warning: incorrect type in argument 1 (different address spaces)\n net/core/iovec.c:44:52:    expected void [noderef] \u003casn:1\u003e*uaddr\n net/core/iovec.c:44:52:    got void *msg_name\n net/core/iovec.c:55:34: warning: incorrect type in argument 2 (different address spaces)\n net/core/iovec.c:55:34:    expected void const [noderef] \u003casn:1\u003e*from\n net/core/iovec.c:55:34:    got struct iovec *msg_iov\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "123031c0eeda6144b4002dc3285375aa9ae9dc11",
      "tree": "2f7b13ffb639f3737b52ce47bf7bf258ff496f3a",
      "parents": [
        "e199e6136ce6b151e6638ae93dca60748424d900"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Sep 08 11:04:21 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 15:00:29 2010 -0700"
      },
      "message": "sctp: fix test for end of loop\n\nAdd a list_has_sctp_addr function to simplify loop\n\nBased on a patches by Dan Carpenter and David Miller\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nAcked-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cf0ac2b8a759fecbefd80f890c6dbe80ba65fd95",
      "tree": "d5feaeef197dc681d1cdab2e8070ac31f0c43141",
      "parents": [
        "f27e21a813e2c4ca74b30a5443602e75b146db9b",
        "905d64c89e2a9d71d0606904b7c3908633db6072"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 14:58:11 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 14:58:11 2010 -0700"
      },
      "message": "Merge branch \u0027for-davem\u0027 of git://oss.oracle.com/git/agrover/linux-2.6\n"
    },
    {
      "commit": "e199e6136ce6b151e6638ae93dca60748424d900",
      "tree": "0d66e0b5d227c36b005e4f5537f4bbcfc6ed4904",
      "parents": [
        "972c40b5bee429c84ba727f8ac0a08292bc5dc3d",
        "d56557af19867edb8c0e96f8e26399698a08857f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 23:49:04 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 23:49:04 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6\n"
    },
    {
      "commit": "972c40b5bee429c84ba727f8ac0a08292bc5dc3d",
      "tree": "c79f7c7491491269a8aa6af8bb5212daa0007177",
      "parents": [
        "719f835853a92f6090258114a72ffe41f09155cd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 08 13:26:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 21:47:13 2010 -0700"
      },
      "message": "KS8851: Correct RX packet allocation\n\nUse netdev_alloc_skb_ip_align() helper and do correct allocation\n\nTested-by: Abraham Arce \u003cx0066660@ti.com\u003e\nSigned-off-by: Abraham Arce \u003cx0066660@ti.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "719f835853a92f6090258114a72ffe41f09155cd",
      "tree": "a077b05397bf07a096be7f07b50375c5ed918ac2",
      "parents": [
        "ae2688d59b5f861dc70a091d003773975d2ae7fb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 08 05:08:44 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 21:45:01 2010 -0700"
      },
      "message": "udp: add rehash on connect()\n\ncommit 30fff923 introduced in linux-2.6.33 (udp: bind() optimisation)\nadded a secondary hash on UDP, hashed on (local addr, local port).\n\nProblem is that following sequence :\n\nfd \u003d socket(...)\nconnect(fd, \u0026remote, ...)\n\nnot only selects remote end point (address and port), but also sets\nlocal address, while UDP stack stored in secondary hash table the socket\nwhile its local address was INADDR_ANY (or ipv6 equivalent)\n\nSequence is :\n - autobind() : choose a random local port, insert socket in hash tables\n              [while local address is INADDR_ANY]\n - connect() : set remote address and port, change local address to IP\n              given by a route lookup.\n\nWhen an incoming UDP frame comes, if more than 10 sockets are found in\nprimary hash table, we switch to secondary table, and fail to find\nsocket because its local address changed.\n\nOne solution to this problem is to rehash datagram socket if needed.\n\nWe add a new rehash(struct socket *) method in \"struct proto\", and\nimplement this method for UDP v4 \u0026 v6, using a common helper.\n\nThis rehashing only takes care of secondary hash table, since primary\nhash (based on local port only) is not changed.\n\nReported-by: Krzysztof Piotr Oledzki \u003cole@ans.pl\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nTested-by: Krzysztof Piotr Oledzki \u003cole@ans.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f27e21a813e2c4ca74b30a5443602e75b146db9b",
      "tree": "5bab99e6d099ca835ddb052142e89d06daaa8e7f",
      "parents": [
        "e0386005ff2a729998735e10769d99e1acbc2dd1"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Sep 08 21:32:12 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 21:32:12 2010 -0700"
      },
      "message": "atlx: make strings const\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nAcked-by: Chris Snook \u003cchris.snook@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e0386005ff2a729998735e10769d99e1acbc2dd1",
      "tree": "c04134571b728581d9692fb16dffcdd38d52dbda",
      "parents": [
        "92e32eaee288ee2e838fe76680cbaeaea25643c6"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 08 21:31:35 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 21:31:35 2010 -0700"
      },
      "message": "net: inet_add_protocol() can use cmpxchg()\n\nUse cmpxchg() to get rid of spinlocks in inet_add_protocol() and\nfriends.\n\ninet_protos[] \u0026 inet6_protos[] are moved to read_mostly section\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "92e32eaee288ee2e838fe76680cbaeaea25643c6",
      "tree": "4411533cf6f942bb1934e915057b56cd693ea8f2",
      "parents": [
        "2b1b8edfe229b1832134827c6948d0b70029e965"
      ],
      "author": {
        "name": "Ondrej Zary",
        "email": "linux@rainbow-software.org",
        "time": "Wed Sep 08 21:29:20 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 21:29:20 2010 -0700"
      },
      "message": "cxacru: ignore cx82310_eth devices\n\nIgnore ADSL routers, which can have the same vendor and product IDs\nas ADSL modems but should be handled by the cx82310_eth driver.\n\nThis intentionally ignores device IDs that aren\u0027t currently handled\nby cx82310_eth. There may be other device IDs that perhaps shouldn\u0027t\nbe claimed by cxacru.\n\nSigned-off-by: Ondrej Zary \u003clinux@rainbow-software.org\u003e\nSigned-off-by: Simon Arlott \u003csimon@fire.lp0.eu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "905d64c89e2a9d71d0606904b7c3908633db6072",
      "tree": "ae1f56d4eedebec1a75441d6a66b97aea3e5fe5f",
      "parents": [
        "a46f561b774d90d8616473d56696e7d44fa1c9f1"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:03:54 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:55 2010 -0700"
      },
      "message": "RDS: Remove dead struct from rds.h\n\nflows are an obsolete date type.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "a46f561b774d90d8616473d56696e7d44fa1c9f1",
      "tree": "acfffa1745ee08a8ea863143df745a6e734855e2",
      "parents": [
        "fd128dfa50cfc4f2959dc4aa5d7468d33b988332"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Aug 25 09:34:10 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:54 2010 -0700"
      },
      "message": "RDS: rds.h: Replace u_int[size]_t with uint[size]_t\n\nReplace e.g. u_int32_t types with the more common uint32_t.\n\nReported-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "fd128dfa50cfc4f2959dc4aa5d7468d33b988332",
      "tree": "af53d62ccf9558091ea1d19d5653f913e642d472",
      "parents": [
        "20c72bd5f5f902e5a8745d51573699605bf8d21c"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Aug 25 09:32:17 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:52 2010 -0700"
      },
      "message": "RDS: Add rds.h to exported headers list\n\nAlso, a number of changes were made based on the assumption that\nrds.h wasn\u0027t exported, so roll these back.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "20c72bd5f5f902e5a8745d51573699605bf8d21c",
      "tree": "6df337e07d423a0859ab92f25525570e134baba1",
      "parents": [
        "59f740a6aeb2cde2f79fe0df38262d4c1ef35cd8"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Aug 25 05:51:28 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:51 2010 -0700"
      },
      "message": "RDS: Implement masked atomic operations\n\nAdd two CMSGs for masked versions of cswp and fadd. args\nstruct modified to use a union for different atomic op type\u0027s\narguments. Change IB to do masked atomic ops. Atomic op type\nin rds_message similarly unionized.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "59f740a6aeb2cde2f79fe0df38262d4c1ef35cd8",
      "tree": "e05c12cc5c8892bcca3928deb62121b1ee4cedd0",
      "parents": [
        "4518071ac1bcb76c64a55a3fddb39fb3d39add41"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Aug 03 13:52:47 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:50 2010 -0700"
      },
      "message": "RDS/IB: print string constants in more places\n\nThis prints the constant identifier for work completion status and rdma\ncm event types, like we already do for IB event types.\n\nA core string array helper is added that each string type uses.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "4518071ac1bcb76c64a55a3fddb39fb3d39add41",
      "tree": "b64a3c4e61fd41f1f7ef92d9e7d7c5ed27d3ba2c",
      "parents": [
        "ffcec0e110c198717eb0f6ac000c1e5397db9451"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jul 23 10:37:33 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:49 2010 -0700"
      },
      "message": "RDS: cancel connection work structs as we shut down\n\nNothing was canceling the send and receive work that might have been\nqueued as a conn was being destroyed.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "ffcec0e110c198717eb0f6ac000c1e5397db9451",
      "tree": "3bb8796f26a1e8730d576a099a6f6cc10c9d35d8",
      "parents": [
        "5adb5bc65f93e52341c3fc9d03d4030dd375e256"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jul 23 10:36:58 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:48 2010 -0700"
      },
      "message": "RDS: don\u0027t call rds_conn_shutdown() from rds_conn_destroy()\n\nrds_conn_shutdown() can return before the connection is shut down when\nit encounters an existing state that it doesn\u0027t understand.  This lets\nrds_conn_destroy() then start tearing down the conn from under paths\nthat are still using it.\n\nIt\u0027s more reliable the shutdown work and wait for krdsd to complete the\nshutdown callback.  This stopped some hangs I was seeing where krdsd was\ntrying to shut down a freed conn.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "5adb5bc65f93e52341c3fc9d03d4030dd375e256",
      "tree": "55b19c7757ccd64f58169a05cd63e91bee409bad",
      "parents": [
        "77510481c0c3980c8979ed236d63e59221fb8ce5"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jul 23 10:32:31 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:47 2010 -0700"
      },
      "message": "RDS: have sockets get transport module references\n\nRight now there\u0027s nothing to stop the various paths that use\nrs-\u003ers_transport from racing with rmmod and executing freed transport\ncode.  The simple fix is to have binding to a transport also hold a\nreference to the transport\u0027s module, removing this class of races.\n\nWe already had an unused t_owner field which was set for the modular\ntransports and which wasn\u0027t set for the built-in loop transport.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "77510481c0c3980c8979ed236d63e59221fb8ce5",
      "tree": "9b35be9b3a1de7ba6bf97b35823d65ce94033dbe",
      "parents": [
        "fe8ff6b58f040dd52d2db45972db8e0301847f1c"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Wed Jul 21 15:13:25 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:46 2010 -0700"
      },
      "message": "RDS: remove old rs_transport comment\n\nrs_transport is now also used by the rdma paths once the socket is\nbound.  We don\u0027t need this stale comment to tell us what cscope can.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "fe8ff6b58f040dd52d2db45972db8e0301847f1c",
      "tree": "e332f689cfd9838b585f6106ff493672ce1db598",
      "parents": [
        "ea819867b788728aca60717e4fdacb3df771f670"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jul 23 10:30:45 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:45 2010 -0700"
      },
      "message": "RDS: lock rds_conn_count decrement in rds_conn_destroy()\n\nrds_conn_destroy() can race with all other modifications of the\nrds_conn_count but it was modifying the count without locking.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "ea819867b788728aca60717e4fdacb3df771f670",
      "tree": "68952e283e4b119622c6e8244d96e41c623ae4b0",
      "parents": [
        "1bde04a63d532c2540d6fdee0a661530a62b1686"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Thu Jul 15 12:34:33 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:44 2010 -0700"
      },
      "message": "RDS/IB: protect the list of IB devices\n\nThe RDS IB device list wasn\u0027t protected by any locking.  Traversal in\nboth the get_mr and FMR flushing paths could race with additon and\nremoval.\n\nList manipulation is done with RCU primatives and is protected by the\nwrite side of a rwsem.  The list traversal in the get_mr fast path is\nprotected by a rcu read critical section.  The FMR list traversal is\nmore problematic because it can block while traversing the list.  We\nprotect this with the read side of the rwsem.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "1bde04a63d532c2540d6fdee0a661530a62b1686",
      "tree": "222d72e75824e25396b83e82bbd3769cc07599cc",
      "parents": [
        "8576f374ac9537674e3cccb0a9d43fa2b7ebbf5b"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Wed Jul 14 14:01:21 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:43 2010 -0700"
      },
      "message": "RDS/IB: print IB event strings as well as their number\n\nIt\u0027s nice to not have to go digging in the code to see which event\noccurred.  It\u0027s easy to throw together a quick array that maps the ib\nevent enums to their strings.  I didn\u0027t see anything in the stack that\ndoes this translation for us, but I also didn\u0027t look very hard.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "8576f374ac9537674e3cccb0a9d43fa2b7ebbf5b",
      "tree": "ed7279333989d204a6627b703ae568ba0136a4b1",
      "parents": [
        "b4e1da3c9a0ac9b01f45a8578b7347e3a31f9fb8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jul 19 17:06:46 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:42 2010 -0700"
      },
      "message": "RDS: flush fmrs before allocating new ones\n\nFlushing FMRs is somewhat expensive, and is currently kicked off when\nthe interrupt handler notices that we are getting low.  The result of\nthis is that FMR flushing only happens from the interrupt cpus.\n\nThis spreads the load more effectively by triggering flushes just before\nwe allocate a new FMR.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b4e1da3c9a0ac9b01f45a8578b7347e3a31f9fb8",
      "tree": "16f3021b21f2cbeb73a4532a91474fba9ab2a3ef",
      "parents": [
        "f046011cd73c372267befd10242988eb744649fe"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jul 19 17:02:41 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:41 2010 -0700"
      },
      "message": "RDS: properly use sg_init_table\n\nThis is only needed to keep debugging code from bugging.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f046011cd73c372267befd10242988eb744649fe",
      "tree": "d184275400dee81f2a5027728bda849bec338d99",
      "parents": [
        "ef87b7ea39a91906218a262686bcb8bad8b6b46e"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Wed Jul 14 13:55:35 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:40 2010 -0700"
      },
      "message": "RDS/IB: track signaled sends\n\nWe\u0027re seeing bugs today where IB connection shutdown clears the send\nring while the tasklet is processing completed sends.  Implementation\ndetails cause this to dereference a null pointer.  Shutdown needs to\nwait for send completion to stop before tearing down the connection.  We\ncan\u0027t simply wait for the ring to empty because it may contain\nunsignaled sends that will never be processed.\n\nThis patch tracks the number of signaled sends that we\u0027ve posted and\nwaits for them to complete.  It also makes sure that the tasklet has\nfinished executing.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "ef87b7ea39a91906218a262686bcb8bad8b6b46e",
      "tree": "4fe72c5b5f788d8109e715012ce2af57bba807d7",
      "parents": [
        "c20f5b9633bb0953bd2422f0f1430a2028cdbd0a"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jul 09 12:26:20 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:39 2010 -0700"
      },
      "message": "RDS: remove __init and __exit annotation\n\nThe trivial amount of memory saved isn\u0027t worth the cost of dealing with section\nmismatches.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "c20f5b9633bb0953bd2422f0f1430a2028cdbd0a",
      "tree": "dc628e1168c963940195ac5d2b5dbe3f54682240",
      "parents": [
        "d455ab64096b9a86849c7315c53e595330842db6"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Jul 07 16:46:26 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:38 2010 -0700"
      },
      "message": "RDS/IB: Use SLAB_HWCACHE_ALIGN flag for kmem_cache_create()\n\nWe are *definitely* counting cycles as closely as DaveM, so\nensure hwcache alignment for our recv ring control structs.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "d455ab64096b9a86849c7315c53e595330842db6",
      "tree": "2e02538ae4cb9c708c5dd474d7fbd739a31c0ab1",
      "parents": [
        "80c51be56ffa257d3177f0d750d90be65d30c22f"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Jul 06 15:04:34 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:36 2010 -0700"
      },
      "message": "RDS/IB: always process recv completions\n\nThe recv refill path was leaking fragments because the recv event handler had\nmarked a ring element as free without freeing its frag.  This was happening\nbecause it wasn\u0027t processing receives when the conn wasn\u0027t marked up or\nconnecting, as can be the case if it races with rmmod.\n\nTwo observations support always processing receives in the callback.\n\nFirst, buildup should only post receives, thus triggering recv event handler\ncalls, once it has built up all the state to handle them.  Teardown should\ndestroy the CQ and drain the ring before tearing down the state needed to\nprocess recvs.  Both appear to be true today.\n\nSecond, this test was fundamentally racy.  There is nothing to stop rmmod and\nconnection destruction from swooping in the moment after the conn state was\nsampled but before real receive procesing starts.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "80c51be56ffa257d3177f0d750d90be65d30c22f",
      "tree": "82c49257057595f9a406c25093ade2871f736241",
      "parents": [
        "515e079dab19cf774d1eec6e5f4ed65509e31ef1"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Jul 06 15:08:48 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:35 2010 -0700"
      },
      "message": "RDS: return to a single-threaded krdsd\n\nWe were seeing very nasty bugs due to fundamental assumption the current code\nmakes about concurrent work struct processing.  The code simpy isn\u0027t able to\nhandle concurrent connection shutdown work function execution today, for\nexample, which is very much possible once a multi-threaded krdsd was\nintroduced.  The problem compounds as additional work structs are added to the\nmix.\n\nkrdsd is no longer perforance critical now that send and receive posting and\nFMR flushing are done elsewhere, so the safest fix is to move back to the\nsingle threaded krdsd that the current code was built around.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "515e079dab19cf774d1eec6e5f4ed65509e31ef1",
      "tree": "1dcc0f211946c47cd19b6823574aaa1a32982ffa",
      "parents": [
        "8aeb1ba6630ffd44001ae9833842794df0107676"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Jul 06 15:09:56 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:34 2010 -0700"
      },
      "message": "RDS/IB: create a work queue for FMR flushing\n\nThis patch moves the FMR flushing work in to its own mult-threaded work queue.\nThis is to maintain performance in preparation for returning the main krdsd\nwork queue back to a single threaded work queue to avoid deep-rooted\nconcurrency bugs.\n\nThis is also good because it further separates FMRs, which might be removed\nsome day, from the rest of the code base.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "8aeb1ba6630ffd44001ae9833842794df0107676",
      "tree": "bc9a78da5281b371d3a9ecb2e00f7c381d9cd33b",
      "parents": [
        "24fa163a4bae74b3378d30e1bc776568cfca8121"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jun 25 14:58:16 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:33 2010 -0700"
      },
      "message": "RDS/IB: destroy connections on rmmod\n\nIB connections were not being destroyed during rmmod.\n\nFirst, recently IB device removal callback was changed to disconnect\nconnections that used the removing device rather than destroying them.  So\nconnections with devices during rmmod were not being destroyed.\n\nSecond, rds_ib_destroy_nodev_conns() was being called before connections are\ndisassociated with devices.  It would almost never find connections in the\nnodev list.\n\nWe first get rid of rds_ib_destroy_conns(), which is no longer called, and\nrefactor the existing caller into the main body of the function and get rid of\nthe list and lock wrappers.\n\nThen we call rds_ib_destroy_nodev_conns() *after* ib_unregister_client() has\nremoved the IB device from all the conns and put the conns on the nodev list.\n\nThe result is that IB connections are destroyed by rmmod.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "24fa163a4bae74b3378d30e1bc776568cfca8121",
      "tree": "309638f0739708cecd066ebad43f95832e3f8dd8",
      "parents": [
        "b6fb0df12db6c8b6bbcc7b5c9459b3bbf5f0cee6"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jun 25 14:59:49 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:32 2010 -0700"
      },
      "message": "RDS/IB: wait for IB dev freeing work to finish during rmmod\n\nThe RDS IB client removal callback can queue work to drop the final reference\nto an IB device.  We have to make sure that this function has returned before\nwe complete rmmod or the work threads can try to execute freed code.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "b6fb0df12db6c8b6bbcc7b5c9459b3bbf5f0cee6",
      "tree": "68729d0227028abc94abf9ab748dda3074bac244",
      "parents": [
        "fbf4d7e3d03587a983ee4e536251ea6c1c848ec2"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Jun 23 18:06:30 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:31 2010 -0700"
      },
      "message": "RDS/IB: Make ib_recv_refill return void\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "fbf4d7e3d03587a983ee4e536251ea6c1c848ec2",
      "tree": "35bfda02d59f576d440e8535719bf5c1350adf42",
      "parents": [
        "c9455d9996ba84af1f534c7e3944ea6f35d2fc54"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Jun 11 16:24:42 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:16:06 2010 -0700"
      },
      "message": "RDS: Remove unused XLIST_PTR_TAIL and xlist_protect()\n\nNot used.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "c9455d9996ba84af1f534c7e3944ea6f35d2fc54",
      "tree": "b0c00e94ed2081ff65aad9be0fa0e66b38048e47",
      "parents": [
        "7a0ff5dbdd0b4cb7ea8764da9d78f4bb2eebaf31"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Jun 11 15:18:51 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:32 2010 -0700"
      },
      "message": "RDS: whitespace\n"
    },
    {
      "commit": "7a0ff5dbdd0b4cb7ea8764da9d78f4bb2eebaf31",
      "tree": "a3e6e1b1af5d63b9f7cb969d831724eecaa98cd5",
      "parents": [
        "eabb732279f1a41ac9d066aeb56973ae505c4cbc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 11 11:26:02 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:30 2010 -0700"
      },
      "message": "RDS: use delayed work for the FMR flushes\n\nUsing a delayed work queue helps us make sure a healthy number of FMRs\nhave queued up over the limit.  It makes for a large improvement in RDMA\niops.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eabb732279f1a41ac9d066aeb56973ae505c4cbc",
      "tree": "03dfe99bca44129e5da3ec0e57113f3c931e5f35",
      "parents": [
        "6fa70da6081bbcf948801fd5ee0be4d222298a43"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 11 11:18:57 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:29 2010 -0700"
      },
      "message": "rds: more FMRs are faster\n\nWhen we add more FMRs, we flush them less often and so we go faster.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6fa70da6081bbcf948801fd5ee0be4d222298a43",
      "tree": "519fef6c63abe15d80173ad25c7cd5aae673df55",
      "parents": [
        "0f4b1c7e89e699f588807a914ec6e6396c851a72"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 11 11:17:59 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:28 2010 -0700"
      },
      "message": "rds: recycle FMRs through lockless lists\n\nFRM allocation and recycling is performance critical and fairly lock\nintensive.  The current code has a per connection lock that all\nprocesses bang on and it becomes a major bottleneck on large systems.\n\nThis changes things to use a number of cmpxchg based lists instead,\nallowing us to go through the whole FMR lifecycle without locking inside\nRDS.\n\nZach Brown pointed out that our usage of cmpxchg for xlist removal is\nracey if someone manages to remove and add back an FMR struct into the list\nwhile another CPU can see the FMR\u0027s address at the head of the list.\n\nThe second CPU might assume the list hasn\u0027t changed when in fact any\nnumber of operations might have happened in between the deletion and\nreinsertion.\n\nThis commit maintains a per cpu count of CPUs that are currently\nin xlist removal, and establishes a grace period to make sure that\nnobody can see an entry we have just removed from the list.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0f4b1c7e89e699f588807a914ec6e6396c851a72",
      "tree": "8b882f85f03089283f6d222bf8c7d5616a102ecd",
      "parents": [
        "501dcccdb7a2335cde07d4acb56e636182d62944"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jun 04 14:41:41 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:27 2010 -0700"
      },
      "message": "rds: fix rds_send_xmit() serialization\n\nrds_send_xmit() was changed to hold an interrupt masking spinlock instead of a\nmutex so that it could be called from the IB receive tasklet path.  This broke\nthe TCP transport because its xmit method can block and masks and unmasks\ninterrupts.\n\nThis patch serializes callers to rds_send_xmit() with a simple bit instead of\nthe current spinlock or previous mutex.  This enables rds_send_xmit() to be\ncalled from any context and to call functions which block.  Getting rid of the\nc_send_lock exposes the bare c_lock acquisitions which are changed to block\ninterrupts.\n\nA waitqueue is added so that rds_conn_shutdown() can wait for callers to leave\nrds_send_xmit() before tearing down partial send state.  This lets us get rid\nof c_senders.\n\nrds_send_xmit() is changed to check the conn state after acquiring the\nRDS_IN_XMIT bit to resolve races with the shutdown path.  Previously both\nworked with the conn state and then the lock in the same order, allowing them\nto race and execute the paths concurrently.\n\nrds_send_reset() isn\u0027t racing with rds_send_xmit() now that rds_conn_shutdown()\nproperly ensures that rds_send_xmit() can\u0027t start once the conn state has been\nchanged.  We can remove its previous use of the spinlock.\n\nFinally, c_send_generation is redundant.  Callers can race to test the c_flags\nbit by simply retrying instead of racing to test the c_send_generation atomic.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "501dcccdb7a2335cde07d4acb56e636182d62944",
      "tree": "e2079f8d22c498e6c7f1fcfa326e123b4945df7b",
      "parents": [
        "671202f3491cccdb267f88ad59ba0635aeb2a22e"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jun 04 14:25:27 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:26 2010 -0700"
      },
      "message": "rds: block ints when acquiring c_lock in rds_conn_message_info()\n\nconn-\u003ec_lock is acquired in interrupt context.  rds_conn_message_info() is\ncalled from user context and was acquiring c_lock without blocking interrupts,\nleading to possible deadlocks.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "671202f3491cccdb267f88ad59ba0635aeb2a22e",
      "tree": "0dbe27af4940fa3c6ede0a96b119653c4805185c",
      "parents": [
        "037f18a3074753991656189a091a5fa371999107"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Jun 04 14:26:32 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:25 2010 -0700"
      },
      "message": "rds: remove unused rds_send_acked_before()\n\nrds_send_acked_before() wasn\u0027t blocking interrupts when acquiring c_lock from\nuser context but nothing calls it.  Rather than fix its use of c_lock we just\nremove the function.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "037f18a3074753991656189a091a5fa371999107",
      "tree": "5452afd53bc7d05d712a5cdd9f937aa3591c75d3",
      "parents": [
        "33244125871734ebc0d8d147680a0d7e99385e0b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed May 26 21:45:06 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:24 2010 -0700"
      },
      "message": "RDS: use friendly gfp masks for prefill\n\nWhen prefilling the rds frags, we end up doing a lot of allocations.\nWe\u0027re not in atomic context here, and so there\u0027s no reason to dip into\natomic reserves.  This changes the prefills to use masks that allow\nwaiting.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "33244125871734ebc0d8d147680a0d7e99385e0b",
      "tree": "c4dad958a4de167f5b954e91bc90d69000cd89c1",
      "parents": [
        "fc24f78085e8771670af42f2b8929b16a0c98a22"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed May 26 22:05:37 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:23 2010 -0700"
      },
      "message": "RDS/IB: Add caching of frags and incs\n\nThis patch is based heavily on an initial patch by Chris Mason.\nInstead of freeing slab memory and pages, it keeps them, and\nfunnels them back to be reused.\n\nThe lock minimization strategy uses xchg and cmpxchg atomic ops\nfor manipulation of pointers to list heads. We anchor the lists with a\npointer to a list_head struct instead of a static list_head struct.\nWe just have to carefully use the existing primitives with\nthe difference between a pointer and a static head struct.\n\nFor example, \u0027list_empty()\u0027 means that our anchor pointer points to a list with\na single item instead of meaning that our static head element doesn\u0027t point to\nany list items.\n\nOriginal patch by Chris, with significant mods and fixes by Andy and Zach.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "fc24f78085e8771670af42f2b8929b16a0c98a22",
      "tree": "6396f72983d9674b57292ca3c068e7b14c5c31be",
      "parents": [
        "3427e854e1a0e76be8b3d75fc0fa878f59b43693"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue May 25 11:20:09 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:22 2010 -0700"
      },
      "message": "RDS/IB: Remove ib_recv_unmap_page()\n\nAll it does is call unmap_sg(), so just call that directly.\n\nThe comment above unmap_page also may be incorrect, so we\nshouldn\u0027t hold on to it, either.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "3427e854e1a0e76be8b3d75fc0fa878f59b43693",
      "tree": "cc0bb1c074612cfd6634ac6a4fa9c92709fa185a",
      "parents": [
        "0b088e003ccf316a76c51be5dec2d70b93be3be8"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon May 24 20:28:49 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:21 2010 -0700"
      },
      "message": "RDS: Assume recv-\u003er_frag is always NULL in refill_one()\n\nrefill_one() should never be called on a recv struct that\ndoesn\u0027t need a new r_frag allocated. Add a WARN and remove\nconditional around r_frag alloc code.\n\nAlso, add a comment to explain why r_ibinc may or may not\nneed refilling.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "0b088e003ccf316a76c51be5dec2d70b93be3be8",
      "tree": "76fb8b9ab49729a97e137b73bbf4e12b65cde89d",
      "parents": [
        "fc19de38be924728fea76026c0d1a6c4b6156084"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon May 24 20:12:41 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:20 2010 -0700"
      },
      "message": "RDS: Use page_remainder_alloc() for recv bufs\n\nInstead of splitting up a page into RDS_FRAG_SIZE chunks\nourselves, ask rds_page_remainder_alloc() to do it. While it\nis possible PAGE_SIZE \u003e FRAG_SIZE, on x86en it isn\u0027t, so having\nduplicate \"carve up a page into buffers\" code seems excessive.\n\nThe other modification this spawns is the use of a single\nstruct scatterlist in rds_page_frag instead of a bare page ptr.\nThis causes verbosity to increase in some places, and decrease\nin others.\n\nFinally, I decided to unify the lifetimes and alloc/free of\nrds_page_frag and its page. This is a nice simplification in itself,\nbut will be extra-nice once we come to adding cmason\u0027s recycling\npatch.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "fc19de38be924728fea76026c0d1a6c4b6156084",
      "tree": "31deb86bc1d6b11a2c671ee3c126fc7c27e02264",
      "parents": [
        "f3c6808d3d8513db2b0543538fc35c25a60fe7a7"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Mon May 24 13:16:57 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:19 2010 -0700"
      },
      "message": "RDS/IB: disconnect when IB devices are removed\n\nCurrently IB device removal destroys connections which are associated with the\ndevice.  This prevents connections from being re-established when replacement\ndevices are added.\n\nInstead we\u0027ll queue shutdown work on the connections as their devices are\nremoved.  When we see that devices are added we triger connection attempts on\nall connections that don\u0027t currently have a device.\n\nThe result is that RDS sockets can resume device-independent work (bcopy, not\nRDMA) across IB device removal and restoration.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "f3c6808d3d8513db2b0543538fc35c25a60fe7a7",
      "tree": "84ef99e9d615351000c5cfa81cc08c8c8ffb4be6",
      "parents": [
        "3e0249f9c05cb77b66f7f09644ca9ca208d991a9"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Mon May 24 13:14:36 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:18 2010 -0700"
      },
      "message": "RDS: introduce rds_conn_connect_if_down()\n\nA few paths had the same block of code to queue a connection\u0027s connect work if\nit was in the right state.  Let\u0027s move this in to a helper function.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "3e0249f9c05cb77b66f7f09644ca9ca208d991a9",
      "tree": "2f8aaddb51590d36a54b8f7044224073107d77d9",
      "parents": [
        "89bf9d4158b5a1b6bd00960eb2e47601ec8cc138"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue May 18 15:48:51 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:17 2010 -0700"
      },
      "message": "RDS/IB: add refcount tracking to struct rds_ib_device\n\nThe RDS IB client .remove callback used to free the rds_ibdev for the given\ndevice unconditionally.  This could race other users of the struct.  This patch\nadds refcounting so that we only free the rds_ibdev once all of its users are\ndone.\n\nMany rds_ibdev users are tied to connections.  We give the connection a\nreference and change these users to reference the device in the connection\ninstead of looking it up in the IB client data.  The only user of the IB client\ndata remaining is the first lookup of the device as connections are built up.\n\nIncrementing the reference count of a device found in the IB client data could\nrace with final freeing so we use an RCU grace period to make sure that freeing\nwon\u0027t happen until those lookups are done.\n\nMRs need the rds_ibdev to get at the pool that they\u0027re freed in to.  They exist\noutside a connection and many MRs can reference different devices from one\nsocket, so it was natural to have each MR hold a reference.  MR refs can be\ndropped from interrupt handlers and final device teardown can block so we push\nit off to a work struct.  Pool teardown had to be fixed to cancel its pending\nwork instead of deadlocking waiting for all queued work, including itself, to\nfinish.\n\nMRs get their reference from the global device list, which gets a reference.\nIt is left unprotected by locks and remains racy.  A simple global lock would\nbe a significant bottleneck.  More scalable (complicated) locking should be\ndone carefully in a later patch.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "89bf9d4158b5a1b6bd00960eb2e47601ec8cc138",
      "tree": "e11c5ea0b69fb1bc53a03f83570e160dbe3b005f",
      "parents": [
        "a46ca94e7fb2c93a59e08b42fd77d8c478fda5fc"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue May 18 15:44:50 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:16 2010 -0700"
      },
      "message": "RDS/IB: get the xmit max_sge from the RDS IB device on the connection\n\nrds_ib_xmit_rdma() was calling ib_get_client_data() to get at the rds_ibdevice\njust to get the max_sge for the transmit.  This patch instead has it get it\ndirectly off the rds_ibdev which is stored on the connection.\n\nThe current code won\u0027t free the rds_ibdev until all the IB connections that use\nit are freed.  So it\u0027s safe to reference the rds_ibdev this way.  In the future\nit also makes it easier to support proper reference counting of the rds_ibdev\nstruct.\n\nAs an additional bonus, this gets rid of the performance hit of calling in to\nthe IB stack to look up the rds_ibdev.  The current implementation in the IB\nstack acquires an interrupt blocking spinlock to protect the registration of\nclient callback data.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "a46ca94e7fb2c93a59e08b42fd77d8c478fda5fc",
      "tree": "2c7e4be2d85d55c0fc69d60c18504d8eec4acfe2",
      "parents": [
        "1cc2228c599f173d77000a250bf0541294e1a7be"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Mon May 24 13:14:59 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:15 2010 -0700"
      },
      "message": "RDS/IB: rds_ib_cm_handle_connect() forgot to unlock c_cm_lock\n\nrds_ib_cm_handle_connect() could return without unlocking the c_conn_lock if\nrds_setup_qp() failed.  Rather than adding another imbalanced mutex_unlock() to\nthis error path we only unlock the mutex once as we exit the function, reducing\nthe likelyhood of making this same mistake in the future.  We remove the\nprevious mulitple return sites, leaving one unambigious return path.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "1cc2228c599f173d77000a250bf0541294e1a7be",
      "tree": "cc84662c1fd550274e8bba759074873b7c8e017d",
      "parents": [
        "bcf50ef2ce3c5d8f2fe995259da16677898cb300"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 11 16:15:35 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:13 2010 -0700"
      },
      "message": "rds: Fix reference counting on the for xmit_atomic and xmit_rdma\n\nThis makes sure we have the proper number of references in\nrds_ib_xmit_atomic and rds_ib_xmit_rdma.  We also consistently\ndrop references the same way for all message types as the IOs end.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bcf50ef2ce3c5d8f2fe995259da16677898cb300",
      "tree": "4a90d8f1b77b027977ee2e5229a239faa9848177",
      "parents": [
        "abf454398c2ebafc629ebb8b149f5a752c79e919"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 11 15:15:15 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:12 2010 -0700"
      },
      "message": "rds: use RCU to protect the connection hash\n\nThe connection hash was almost entirely RCU ready, this\njust makes the final couple of changes to use RCU instead\nof spinlocks for everything.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "abf454398c2ebafc629ebb8b149f5a752c79e919",
      "tree": "17c57ca613fc3d8a49f9dfc99bf2f9c3b7e3fc30",
      "parents": [
        "c9e65383a20d9a656db70efbf67e57f8115ad776"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 11 15:14:52 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:11 2010 -0700"
      },
      "message": "RDS: use locking on the connection hash list\n\nrds_conn_destroy really needs locking while it changes the\nconnection hash.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c9e65383a20d9a656db70efbf67e57f8115ad776",
      "tree": "3055f38ada5a60e858fe66e12353cad37e8ebdd5",
      "parents": [
        "7e3f2952eeb1a0fe2aa9882fd1705a88f9d89b35"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 11 15:14:16 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:10 2010 -0700"
      },
      "message": "rds: Fix RDMA message reference counting\n\nThe RDS send_xmit code was trying to get fancy with message\ncounting and was dropping the final reference on the RDMA messages\ntoo early.  This resulted in memory corruption and oopsen.\n\nThe fix here is to always add a ref as the parts of the message passes\nthrough rds_send_xmit, and always drop a ref as the parts of the message\ngo through completion handling.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7e3f2952eeb1a0fe2aa9882fd1705a88f9d89b35",
      "tree": "903d89d0d1184bd1f33df2b5036615d1c40cfb06",
      "parents": [
        "38a4e5e61344490f18241333d7b1b368a3a38748"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 11 15:11:11 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:09 2010 -0700"
      },
      "message": "rds: don\u0027t let RDS shutdown a connection while senders are present\n\nThis is the first in a long line of patches that tries to fix races\nbetween RDS connection shutdown and RDS traffic.\n\nHere we are maintaining a count of active senders to make sure\nthe connection doesn\u0027t go away while they are using it.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "38a4e5e61344490f18241333d7b1b368a3a38748",
      "tree": "60268171e32aff9938334806d0debd5c35b3dc56",
      "parents": [
        "e4c52c98e04937ea87b0979a81354d0040d284f9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 11 15:09:45 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:15:08 2010 -0700"
      },
      "message": "rds: Use RCU for the bind lookup searches\n\nThe RDS bind lookups are somewhat expensive in terms of CPU\ntime and locking overhead.  This commit changes them into a\nfaster RCU based hash tree instead of the rbtrees they were using\nbefore.\n\nOn large NUMA systems it is a significant improvement.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e4c52c98e04937ea87b0979a81354d0040d284f9",
      "tree": "c7bfbd9d952ebb66e7491d7c3a1bc91db3fbfbb8",
      "parents": [
        "4a81802b5e5e0b059627d7173c917711cf35e668"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Apr 23 10:49:53 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:14:06 2010 -0700"
      },
      "message": "RDS/IB: add _to_node() macros for numa and use {k,v}malloc_node()\n\nAllocate send/recv rings in memory that is node-local to the HCA.\nThis significantly helps performance.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "4a81802b5e5e0b059627d7173c917711cf35e668",
      "tree": "2a26295afcfaa282cc898cfbb3ea27e9e40382b5",
      "parents": [
        "764f2dd92f5cd308d1c4372b33fea2b265c093f5"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Apr 23 11:04:21 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:29 2010 -0700"
      },
      "message": "RDS/IB: Remove unused variable in ib_remove_addr()\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "764f2dd92f5cd308d1c4372b33fea2b265c093f5",
      "tree": "f979329a2b5bfb0c92fc83e951d9ac7654c4ba78",
      "parents": [
        "c83188dcd76b1f0c17c31b4bbd8de57c634b19f8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 22 21:59:15 2010 -0400"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:28 2010 -0700"
      },
      "message": "rds: rcu-ize rds_ib_get_device()\n\nrds_ib_get_device is called very often as we turn an\nip address into a corresponding device structure.  It currently\ntake a global spinlock as it walks different lists to find active\ndevices.\n\nThis commit changes the lists over to RCU, which isn\u0027t very complex\nbecause they are not updated very often at all.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c83188dcd76b1f0c17c31b4bbd8de57c634b19f8",
      "tree": "1d66c7996693e36d88f9fa7bebcb28281612675d",
      "parents": [
        "976673ee1b92d939168c8c1fbad3e16c45caa545"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Apr 21 13:09:28 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:27 2010 -0700"
      },
      "message": "rds: per-rm flush_wait waitq\n\nThis removes a global waitqueue used to wait for rds messages\nand replaces it with a waitqueue inside the rds_message struct.\n\nThe global waitqueue turns into a global lock and significantly\nbottlenecks operations on large machines.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "976673ee1b92d939168c8c1fbad3e16c45caa545",
      "tree": "36c682f96789118bebe0c14e3a5a5353b184a22b",
      "parents": [
        "ce47f52f42e69d48d1b63fa618fce9cd7ffa9417"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Apr 21 13:04:43 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:26 2010 -0700"
      },
      "message": "rds: switch to rwlock on bind_lock\n\nThe bind_lock is almost entirely readonly, but it gets\nhammered during normal operations and is a major bottleneck.\n\nThis commit changes it to an rwlock, which takes it from 80%\nof the system time on a big numa machine down to much lower\nnumbers.\n\nA better fix would involve RCU, which is done in a later commit\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ce47f52f42e69d48d1b63fa618fce9cd7ffa9417",
      "tree": "6abfde17a22d48b2659ae33e69b69a3349afb749",
      "parents": [
        "9e29db0e3645cafa980e68a9c717a761448389e1"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Thu Apr 15 17:19:29 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:25 2010 -0700"
      },
      "message": "RDS: Update comments in rds_send_xmit()\n\nUpdate comments to reflect changes in previous commit.\n\nKeeping as separate commits due to different authorship.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "9e29db0e3645cafa980e68a9c717a761448389e1",
      "tree": "4ce87432acbda8e16c27c97f3d1ae5339bb53559",
      "parents": [
        "acfcd4d4ec4ed8cb504f96d4fabb7a94029b362b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 15 16:38:14 2010 -0400"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:24 2010 -0700"
      },
      "message": "RDS: Use a generation counter to avoid rds_send_xmit loop\n\nrds_send_xmit is required to loop around after it releases the lock\nbecause someone else could done a trylock, found someone working on the\nlist and backed off.\n\nBut, once we drop our lock, it is possible that someone else does come\nin and make progress on the list.  We should detect this and not loop\naround if another process is actually working on the list.\n\nThis patch adds a generation counter that is bumped every time we\nget the lock and do some send work.  If the retry notices someone else\nhas bumped the generation counter, it does not need to loop around and\ncontinue working.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "acfcd4d4ec4ed8cb504f96d4fabb7a94029b362b",
      "tree": "af63be50f94cdcb0338095142b1890b75f7ff2e8",
      "parents": [
        "a40aa9233aa22d69212d02f92e5b607bd4d658f4"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Mar 31 18:56:25 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:23 2010 -0700"
      },
      "message": "RDS: Get pong working again\n\nCall send_xmit() directly from pong()\n\nSet pongs as op_active\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "a40aa9233aa22d69212d02f92e5b607bd4d658f4",
      "tree": "f8c60fc02cb5ab58ea47fe5d381c140074149bbc",
      "parents": [
        "fcc5450c6386526034edc437e4cb2c67a6fdd7e9"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 29 17:10:01 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:22 2010 -0700"
      },
      "message": "RDS: Do wait_event_interruptible instead of wait_event\n\nCan\u0027t see a reason not to allow signals to interrupt the wait.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "fcc5450c6386526034edc437e4cb2c67a6fdd7e9",
      "tree": "87b98163a69413de3c14a37220edf22350cb25d9",
      "parents": [
        "51e2cba8b5936c13b40f0fa11aa4e84683dbc751"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 29 17:08:49 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:21 2010 -0700"
      },
      "message": "RDS: Remove send_quota from send_xmit()\n\nThe purpose of the send quota was really to give fairness\nwhen different connections were all using the same\nworkq thread to send backlogged msgs -- they could only send\nso many before another connection could make progress.\n\nNow that each connection is pushing the backlog from its\ncompletion handler, they are all guaranteed to make progress\nand the quota isn\u0027t needed any longer.\n\nA thread *will* have to send all previously queued data, as well\nas any further msgs placed on the queue while while c_send_lock\nwas held. In a pathological case a single process can get\nroped into doing this for long periods while other threads\nget off free. But, since it can only do this until the transport\nreports full, this is a bounded scenario.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "51e2cba8b5936c13b40f0fa11aa4e84683dbc751",
      "tree": "13a6924d085f0e6e734ad1a2a43c1d3af5208101",
      "parents": [
        "ab1a6926f589c51e7a57ce7544d85272c4acc854"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 29 17:47:30 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:20 2010 -0700"
      },
      "message": "RDS: Move atomic stats from general to ib-specific area\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "ab1a6926f589c51e7a57ce7544d85272c4acc854",
      "tree": "dbe19519db76e5dea8d01864fcd4c39441d26b64",
      "parents": [
        "cf4b7389ee812817deeb11da1422004e01b50646"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 29 16:52:12 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:19 2010 -0700"
      },
      "message": "RDS: rds_message_unmapped() doesn\u0027t need to check if queue active\n\nIf the queue has nobody on it, then wake_up does nothing.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "cf4b7389ee812817deeb11da1422004e01b50646",
      "tree": "318d1e1da095880a19fc41992a3b57e9190e3b23",
      "parents": [
        "f2ec76f288118fb18449402d75383212cbcb6762"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 29 16:50:54 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:18 2010 -0700"
      },
      "message": "RDS: Fix locking in send on m_rs_lock\n\nDo not nest m_rs_lock under c_lock\n\nDisable interrupts in {rdma,atomic}_send_complete\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "f2ec76f288118fb18449402d75383212cbcb6762",
      "tree": "0b5969496be44c1c94ec73fec1d97d7ccc88fcc7",
      "parents": [
        "2fa57129df61bf3fb7d90c5486fe15df94091f61"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 29 16:46:46 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:17 2010 -0700"
      },
      "message": "RDS: Use NOWAIT in message_map_pages()\n\nCan no longer block, so use NOWAIT.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    }
  ],
  "next": "2fa57129df61bf3fb7d90c5486fe15df94091f61"
}
