)]}'
{
  "log": [
    {
      "commit": "ff51bf841587c75b58d25ed77263158619784dd3",
      "tree": "85d415536b84c48afe2aea0243f420ac262e1bbd",
      "parents": [
        "d0c2b0d265a0f1f92922a99a31def9da582197ac"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Oct 19 08:08:33 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 21 04:26:39 2010 -0700"
      },
      "message": "rds: make local functions/variables static\n\nThe RDS protocol has lots of functions that should be\ndeclared static. rds_message_get/add_version_extension is\nremoved since it defined but never used.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "f17a1a55fb672d7f64be7f2e940ef5669e5efa0a",
      "tree": "ed1651f64ade2676101766af764d11ef98e30f41",
      "parents": [
        "77dd550e5547846604ff6f90c4dc6bba4414e485"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Thu Mar 18 17:19:52 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:11 2010 -0700"
      },
      "message": "RDS: Refill recv ring directly from tasklet\n\nPerformance is better if we use allocations that don\u0027t block\nto refill the receive ring. Since the whole reason we were\nkicking out to the worker thread was so we could do blocking\nallocs, we no longer need to do this.\n\nRemove gfp params from rds_ib_recv_refill(); we always use\nGFP_NOWAIT.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "ff3d7d36134ef7138803734fdbf91cc986ea7976",
      "tree": "77ef55e071f84f1b97550dbc6d6755cb3089339b",
      "parents": [
        "aa0a4ef4ac3a3c5ffa35e32520bfbc0922ef3630"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 01 14:03:09 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:08 2010 -0700"
      },
      "message": "RDS: Perform unmapping ops in stages\n\nPreviously, RDS would wait until the final send WR had completed\nand then handle cleanup. With silent ops, we do not know\nif an atomic, rdma, or data op will be last. This patch\nhandles any of these cases by keeping a pointer to the last\nop in the message in m_last_op.\n\nWhen the TX completion event fires, rds dispatches to per-op-type\ncleanup functions, and then does whole-message cleanup, if the\nlast op equalled m_last_op.\n\nThis patch also moves towards having op-specific functions take\nthe op struct, instead of the overall rm struct.\n\nrds_ib_connection has a pointer to keep track of a a partially-\ncompleted data send operation. This patch changes it from an\nrds_message pointer to the narrower rm_data_op pointer, and\nmodifies places that use this pointer as needed.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "f8b3aaf2ba8ca9e27b47f8bfdff07c8b968f2c05",
      "tree": "42de574167e590ca2e413314b6486df916cd1f31",
      "parents": [
        "d0ab25a83c4a08cd98b73a37d3f4c069f7b4f50b"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 01 14:11:53 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:58 2010 -0700"
      },
      "message": "RDS: Remove struct rds_rdma_op\n\nA big changeset, but it\u0027s all pretty dumb.\n\nstruct rds_rdma_op was already embedded in struct rm_rdma_op.\nRemove rds_rdma_op and put its members in rm_rdma_op. Rename\nmembers with \"op_\" prefix instead of \"r_\", for consistency.\n\nOf course this breaks a lot, so fixup the code accordingly.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "241eef3e2f51fe4ad50abacd7f79c4e2d468197e",
      "tree": "020170cb9c3bea79d767b19cd7362a51b8446667",
      "parents": [
        "d37c9359056f4f07b37e59810f0ece1031e280b2"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 19 21:25:26 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:55 2010 -0700"
      },
      "message": "RDS: Implement silent atomics\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "1d34f175712b59ad292ecbbaa8fc05402a1fd8ed",
      "tree": "93a7072243dfc511e8bdbb24516df957db983454",
      "parents": [
        "da5a06cef5724737af4315715632f0a07dd5e116"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Thu Jan 14 15:08:33 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:52 2010 -0700"
      },
      "message": "RDS: Remove unsignaled_bytes sysctl\n\nRemoved unsignaled_bytes sysctl and code to signal\nbased on it. I believe unsignaled_wrs is more than\nsufficient for our purposes.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "919ced4ce7d6ac62dd5be62d8993fe22a527d53a",
      "tree": "f201cb777e39cee0fa030ebf0e71558b3227b9c9",
      "parents": [
        "6f3d05db0da0b874afd2dd229bed715133532f8d"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Jan 13 16:32:24 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:50 2010 -0700"
      },
      "message": "RDS/IB: Remove ib_[header/data]_sge() functions\n\nThese functions were to cope with differently ordered\nsg entries depending on RDS 3.0 or 3.1+. Now that\nwe\u0027ve dropped 3.0 compatibility we no longer need them.\n\nAlso, modify usage sites for these to refer to sge[0] or [1]\ndirectly. Reorder code to initialize header sgs first.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "809fa148a29467954280fe8b7f97c92403f6293c",
      "tree": "cd04f946f9490a42606436bdf89c7cb5f0ccc733",
      "parents": [
        "6200ed7799d9225f363f157ab61f1566cfd80e19"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 14:41:46 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:46 2010 -0700"
      },
      "message": "RDS: inc_purge() transport function unused - remove it\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "40589e74f7ba855f3a887c9d4abe9d100c5b039c",
      "tree": "f32b0414ae3cfe8868fbdb130f9b24ac19794ae3",
      "parents": [
        "15133f6e67d8d646d0744336b4daa3135452cb0d"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 10:50:48 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:42 2010 -0700"
      },
      "message": "RDS: Base init_depth and responder_resources on hw values\n\nInstead of using a constant for initiator_depth and\nresponder_resources, read the per-QP values when the\ndevice is enumerated, and then use these values when creating\nthe connection.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "15133f6e67d8d646d0744336b4daa3135452cb0d",
      "tree": "e5675d5a3ab240edc9a66af6b891dd75fa9eabae",
      "parents": [
        "a63273d4992603979ddb181b6a8f07082839b39f"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 14:33:38 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:41 2010 -0700"
      },
      "message": "RDS: Implement atomic operations\n\nImplement a CMSG-based interface to do FADD and CSWP ops.\n\nAlter send routines to handle atomic ops.\n\nAdd atomic counters to stats.\n\nAdd xmit_atomic() to struct rds_transport\n\nInline rds_ib_send_unmap_rdma into unmap_rm\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "d521b63b27e3a397e0ef7ca86b6e813861083c83",
      "tree": "d27bc29f9e0c7beb4b1e36b252ce71f6d008909f",
      "parents": [
        "0514f8a9c0cbd26afa70dc56406cc0ee1e134dcf"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Oct 30 08:51:57 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 30 15:06:39 2009 -0700"
      },
      "message": "RDS/IB+IW: Move recv processing to a tasklet\n\nMove receive processing from event handler to a tasklet.\nThis should help prevent hangcheck timer from going off\nwhen RDS is under heavy load.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a870d62726721785c34fa73d852bd35e5d1b295b",
      "tree": "bab3e33c8030e296477d4719817dfbe75303f04f",
      "parents": [
        "edacaeae52ade6cbb3a0704db32a9fb4a219dee3"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Jul 17 13:13:33 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 20 08:03:13 2009 -0700"
      },
      "message": "RDS/IB: Always use PAGE_SIZE for FMR page size\n\nWhile FMRs allow significant flexibility in what size of pages they can use,\nwe really just want FMR pages to match CPU page size. Roland says we can\ncount on this always being supported, so this simplifies things.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "02a6a2592e41d27644d647f3bce23598649961bc",
      "tree": "7455566e6f3ff13279bb5949f06e398dbb8cff1a",
      "parents": [
        "9ddbcfa098bae757d3760dd1dbf2847a0bd5a525"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Jul 17 13:13:24 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 20 08:03:03 2009 -0700"
      },
      "message": "RDS/IB: Handle connections using RDS 3.0 wire protocol\n\nThe big differences between RDS 3.0 and 3.1 are protocol-level\nflow control, and with 3.1 the header is in front of the data. The header\nalways ends up in the header buffer, and the data goes in the data page.\n\nIn 3.0 our \"header\" is a trailer, and will end up either in the data\npage, the header buffer, or split across the two. Since 3.1 is backwards-\ncompatible with 3.0, we need to continue to support these cases. This\npatch does that -- if using RDS 3.0 wire protocol, it will copy the header\nfrom wherever it ended up into the header buffer.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3ba23ade464cca7c4a7ba5628c613339d3f2e161",
      "tree": "b0c5e487a9b2461fbbfdcedde870d2b545b5deb3",
      "parents": [
        "4edf547b4d0f886acf5aa5a0c8f8edbaff280830"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Jul 17 13:13:22 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 20 08:03:01 2009 -0700"
      },
      "message": "RDS: Set retry_count to 2 and make modifiable via modparam\n\nThis will be default cause IB connections to failover faster,\nbut allow a longer retry count to be used if desired.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7b70d0336da777c00395cc7a503497c2cdabd1a8",
      "tree": "60da1fba7bdfb7d905ab0fe9b23b5289f068265f",
      "parents": [
        "d39e0602bb987133321d358d9b837d67c27b223d"
      ],
      "author": {
        "name": "Steve Wise",
        "email": "swise@opengridcomputing.com",
        "time": "Thu Apr 09 14:09:39 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 09 17:21:17 2009 -0700"
      },
      "message": "RDS/IW+IB: Allow max credit advertise window.\n\nFix hack that restricts the credit advertisement to 127.\n\nSigned-off-by: Steve Wise \u003cswise@opengridcomputing.com\u003e\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8cbd9606a6367c221a7bbcc47f3ab1a8c31b6437",
      "tree": "9ff2adf88be32383fd59dc133f1cd6670b9ee815",
      "parents": [
        "745cbccac3fe8cead529a1b3358e1e86a1505bfa"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Apr 01 08:20:20 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 02 00:52:22 2009 -0700"
      },
      "message": "RDS: Use spinlock to protect 64b value update on 32b archs\n\nWe have a 64bit value that needs to be set atomically.\nThis is easy and quick on all 64bit archs, and can also be done\non x86/32 with set_64bit() (uses cmpxchg8b). However other\n32b archs don\u0027t have this.\n\nI actually changed this to the current state in preparation for\nmainline because the old way (using a spinlock on 32b) resulted in\nunsightly #ifdefs in the code. But obviously, being correct takes\nprecedence.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "745cbccac3fe8cead529a1b3358e1e86a1505bfa",
      "tree": "6c865b19881dbdd64556cc1827f6966d8a646a38",
      "parents": [
        "f1cffcbfcc53b825da7d1d26244aabd8dccb24aa"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Apr 01 08:20:19 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 02 00:52:22 2009 -0700"
      },
      "message": "RDS: Rewrite connection cleanup, fixing oops on rmmod\n\nThis fixes a bug where a connection was unexpectedly\nnot on *any* list while being destroyed. It also\ncleans up some code duplication and regularizes some\nfunction names.\n\n* Grab appropriate lock in conn_free() and explain in comment\n* Ensure via locking that a conn is never not on either\n  a dev\u0027s list or the nodev list\n* Add rds_xx_remove_conn() to match rds_xx_add_conn()\n* Make rds_xx_add_conn() return void\n* Rename remove_{,nodev_}conns() to\n  destroy_{,nodev_}conns() and unify their implementation\n  in a helper function\n* Document lock ordering as nodev conn_lock before\n  dev_conn_lock\n\nReported-by: Yosef Etigin \u003cyosefe@voltaire.com\u003e\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ec16227e14141e4fd7ae76354c09dadfe2449d9e",
      "tree": "9a20de7d9a0688d721517c2b38d6be83956c7ca4",
      "parents": [
        "eff5f53bef75c0864a5da06bb688939092b848dc"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Feb 24 15:30:30 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 26 23:39:30 2009 -0800"
      },
      "message": "RDS/IB: Infiniband transport\n\nRegisters as an RDS transport and an IB client, and uses IB CM\nAPI to allocate ids, queue pairs, and the rest of that fun stuff.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
