)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "2fa57129df61bf3fb7d90c5486fe15df94091f61",
      "tree": "50d444045d3d116ae0771369a42f5b14f55a7c8f",
      "parents": [
        "a7d3a281483684f77e350b045af7f80a149fc4c7"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 29 16:45:40 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:16 2010 -0700"
      },
      "message": "RDS: Bypass workqueue when queueing cong updates\n\nNow that rds_send_xmit() does not block, we can call it directly\ninstead of going through the helper thread.\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": "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": "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": "e32b4a70495aac6a612e13f4c21db09dd756ff2c",
      "tree": "2f0a7187e5ddb8a79d5bec0cefade198b99ea138",
      "parents": [
        "ff3d7d36134ef7138803734fdbf91cc986ea7976"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Mar 03 19:25:21 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:09 2010 -0700"
      },
      "message": "RDS/IB: Do not wait for send ring to be empty on conn shutdown\n\nNow that we are signaling send completions much less, we are likely\nto have dirty entries in the send queue when the connection is\nshut down (on rmmod, for example.) These are cleaned up a little\nfurther down in conn_shutdown, but if we wait on the ring_empty_wait\nfor them, it\u0027ll never happen, and we hand on unload.\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": "7e3bd65ebfd5d6cd76b8b979920c632d6e6b4b2a",
      "tree": "eb43094639021ef9c2d587b6e386be2aa9643dbe",
      "parents": [
        "940786eb0a0faf3f30898a1cc7c1540d54c1aff6"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Mon Mar 01 16:04:59 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:05 2010 -0700"
      },
      "message": "RDS: Move some variables around for consistency\n\nAlso, add a comment.\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": "ee4c7b47e46a9dea789aadb8279c8505f755b3ee",
      "tree": "6528275276bcd963b0d8fcd3fadac39e6d6c3e6f",
      "parents": [
        "372cd7dedfd1ea93a9ae8d9c282e910dc1b76773"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Feb 03 19:41:52 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:12:03 2010 -0700"
      },
      "message": "RDS: Add a warning if trying to allocate 0 sgs\n\nrds_message_alloc_sgs() only works when nents is nonzero.\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": "d0ab25a83c4a08cd98b73a37d3f4c069f7b4f50b",
      "tree": "d21dad44f483e684c35209f61b905b53ae582050",
      "parents": [
        "4324879df06ba4db01a0b455af2d003f117e6aa3"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Jan 27 16:15:48 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:57 2010 -0700"
      },
      "message": "RDS: purge atomic resources too in rds_message_purge()\n\nAdd atomic_free_op function, analogous to rdma_free_op,\nand call it in rds_message_purge().\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "4324879df06ba4db01a0b455af2d003f117e6aa3",
      "tree": "04629863049eb51433052669541ccd300b33c74a",
      "parents": [
        "241eef3e2f51fe4ad50abacd7f79c4e2d468197e"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Jan 27 16:07:30 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:56 2010 -0700"
      },
      "message": "RDS: Inline rdma_prepare into cmsg_rdma_args\n\ncmsg_rdma_args just calls rdma_prepare and does a little\narg checking -- not quite enough to justify its existence.\nPlus, it is the only caller of rdma_prepare().\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": "d37c9359056f4f07b37e59810f0ece1031e280b2",
      "tree": "a8521aadd8d6373c0f6944d6447b000ea73aab71",
      "parents": [
        "c8de3f1005e8359ea07083e37f3f993646e1adba"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 19 18:14:56 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:54 2010 -0700"
      },
      "message": "RDS: Move loop-only function to loop.c\n\nAlso, try to better-document the locking around the\nrm and its m_inc in loop.c.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "c8de3f1005e8359ea07083e37f3f993646e1adba",
      "tree": "c453d9c52e3569617014e6da54f307f75d1c49d8",
      "parents": [
        "1d34f175712b59ad292ecbbaa8fc05402a1fd8ed"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Jan 15 15:55:26 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:53 2010 -0700"
      },
      "message": "RDS/IB: Make all flow control code conditional on i_flowctl\n\nMaybe things worked fine with the flow control code running\neven in the non-flow-control case, but making it explicitly\nconditional helps the non-fc case be easier to read.\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": "da5a06cef5724737af4315715632f0a07dd5e116",
      "tree": "fef68cae6cc0894247aeb6384708d58eb2c5fd8b",
      "parents": [
        "919ced4ce7d6ac62dd5be62d8993fe22a527d53a"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Thu Jan 14 12:18:11 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:51 2010 -0700"
      },
      "message": "RDS: rewrite rds_ib_xmit\n\nNow that the header always goes first, it is possible to\nsimplify rds_ib_xmit. Instead of having a path to handle 0-byte\ndgrams and another path to handle \u003e0, these can both be handled\nin one path. This lets us eliminate xmit_populate_wr().\n\nRename sent to bytes_sent, to differentiate better from other\nvariable named \"send\".\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": "6f3d05db0da0b874afd2dd229bed715133532f8d",
      "tree": "6594e9bf871477af62eae2d1090d8905887db8ef",
      "parents": [
        "f147dd9ecabf23fd63d2562ffe64252a0453ecde"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Jan 13 16:29:37 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:49 2010 -0700"
      },
      "message": "RDS/IB: Remove dead code\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "f147dd9ecabf23fd63d2562ffe64252a0453ecde",
      "tree": "1e3cdab2dc27b37ff2b820cd8081b33da95ab08c",
      "parents": [
        "9c030391e8741695ff6114703e4edccccb634479"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Jan 13 15:50:09 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:48 2010 -0700"
      },
      "message": "RDS/IB: Disallow connections less than RDS 3.1\n\nRDS 3.0 connections (in OFED 1.3 and earlier) put the\nheader at the end. 3.1 connections put it at the head.\nThe code has significant added complexity in order to\nhandle both configurations. In OFED 1.6 we can\ndrop this and simplify the code by only supporting\n\"header-first\" configuration.\n\nThis patch checks the protocol version, and if prior\nto 3.1, does not complete the connection.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "9c030391e8741695ff6114703e4edccccb634479",
      "tree": "20e1a55a0f952c85d07dc02662e1b85605464791",
      "parents": [
        "809fa148a29467954280fe8b7f97c92403f6293c"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 14:43:06 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:47 2010 -0700"
      },
      "message": "RDS/IB: eliminate duplicate code\n\nboth atomics and rdmas need to convert ib-specific completion codes\ninto RDS status codes. Rename rds_ib_rdma_send_complete to\nrds_ib_send_complete, and have it take a pointer to the function to\ncall with the new error code.\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": "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": "d22faec22c2ab2364fd8fc3c8159b0b5b28b0fd1",
      "tree": "90a286b17b500447e413d8d6a1f119f696a06e3c",
      "parents": [
        "40589e74f7ba855f3a887c9d4abe9d100c5b039c"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 10:52:28 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:43 2010 -0700"
      },
      "message": "RDS: Do not mask address when pinning pages\n\nThis does not appear to be necessary.\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": "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": "f4dd96f7b27743e568cec519eff0f951c56833c6",
      "tree": "7190122e832f3ce6ed394fb7293c037562b346f6",
      "parents": [
        "ff87e97a9d70c9ae133d3d3d7792b26ab85f4297"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 14:17:31 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:39 2010 -0700"
      },
      "message": "RDS: make sure all sgs alloced are initialized\n\nrds_message_alloc_sgs() now returns correctly-initialized\nsg lists, so calleds need not do this themselves.\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": "3ef13f3c22aaea28aff383cb0883481d24885456",
      "tree": "2d7277a9401c5d47c0a42d5de3e27f1df042da6b",
      "parents": [
        "e779137aa76d38d5c33a98ed887092ae4e4f016f"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Tue Jan 12 12:37:17 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:11:35 2010 -0700"
      },
      "message": "RDS: cleanup/fix rds_rdma_unuse\n\nFirst, it looks to me like the atomic_inc is wrong.\nWe should be decrementing refcount only once here, no? It\u0027s\nalready being done by the mr_put() at the end.\n\nSecond, simplify the logic a bit by bailing early (with a warning)\nif !mr.\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": "2dc393573430f853e56e25bf4b41c34ba2aa8fd6",
      "tree": "f7a3ddb99aab472aa5054a10043419d4b22bb312",
      "parents": [
        "9de0864cf55927a7383b5ba6e48834ff3ef053de"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Jun 11 13:49:13 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:10:13 2010 -0700"
      },
      "message": "RDS: move rds_shutdown_worker impl. to rds_conn_shutdown\n\nThis fits better in connection.c, rather than threads.c.\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": "35b52c70534cb7193b218ec12efe6bc595312097",
      "tree": "8370e4b3e9d0ed1cc353f8b23531c97f8cc63ddc",
      "parents": [
        "9e2effba2c16fc3bd47da605116485afe01e0be0"
      ],
      "author": {
        "name": "Tina Yang",
        "email": "tina.yang@oracle.com",
        "time": "Thu Apr 01 14:09:00 2010 -0700"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:07:31 2010 -0700"
      },
      "message": "RDS: Fix corrupted rds_mrs\n\nOn second look at this bug (OFED #2002), it seems that the\ncollision is not with the retransmission queue (packet acked\nby the peer), but with the local send completion.  A theoretical\nsequence of events (from time t0 to t3) is thought to be as\nfollows,\n\nThread #1\nt0:\n    sock_release\n    rds_release\n    rds_send_drop_to /* wait on send completion */\nt2:\n    rds_rdma_drop_keys()   /* destroy \u0026 free all mrs */\n\nThread #2\nt1:\n    rds_ib_send_cq_comp_handler\n    rds_ib_send_unmap_rm\n    rds_message_unmapped   /* wake up #1 @ t0 */\nt3:\n    rds_message_put\n    rds_message_purge\n    rds_mr_put   /* memory corruption detected */\n\nThe problem with the rds_rdma_drop_keys() is it could\nremove a mr\u0027s refcount more than its due (i.e. repeatedly\nas long as it still remains in the tree (mr-\u003er_refcount \u003e 0)).\nTheoretically it should remove only one reference - reference\nby the tree.\n\n        /* Release any MRs associated with this socket */\n        while ((node \u003d rb_first(\u0026rs-\u003ers_rdma_keys))) {\n                mr \u003d container_of(node, struct rds_mr, r_rb_node);\n                if (mr-\u003er_trans \u003d\u003d rs-\u003ers_transport)\n                        mr-\u003er_invalidate \u003d 0;\n                rds_mr_put(mr);\n        }\n\nI think the correct way of doing it is to remove the mr from\nthe tree and rds_destroy_mr it first, then a rds_mr_put()\nto decrement its reference count by one.  Whichever thread\nholds the last reference will free the mr via rds_mr_put().\n\nSigned-off-by: Tina Yang \u003ctina.yang@oracle.com\u003e\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "9e2effba2c16fc3bd47da605116485afe01e0be0",
      "tree": "a423d21a3abee4a5979ce13f7627d81e558c32ed",
      "parents": [
        "db40980fcdb560d7992b0511df16cdd3f7e381f3"
      ],
      "author": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Fri Mar 12 16:22:32 2010 -0800"
      },
      "committer": {
        "name": "Andy Grover",
        "email": "andy.grover@oracle.com",
        "time": "Wed Sep 08 18:07:31 2010 -0700"
      },
      "message": "RDS: Fix BUG_ONs to not fire when in a tasklet\n\nin_interrupt() is true in softirqs. The BUG_ONs are supposed\nto check for if irqs are disabled, so we should use\nBUG_ON(irqs_disabled()) instead, duh.\n\nSigned-off-by: Andy Grover \u003candy.grover@oracle.com\u003e\n"
    },
    {
      "commit": "db40980fcdb560d7992b0511df16cdd3f7e381f3",
      "tree": "337b5c41bd55915a4b894ea6fe09a865e7dcb0e4",
      "parents": [
        "d61702f1273b71c2809365a7806d7fe84fd77f15"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Sep 06 11:13:50 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:48:45 2010 -0700"
      },
      "message": "net: poll() optimizations\n\nNo need to test twice sk-\u003esk_shutdown \u0026 RCV_SHUTDOWN\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d61702f1273b71c2809365a7806d7fe84fd77f15",
      "tree": "6d20c5ce94ea924405c046a4537bb459c48d10b5",
      "parents": [
        "ebc872c7bd7155bcc7db2343155729d13bf4a2ee"
      ],
      "author": {
        "name": "Yevgeny Petrilin",
        "email": "yevgenyp@mellanox.co.il",
        "time": "Sun Sep 05 22:20:24 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:48:44 2010 -0700"
      },
      "message": "mlx4_en: Fixed Ethtool statistics report\n\nThe values didn\u0027t match the title after removing the LRO\nstatistics in commit fa37a9586f92051de03a13e55e5ec3880bb6783e\n\nSigned-off-by: Yevgeny Petrilin \u003cyevgenyp@mellanox.co.il\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ebc872c7bd7155bcc7db2343155729d13bf4a2ee",
      "tree": "c95e65e37519c7267c4f1dea22b84aacbf1d8039",
      "parents": [
        "f6c9322c3a0cd50a6996094327347c87cd2f4bd8"
      ],
      "author": {
        "name": "Yevgeny Petrilin",
        "email": "yevgenyp@mellanox.co.il",
        "time": "Sun Sep 05 22:20:11 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:48:44 2010 -0700"
      },
      "message": "mlx4_en: Consider napi_get_frags() failure.\n\nIf failed to get skb frags using napi_get_frags(),\nthe packet is dropped.\n\nReported-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Yevgeny Petrilin \u003cyevgenyp@mellanox.co.il\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f6c9322c3a0cd50a6996094327347c87cd2f4bd8",
      "tree": "63685e0f5dd9eb6ac0c9f4c0017a21ef2e0f0c29",
      "parents": [
        "b31fa5bad576cd8180a5ad70c648333b44320d44"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Sep 05 22:08:09 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:48:43 2010 -0700"
      },
      "message": "net/caifcaif_dev.c: Use netdev_\u003clevel\u003e\n\nConvert pr_\u003clevel\u003e(\"%s\" ..., (struct netdev *)-\u003ename ...)\nto netdev_\u003clevel\u003e((struct netdev *), ...)\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b31fa5bad576cd8180a5ad70c648333b44320d44",
      "tree": "b31239e8828e7e5b36ef85a0715ababc4f556e42",
      "parents": [
        "a0ece28539d49c9bdcc6da0bbb26771dceb57581"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Sep 05 21:31:11 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:48:43 2010 -0700"
      },
      "message": "net/caif: Use pr_fmt\n\nThis patch standardizes caif message logging prefixes.\n\nAdd #define pr_fmt(fmt) KBUILD_MODNAME \":%s(): \" fmt, __func__\nAdd missing \"\\n\"s to some logging messages\nConvert pr_warning to pr_warn\n\nThis changes the logging message prefix from CAIF: to caif:\nfor all uses but caif_socket.c and chnl_net.c.  Those now use\ntheir filename without extension.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a0ece28539d49c9bdcc6da0bbb26771dceb57581",
      "tree": "c16f0a52b3008a315b1d814ced5a295afe12ce8d",
      "parents": [
        "29af9309dba25077f711f5f975977714bc43a0c3"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sun Sep 05 09:00:23 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:48:42 2010 -0700"
      },
      "message": "drivers/atm/firestream.c: Fix unsigned return type\n\nThe function has an unsigned return type, but returns a negative constant\nto indicate an error condition.  The result of calling the function is\nalways stored in a variable of type (signed) int, and thus unsigned can be\ndropped from the return type.\n\nA sematic match that finds this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@exists@\nidentifier f;\nconstant C;\n@@\n\n unsigned f(...)\n { \u003c+...\n*  return -C;\n ...+\u003e }\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "29af9309dba25077f711f5f975977714bc43a0c3",
      "tree": "5ff0faaa913d2ab8b431c272cab627b4f8778b59",
      "parents": [
        "e04c4dc87c4af296982ff44123e064d483e826c4"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sun Sep 05 09:00:21 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:48:42 2010 -0700"
      },
      "message": "net/9p/trans_fd.c: Fix unsigned return type\n\nThe function has an unsigned return type, but returns a negative constant\nto indicate an error condition.  The result of calling the function is\nalways stored in a variable of type (signed) int, and thus unsigned can be\ndropped from the return type.\n\nA sematic match that finds this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@exists@\nidentifier f;\nconstant C;\n@@\n\n unsigned f(...)\n { \u003c+...\n*  return -C;\n ...+\u003e }\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e04c4dc87c4af296982ff44123e064d483e826c4",
      "tree": "55d84e2cafac312075dc2089611bc94d0ee3a8bc",
      "parents": [
        "49d70c4856acfce943fab35fc199b3074961313f"
      ],
      "author": {
        "name": "Christian Dietrich",
        "email": "qy03fugy@stud.informatik.uni-erlangen.de",
        "time": "Mon Sep 06 04:36:25 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:48:41 2010 -0700"
      },
      "message": "drivers/net: Removing undead ifdef CHELSIO_T1_1G\n\nThe CHELSIO_T1_1G ifdef isn\u0027t necessary at this point, because it is\nchecked in an outer ifdef level already and has no effect here.\n\nSigned-off-by: Christian Dietrich \u003cqy03fugy@stud.informatik.uni-erlangen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "49d70c4856acfce943fab35fc199b3074961313f",
      "tree": "7c8ab8e552fe05a5f6619f04fb2a8b0277911667",
      "parents": [
        "f417f5e4ba79a08e992c79a4bb84c8a8c5062017"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sat Sep 04 22:21:05 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:29:19 2010 -0700"
      },
      "message": "drivers/net/jme: Use pr_\u003clevel\u003e\n\nAdd #define pr_fmt(fmt) KBUILD_MODNAME \": \" fmt\nConvert jeprintk to pr_err\nRemove jeprintk macro define\nRemove periods from end of logging messages\nCoalesce format strings\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f417f5e4ba79a08e992c79a4bb84c8a8c5062017",
      "tree": "4142b1329e245ad62a144e0e6fedd64554b9af00",
      "parents": [
        "017d79ef0073fdb170dcf185dc4c2456a304d659"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat Sep 04 08:33:03 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:29:19 2010 -0700"
      },
      "message": "isdn: cleanup: make buffer smaller\n\nThis showed up in my audit because we use strcpy() to copy \"ds\" into a\n32 character buffer inside the isdn_tty_dial() function.  But it turns\nout that we only ever use the first 32 characters so it\u0027s OK.  I have\nchanged the declaration to make the static checkers happy.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "017d79ef0073fdb170dcf185dc4c2456a304d659",
      "tree": "6a1b6cadc0f43745a60840910c5e52d9d993ad9e",
      "parents": [
        "ca1cef3a3a8af961f504abfcf9e13dac088e1ad1"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat Sep 04 08:38:59 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:29:18 2010 -0700"
      },
      "message": "isdn: potential buffer overflows\n\ncs-\u003eics.parm.setup.phone is a 32 character array.  In each of these\ncases we\u0027re copying from a 35 character array into a 32 character array\nso we should use strlcpy() instead of strcpy().\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ca1cef3a3a8af961f504abfcf9e13dac088e1ad1",
      "tree": "e7a09c304271f05c88fdc1d787bca576163afa93",
      "parents": [
        "e8f7f43a4ad451ecfb2689985f99a9e276a08bba"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Sat Sep 04 02:08:41 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:29:18 2010 -0700"
      },
      "message": "NET: bna, fix lock imbalance\n\nbnad_set_rx_mode omit to unlock bna_lock on one fail path. Fix that.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Debashis Dutt \u003cddutt@brocade.com\u003e\nCc: Rasesh Mody \u003crmody@brocade.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "e8f7f43a4ad451ecfb2689985f99a9e276a08bba"
}
