)]}'
{
  "log": [
    {
      "commit": "d139ff0907dac9ef72fb2cf301e345bac3aec42f",
      "tree": "0ba63235a10b7640bc8b613da0d0cda220a55087",
      "parents": [
        "fc8162e3c034af743d8def435fda6396603d321f"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Thu Oct 28 15:40:59 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Oct 30 16:34:18 2010 -0700"
      },
      "message": "RDS: Let rds_message_alloc_sgs() return NULL\n\nEven with the previous fix, we still are reading the iovecs once\nto determine SGs needed, and then again later on. Preallocating\nspace for sg lists as part of rds_message seemed like a good idea\nbut it might be better to not do this. While working to redo that\ncode, this patch attempts to protect against userspace rewriting\nthe rds_iovec array between the first and second accesses.\n\nThe consequences of this would be either a too-small or too-large\nsg list array. Too large is not an issue. This patch changes all\ncallers of message_alloc_sgs to handle running out of preallocated\nsgs, and fail gracefully.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "a7d3a281483684f77e350b045af7f80a149fc4c7",
      "tree": "d15beb494e7d7cf0691adec8ffebe098608c6620",
      "parents": [
        "2ad8099b58f274dc23bc866ca259d7e5db87fa1a"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 29 16:20:18 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:15 2010 -0700"
      },
      "message": "RDS: Call rds_send_xmit() directly from sendmsg()\n\nrds_sendmsg() is calling the send worker function to\nsend the just-queued datagrams, presumably because it wants\nthe behavior where anything not sent will re-call the send\nworker. We now ensure all queued datagrams are sent by retrying\nfrom the send completion handler, so this isn\u0027t needed any more.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "2ad8099b58f274dc23bc866ca259d7e5db87fa1a",
      "tree": "e659d7178d1e2729fc306d3b5dbb4e5e5f47544a",
      "parents": [
        "049ee3f500954176a87f22e6ee3e98aecb1b8958"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Mar 23 17:48:04 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:13 2010 -0700"
      },
      "message": "RDS: rds_send_xmit() locking/irq fixes\n\nrds_message_put() cannot be called with irqs off, so move it after\nirqs are re-enabled.\n\nSpinlocks throughout the function do not to use _irqsave because\nthe lock of c_send_lock at top already disabled irqs.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "049ee3f500954176a87f22e6ee3e98aecb1b8958",
      "tree": "5dfd8cf3e6d9a7a15e80f6ddee7f4ce7c4aa7a8c",
      "parents": [
        "f17a1a55fb672d7f64be7f2e940ef5669e5efa0a"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Mar 23 17:39:07 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:12 2010 -0700"
      },
      "message": "RDS: Change send lock from a mutex to a spinlock\n\nThis change allows us to call rds_send_xmit() from a tasklet,\nwhich is crucial to our new operating model.\n\n* Change c_send_lock to a spinlock\n* Update stats fields \"sem_\" to \"_lock\"\n* Remove unneeded rds_conn_is_sending()\n\nAbout locking between shutdown and send -- send checks if the\nconnection is up. Shutdown puts the connection into\nDISCONNECTING. After this, all threads entering send will exit\nimmediately. However, a thread could be *in* send_xmit(), so\nshutdown acquires the c_send_lock to ensure everyone is out\nbefore proceeding with connection shutdown.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "77dd550e5547846604ff6f90c4dc6bba4414e485",
      "tree": "ea37afea7f0d857e01f214f703018426f6d8b920",
      "parents": [
        "e32b4a70495aac6a612e13f4c21db09dd756ff2c"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 22 15:22:04 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:10 2010 -0700"
      },
      "message": "RDS: Stop supporting old cong map sending method\n\nWe now ask the transport to give us a rm for the congestion\nmap, and then we handle it normally. Previously, the\ntransport defined a function that we would call to send\na congestion map.\n\nConvert TCP and loop transports to new cong map method.\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": "aa0a4ef4ac3a3c5ffa35e32520bfbc0922ef3630",
      "tree": "13b078f08c9411e3f8f7052c79add9db228a00b6",
      "parents": [
        "2c3a5f9abb1dc5efdab8ba9a568b1661c65fd1e3"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Apr 13 12:00:35 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:07 2010 -0700"
      },
      "message": "RDS: Make sure cmsgs aren\u0027t used in improper ways\n\nIt hasn\u0027t cropped up in the field, but this code ensures it is\nimpossible to issue operations that pass an rdma cookie (DEST, MAP)\nin the same sendmsg call that\u0027s actually initiating rdma or atomic\nops.\n\nDisallowing this perverse-but-technically-allowed usage makes silent\nRDMA heuristics slightly easier.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "2c3a5f9abb1dc5efdab8ba9a568b1661c65fd1e3",
      "tree": "72b6a4c5298fecf46637987fd8ae42296dc90a97",
      "parents": [
        "7e3bd65ebfd5d6cd76b8b979920c632d6e6b4b2a"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 01 16:10:40 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:06 2010 -0700"
      },
      "message": "RDS: Add flag for silent ops. Do atomic op before RDMA\n\nAdd a flag to the API so users can indicate they want\nsilent operations. This is needed because silent ops\ncannot be used with USE_ONCE MRs, so we can\u0027t just\nassume silent.\n\nAlso, change send_xmit to do atomic op before rdma op if\nboth are present, and centralize the hairy logic to determine if\nwe want to attempt silent, or not.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "940786eb0a0faf3f30898a1cc7c1540d54c1aff6",
      "tree": "a8ca1a5df3154b57cc43380ff529898215c625a3",
      "parents": [
        "ee4c7b47e46a9dea789aadb8279c8505f755b3ee"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Feb 19 18:04:58 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:04 2010 -0700"
      },
      "message": "RDS: queue failure notifications for dropped atomic ops\n\nWhen dropping ops in the send queue, we notify the client\nof failed rdma ops they asked for notifications on, but not\natomic ops. It should be for both.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "372cd7dedfd1ea93a9ae8d9c282e910dc1b76773",
      "tree": "248c672e0fd7fdb8015c51d02a0e74df8d9feef9",
      "parents": [
        "5b2366bd2835919e2e6a836e837eab4a9274bd46"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Feb 03 19:40:32 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:02 2010 -0700"
      },
      "message": "RDS: Do not set op_active in r_m_copy_from_user().\n\nDo not allocate sgs for data for 0-length datagrams\n\nSet data.op_active in rds_sendmsg() instead of\nrds_message_copy_from_user().\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "5b2366bd2835919e2e6a836e837eab4a9274bd46",
      "tree": "ee0be5166dfec4acc006a23ddc9ea5788dbb90ea",
      "parents": [
        "6c7cc6e4694dc464ae884332f2a322973497e3cf"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Feb 03 19:36:44 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:01 2010 -0700"
      },
      "message": "RDS: Rewrite rds_send_xmit\n\nSimplify rds_send_xmit().\n\nSend a congestion map (via xmit_cong_map) without\ndecrementing send_quota.\n\nMove resetting of conn xmit variables to end of loop.\n\nUpdate comments.\n\nImplement a special case to turn off sending an rds header\nwhen there is an atomic op and no other data.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "6c7cc6e4694dc464ae884332f2a322973497e3cf",
      "tree": "9af8e2e0874ce78f9a500e22a79f9274f5efe0fd",
      "parents": [
        "f8b3aaf2ba8ca9e27b47f8bfdff07c8b968f2c05"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Jan 27 18:04:18 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:59 2010 -0700"
      },
      "message": "RDS: Rename data op members prefix from m_ to op_\n\nFor consistency.\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": "6200ed7799d9225f363f157ab61f1566cfd80e19",
      "tree": "2c623f0c0c28bdb3b67a911b60b07a9a7566b9f0",
      "parents": [
        "d22faec22c2ab2364fd8fc3c8159b0b5b28b0fd1"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 10:53:05 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:44 2010 -0700"
      },
      "message": "RDS: Whitespace\n\nTidy up some whitespace issues.\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": "a63273d4992603979ddb181b6a8f07082839b39f",
      "tree": "2132efc5d723b02df281dc308d4e892aca295be7",
      "parents": [
        "f4dd96f7b27743e568cec519eff0f951c56833c6"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 14:19:32 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:40 2010 -0700"
      },
      "message": "RDS: Clear up some confusing code in send_remove_from_sock\n\nThe previous code was correct, but made the assumption that\nif r_notifier was non-NULL then either r_recverr or r_notify\nwas true. Valid, but fragile. Changed to explicitly check\nr_recverr (shows up in greps for recverr now, too.)\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "ff87e97a9d70c9ae133d3d3d7792b26ab85f4297",
      "tree": "32de73cdf5e4353e89b3351eaae695f69faa868b",
      "parents": [
        "21f79afa5fda2820671a8f64c3d0e43bb118053b"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 14:13:15 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:38 2010 -0700"
      },
      "message": "RDS: make m_rdma_op a member of rds_message\n\nThis eliminates a separate memory alloc, although\nit is now necessary to add an \"r_active\" flag, since\nit is no longer to use the m_rdma_op pointer as an\nindicator of if an rdma op is present.\n\nrdma SGs allocated from rm sg pool.\n\nrds_rm_size also gets bigger. It\u0027s a little inefficient to\nrun through CMSGs twice, but it makes later steps a lot smoother.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "21f79afa5fda2820671a8f64c3d0e43bb118053b",
      "tree": "54029e0dbe3e4a68d579c02c5e9ed9d1fb63cfae",
      "parents": [
        "fc445084f185cdd877bec323bfe724a361e2292a"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 12:57:27 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:37 2010 -0700"
      },
      "message": "RDS: fold rdma.h into rds.h\n\nRDMA is now an intrinsic part of RDS, so it\u0027s easier to just have\na single header.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "fc445084f185cdd877bec323bfe724a361e2292a",
      "tree": "eda014c09872cbbacc411ea3b89f359291ccb577",
      "parents": [
        "3ef13f3c22aaea28aff383cb0883481d24885456"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 12:56:06 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:36 2010 -0700"
      },
      "message": "RDS: Explicitly allocate rm in sendmsg()\n\nr_m_copy_from_user used to allocate the rm as well as kernel\nbuffers for the data, and then copy the data in. Now, sendmsg()\nallocates the rm, although the data buffer alloc still happens\nin r_m_copy_from_user.\n\nSGs are still allocated with rm, but now r_m_alloc_sgs() is\nused to reserve them. This allows multiple SG lists to be\nallocated from the one rm -- this is important once we also\nwant to alloc our rdma sgl from this pool.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "e779137aa76d38d5c33a98ed887092ae4e4f016f",
      "tree": "af0a34f9334bd11ca507d4e63a963c561ff981ae",
      "parents": [
        "8690bfa17aea4c42da1bcf90a7af93d161eca624"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 12:15:02 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:33 2010 -0700"
      },
      "message": "RDS: break out rdma and data ops into nested structs in rds_message\n\nClearly separate rdma-related variables in rm from data-related ones.\nThis is in anticipation of adding atomic support.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "8690bfa17aea4c42da1bcf90a7af93d161eca624",
      "tree": "88c4c5fa63aab0c18cf13228c4b3a6f980aa74be",
      "parents": [
        "2dc393573430f853e56e25bf4b41c34ba2aa8fd6"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 11:56:44 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:32 2010 -0700"
      },
      "message": "RDS: cleanup: remove \"\u003d\u003d NULL\"s and \"!\u003d NULL\"s in ptr comparisons\n\nFavor \"if (foo)\" style over \"if (foo !\u003d NULL)\".\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "9de0864cf55927a7383b5ba6e48834ff3ef053de",
      "tree": "875dcd8ecf01f539ac050763b449573d4210dadf",
      "parents": [
        "7c82eaf00ec7d460932be9314b29997006b799b6"
      ],
      "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:07:32 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": "7c82eaf00ec7d460932be9314b29997006b799b6",
      "tree": "dd1e46ceb37ab4d5b6688d04805240eb9fcb7fbe",
      "parents": [
        "35b52c70534cb7193b218ec12efe6bc595312097"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Feb 19 18:01:41 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:07:32 2010 -0700"
      },
      "message": "RDS: Rewrite rds_send_drop_to() for clarity\n\nThis function has been the source of numerous bugs; it\u0027s just\ntoo complicated. Simplified to nest spinlocks cleanly within\nthe second loop body, and kick out early if there are no\nrms to drop.\n\nThis will be a little slower because conn lock is grabbed for\neach entry instead of \"caching\" the lock across rms, but this\nshould be entirely irrelevant to fastpath performance.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "aa395145165cb06a0d0885221bbe0ce4a564391d",
      "tree": "118b0403621f10db8dc3dbf12079f9af5b19e05d",
      "parents": [
        "ab9304717f7624c41927f442e6b6d418b2d8b3e4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 20 13:03:51 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 20 16:37:13 2010 -0700"
      },
      "message": "net: sk_sleep() helper\n\nDefine a new function to return the waitqueue of a \"struct sock\".\n\nstatic inline wait_queue_head_t *sk_sleep(struct sock *sk)\n{\n\treturn sk-\u003esk_sleep;\n}\n\nChange all read occurrences of sk_sleep by a call to this function.\n\nNeeded for a future RCU conversion. sk_sleep wont be a field directly\navailable.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "871039f02f8ec4ab2e5e9010718caa8e085786f1",
      "tree": "f0d2b3127fc48c862967d68c46c2d46668137515",
      "parents": [
        "e4077e018b5ead3de9951fc01d8bf12eeeeeefed",
        "4a1032faac94ebbf647460ae3e06fc21146eb280"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/stmmac/stmmac_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_cmd.c\n\tdrivers/net/wireless/wl12xx/wl1271_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_spi.c\n\tnet/core/ethtool.c\n\tnet/mac80211/scan.c\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "561c7df63e259203515509a7ad075382a42bff0c",
      "tree": "80d3d382ba155d4bced37b716dcac0e31062f2c5",
      "parents": [
        "450d06c0208ad195ccd74a7edd11321e316791ad"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Thu Mar 11 13:50:06 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 16 21:17:01 2010 -0700"
      },
      "message": "RDS: Do not call set_page_dirty() with irqs off\n\nset_page_dirty() unconditionally re-enables interrupts, so\nif we call it with irqs off, they will be on after the call,\nand that\u0027s bad. This patch moves the call after we\u0027ve re-enabled\ninterrupts in send_drop_to(), so it\u0027s safe.\n\nAlso, add BUG_ONs to let us know if we ever do call set_page_dirty\nwith interrupts off.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b98ba52f96e7cdb4dbe2b06bced83d95d94c9d02",
      "tree": "72e22772c6326ff554bd030bda35abcb1526249e",
      "parents": [
        "550a8002e4340eaf3bc333e33b59427e9c20272d"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Thu Mar 11 13:50:04 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 16 21:16:59 2010 -0700"
      },
      "message": "RDS: only put sockets that have seen congestion on the poll_waitq\n\nrds_poll_waitq\u0027s listeners will be awoken if we receive a congestion\nnotification. Bad performance may result because *all* polled sockets\ncontend for this single lock. However, it should not be necessary to\nwake pollers when a congestion update arrives if they have never\nexperienced congestion, and not putting these on the waitq will\nhopefully greatly reduce contention.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "550a8002e4340eaf3bc333e33b59427e9c20272d",
      "tree": "545fe5bccea8aa087233ccecd1dc18570d634d7e",
      "parents": [
        "97069788d6784ac92d050557a02f6e7bf4d1f53d"
      ],
      "author": {
        "name": "Tina Yang",
        "email": "tina.yang@oracle.com",
        "time": "Thu Mar 11 13:50:03 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 16 21:16:58 2010 -0700"
      },
      "message": "RDS: Fix locking in rds_send_drop_to()\n\nIt seems rds_send_drop_to() called\n__rds_rdma_send_complete(rs, rm, RDS_RDMA_CANCELED)\nwith only rds_sock lock, but not rds_message lock. It raced with\nother threads that is attempting to modify the rds_message as well,\nsuch as from within rds_rdma_send_complete().\n\nSigned-off-by: Tina Yang \u003ctina.yang@oracle.com\u003e\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "048c15e641289d902f7ef9f1241068d8045e210c",
      "tree": "f4e7f27a411b9310c98c41e82285e211abcbfbd7",
      "parents": [
        "2e7b3b994529d4760231a45a6b88950187bda877"
      ],
      "author": {
        "name": "Tina Yang",
        "email": "Tina.Yang@oracle.com",
        "time": "Thu Mar 11 13:50:00 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 16 21:16:55 2010 -0700"
      },
      "message": "RDS: Fix send locking issue\n\nFix a deadlock between rds_rdma_send_complete() and\nrds_send_remove_from_sock() when rds socket lock and\nrds message lock are acquired out-of-order.\n\nSigned-off-by: Tina Yang \u003cTina.Yang@oracle.com\u003e\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1123fd734df6ad82373a5a27f0f2ed3115555b9d",
      "tree": "9f0348b2d603a4d18855f01bbd34249c2c2b3f72",
      "parents": [
        "735f61e62611161588123930823af6e6a9fd5c2c"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Thu Mar 11 13:49:56 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 16 21:16:54 2010 -0700"
      },
      "message": "RDS: sendmsg() should check sndtimeo, not rcvtimeo\n\nMost likely cut n paste error - sendmsg() was checking sock_rcvtimeo.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f64f9e719261a87818dd192a3a2352e5b20fbd0f",
      "tree": "b2d5cbaef3df615295f6061d8c4d6a912690556c",
      "parents": [
        "152b6a62aea2d43359dd37004e9c218bf7bdeb3b"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Nov 29 16:55:45 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 29 16:55:45 2009 -0800"
      },
      "message": "net: Move \u0026\u0026 and || to end of previous line\n\nNot including net/atm/\n\nCompiled tested x86 allyesconfig only\nAdded a \u003e 80 column line or two, which I ignored.\nExisting checkpatch plaints willfully, cheerfully ignored.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "616b757ae18fb8ec2dfe7ff9d3f589f82cb0eb9d",
      "tree": "40841513a49c35061c1c131ebfed28ce9a69bb3b",
      "parents": [
        "70041088e3b976627ba9a183b812f39ef8a9ba0e"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Aug 21 12:28:32 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 23 19:13:07 2009 -0700"
      },
      "message": "RDS: Export symbols from core RDS\n\nNow that rdma and tcp transports will be modularized,\nwe need to export a number of functions so they can call them.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "49f696914100780f6bf8e652d3468de0015d6172",
      "tree": "7db75b8f01ed4cec915196c5c00923cda580e385",
      "parents": [
        "7acd4a794c1530af063e51f3f7171e75556458f3"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Thu Apr 09 14:09:41 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 09 17:21:19 2009 -0700"
      },
      "message": "RDS: Establish connection before parsing CMSGs\n\nThe first message to a remote node should prompt a new connection.\nEven an RDMA op via CMSG. Therefore move CMSG parsing to after\nconnection establishment.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f1cffcbfcc53b825da7d1d26244aabd8dccb24aa",
      "tree": "d71e3c271b29eecfc685b96ab0cf15404bd84ba5",
      "parents": [
        "f1782852adb57c8daf76a56146424f6c2f7410b6"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Apr 01 08:20:18 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 02 00:52:21 2009 -0700"
      },
      "message": "RDS: Fix m_rs_lock deadlock\n\nrs_send_drop_to() is called during socket close. If it takes\nm_rs_lock without disabling interrupts, then\nrds_send_remove_from_sock() can run from the rx completion\nhandler and thus deadlock.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5c11559046c4b3498d1977a029de8a312eacce35",
      "tree": "a6690f5118551a86de904e7bdb16736cc4ec90ee",
      "parents": [
        "7875e18e09961d29f30424c5e2e48e704dc3789b"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Feb 24 15:30:27 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 26 23:39:28 2009 -0800"
      },
      "message": "RDS: send.c\n\nThis is the code to send an RDS datagram.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
