)]}'
{
  "log": [
    {
      "commit": "6cdaef1be27bc05ab4197b3ab4e3ee1d326cf04c",
      "tree": "275f9277dbf50f31e26e37122cb11244797e3fa3",
      "parents": [
        "8992551d85934e0dc4683068612758831d1d4899"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 18:16:16 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:41 2012 -0800"
      },
      "message": "libceph: fix handling of immediate socket connect failure\n\n(cherry picked from commit 8007b8d626b49c34fb146ec16dc639d8b10c862f)\n\nIf the connect() call immediately fails such that sock \u003d\u003d NULL, we\nstill need con_close_socket() to reset our socket state to CLOSED.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "8992551d85934e0dc4683068612758831d1d4899",
      "tree": "6062a1b0e92bbc7ac8268a3e494e23536ed096d1",
      "parents": [
        "63c1362476141f4fb340e8236d41674be9fc1983"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jul 20 17:30:40 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:41 2012 -0800"
      },
      "message": "libceph: clear all flags on con_close\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n(cherry picked from commit 43c7427d100769451601b8a36988ac0528ce0124)\n"
    },
    {
      "commit": "63c1362476141f4fb340e8236d41674be9fc1983",
      "tree": "13be911ab412f8e02ec6cdfa2688bc5b4296c0a2",
      "parents": [
        "265fb7c177f9db75d628b3479b6223c1c8110e67"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jul 20 17:29:55 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:41 2012 -0800"
      },
      "message": "libceph: clean up con flags\n\n(cherry picked from commit 4a8616920860920abaa51193146fe36b38ef09aa)\n\nRename flags with CON_FLAG prefix, move the definitions into the c file,\nand (better) document their meaning.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "265fb7c177f9db75d628b3479b6223c1c8110e67",
      "tree": "85f85c837e89f7d09041a26bb60a5b35495afc93",
      "parents": [
        "cb9f8855591613dff0909c99d46a29e10eb39b25"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jul 20 17:24:40 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:41 2012 -0800"
      },
      "message": "libceph: replace connection state bits with states\n\n(cherry picked from commit 8dacc7da69a491c515851e68de6036f21b5663ce)\n\nUse a simple set of 6 enumerated values for the socket states (CON_STATE_*)\nand use those instead of the state bits.  All of the con-\u003estate checks are\nnow under the protection of the con mutex, so this is safe.  It also\nsimplifies many of the state checks because we can check for anything other\nthan the expected state instead of various bits for races we can think of.\n\nThis appears to hold up well to stress testing both with and without socket\nfailure injection on the server side.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "cb9f8855591613dff0909c99d46a29e10eb39b25",
      "tree": "b9ecd8498d938908b7faf945fd5ecde58621cbff",
      "parents": [
        "3b5a9ead0b4845aaa7e80fcd6166f2c6740a1c6f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jul 20 17:19:43 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:41 2012 -0800"
      },
      "message": "libceph: drop unnecessary CLOSED check in socket state change callback\n\n(cherry picked from commit d7353dd5aaf22ed611fbcd0d4a4a12fb30659290)\n\n\nIf we are CLOSED, the socket is closed and we won\u0027t get these.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "3b5a9ead0b4845aaa7e80fcd6166f2c6740a1c6f",
      "tree": "df27875914d29620a7e921726b8d699267cfadf7",
      "parents": [
        "1c5b33b852ab372d4538821db998561d5e4d7212"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jul 20 16:45:49 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:40 2012 -0800"
      },
      "message": "libceph: close socket directly from ceph_con_close()\n\n(cherry picked from commit ee76e0736db8455e3b11827d6899bd2a4e1d0584)\n\nIt is simpler to do this immediately, since we already hold the con mutex.\nIt also avoids the need to deal with a not-quite-CLOSED socket in con_work.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "1c5b33b852ab372d4538821db998561d5e4d7212",
      "tree": "dcf41fdf7db2bb2e9a32ddfe66b07121ee2eb903",
      "parents": [
        "5d0f354b3183d005024d43b567335701d928995a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jul 20 15:40:04 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:40 2012 -0800"
      },
      "message": "libceph: drop gratuitous socket close calls in con_work\n\n(cherry picked from commit 2e8cb10063820af7ed7638e3fd9013eee21266e7)\n\nIf the state is CLOSED or OPENING, we shouldn\u0027t have a socket.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "5d0f354b3183d005024d43b567335701d928995a",
      "tree": "afbed7bedca43cb872c092dcfe84d94c0d8ccc46",
      "parents": [
        "67c6fc1932a705f61f98d8092375622b8dffea6a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jul 20 15:34:04 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:40 2012 -0800"
      },
      "message": "libceph: move ceph_con_send() closed check under the con mutex\n\n(cherry picked from commit a59b55a602b6c741052d79c1e3643f8440cddd27)\n\nTake the con mutex before checking whether the connection is closed to\navoid racing with someone else closing it.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "67c6fc1932a705f61f98d8092375622b8dffea6a",
      "tree": "c4beb1b0c263cdc031770a2e917cec3c95c976fb",
      "parents": [
        "da6a81eb5a2671f12551953d1843a0f53416d185"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jul 20 15:33:04 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:40 2012 -0800"
      },
      "message": "libceph: move msgr clear_standby under con mutex protection\n\n(cherry picked from commit 00650931e52e97fe64096bec167f5a6780dfd94a)\n\nAvoid dropping and retaking con-\u003emutex in the ceph_con_send() case by\nleaving locking up to the caller.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "da6a81eb5a2671f12551953d1843a0f53416d185",
      "tree": "7e9c02adeba67b0bb55e103dd68517734f6dec3a",
      "parents": [
        "ed447f04ee3240371aa8a199588107fd521240d3"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jul 20 15:22:53 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:40 2012 -0800"
      },
      "message": "libceph: fix fault locking; close socket on lossy fault\n\n(cherry picked from commit 3b5ede07b55b52c3be27749d183d87257d032065)\n\nIf we fault on a lossy connection, we should still close the socket\nimmediately, and do so under the con mutex.\n\nWe should also take the con mutex before printing out the state bits in\nthe debug output.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ed447f04ee3240371aa8a199588107fd521240d3",
      "tree": "f43b55fc04fd8bf8bf1aca9b6db91818cc1de620",
      "parents": [
        "eea8ed97626254429d4679c567035effdf9983a8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 16:22:05 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:39 2012 -0800"
      },
      "message": "libceph: reset connection retry on successfully negotiation\n\n(cherry picked from commit 85effe183dd45854d1ad1a370b88cddb403c4c91)\n\nWe exponentially back off when we encounter connection errors.  If several\nerrors accumulate, we will eventually wait ages before even trying to\nreconnect.\n\nFix this by resetting the backoff counter after a successful negotiation/\nconnection with the remote node.  Fixes ceph issue #2802.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "eea8ed97626254429d4679c567035effdf9983a8",
      "tree": "a3697630e0c1136abfb4d2f4fe694a3c79151b67",
      "parents": [
        "175c4c20d29322b9e882c052025e72644ca00e2d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 16:21:40 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:39 2012 -0800"
      },
      "message": "libceph: protect ceph_con_open() with mutex\n\n(cherry picked from commit 5469155f2bc83bb2c88b0a0370c3d54d87eed06e)\n\nTake the con mutex while we are initiating a ceph open.  This is necessary\nbecause the may have previously been in use and then closed, which could\nresult in a racing workqueue running con_work().\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "175c4c20d29322b9e882c052025e72644ca00e2d",
      "tree": "a146aa8afa8ac1560ed5350c11bda105e95ea274",
      "parents": [
        "d43841ef768a78f2cbc7e819f1a2838a4838f566"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 16:20:25 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:39 2012 -0800"
      },
      "message": "libceph: (re)initialize bio_iter on start of message receive\n\n(cherry picked from commit a4107026976f06c9a6ce8cc84a763564ee39d901)\n\nPreviously, we were opportunistically initializing the bio_iter if it\nappeared to be uninitialized in the middle of the read path.  The problem\nis that a sequence like:\n\n - start reading message\n - initialize bio_iter\n - read half a message\n - messenger fault, reconnect\n - restart reading message\n - ** bio_iter now non-NULL, not reinitialized **\n - read past end of bio, crash\n\nInstead, initialize the bio_iter unconditionally when we allocate/claim\nthe message for read.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "d43841ef768a78f2cbc7e819f1a2838a4838f566",
      "tree": "b3f195efcd5f9fedd8a1b6fdbffc801278f30e8d",
      "parents": [
        "7621822a64ee40c0ab4181e7281ef06f241782cb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 16:19:28 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:39 2012 -0800"
      },
      "message": "libceph: resubmit linger ops when pg mapping changes\n\n(cherry picked from commit 6194ea895e447fdf4adfd23f67873a32bf4f15ae)\n\nThe linger op registration (i.e., watch) modifies the object state.  As\nsuch, the OSD will reply with success if it has already applied without\ndoing the associated side-effects (setting up the watch session state).\nIf we lose the ACK and resubmit, we will see success but the watch will not\nbe correctly registered and we won\u0027t get notifies.\n\nTo fix this, always resubmit the linger op with a new tid.  We accomplish\nthis by re-registering as a linger (i.e., \u0027registered\u0027) if we are not yet\nregistered.  Then the second loop will treat this just like a normal\ncase of re-registering.\n\nThis mirrors a similar fix on the userland ceph.git, commit 5dd68b95, and\nceph bug #2796.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "7621822a64ee40c0ab4181e7281ef06f241782cb",
      "tree": "ce0342a33cd1c508ee1707108ca72b7bc2dfe328",
      "parents": [
        "b3fd00b73452353444c768b19bb175ec95410c8f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 16:24:37 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:39 2012 -0800"
      },
      "message": "libceph: fix mutex coverage for ceph_con_close\n\n(cherry picked from commit 8c50c817566dfa4581f82373aac39f3e608a7dc8)\n\nHold the mutex while twiddling all of the state bits to avoid possible\nraces.  While we\u0027re here, make not of why we cannot close the socket\ndirectly.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "b3fd00b73452353444c768b19bb175ec95410c8f",
      "tree": "50931fcc448eac85d3eca1ca27ba04f8b4141254",
      "parents": [
        "59d02721bb2838893596d5617659fe907dd45518"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 16:24:21 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:39 2012 -0800"
      },
      "message": "libceph: report socket read/write error message\n\n(cherry picked from commit 3a140a0d5c4b9e35373b016e41dfc85f1e526bdb)\n\nWe need to set error_msg to something useful before calling ceph_fault();\ndo so here for try_{read,write}().  This is more informative than\n\nlibceph: osd0 192.168.106.220:6801 (null)\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "59d02721bb2838893596d5617659fe907dd45518",
      "tree": "126ac6b7dba3ef26cb4c6e32b7bc2faf74c1c35d",
      "parents": [
        "9beb73fcb83317786226b4203d7e56c6b0f43adb"
      ],
      "author": {
        "name": "Guanjun He",
        "email": "gjhe@suse.com",
        "time": "Sun Jul 08 19:50:33 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:38 2012 -0800"
      },
      "message": "libceph: prevent the race of incoming work during teardown\n\n(cherry picked from commit a2a3258417eb6a1799cf893350771428875a8287)\n\nAdd an atomic variable \u0027stopping\u0027 as flag in struct ceph_messenger,\nset this flag to 1 in function ceph_destroy_client(), and add the condition code\nin function ceph_data_ready() to test the flag value, if true(1), just return.\n\nSigned-off-by: Guanjun He \u003cgjhe@suse.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "9beb73fcb83317786226b4203d7e56c6b0f43adb",
      "tree": "625dd1aa57201317108b56b11ae83195655d7939",
      "parents": [
        "d92d11da1dd8531150823ff429ae29a0cf5e438d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 09 14:22:34 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:38 2012 -0800"
      },
      "message": "libceph: initialize msgpool message types\n\n(cherry picked from commit d50b409fb8698571d8209e5adfe122e287e31290)\n\nInitialize the type field for messages in a msgpool.  The caller was doing\nthis for osd ops, but not for the reply messages.\n\nReported-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "d92d11da1dd8531150823ff429ae29a0cf5e438d",
      "tree": "15869cdd857ccb36d8a9d592694daa3a175ce061",
      "parents": [
        "a5b0662bb814837139bb73249463e199528101b5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Jun 27 12:31:02 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:38 2012 -0800"
      },
      "message": "libceph: allow sock transition from CONNECTING to CLOSED\n\n(cherry picked from commit fbb85a478f6d4cce6942f1c25c6a68ec5b1e7e7f)\n\nIt is possible to close a socket that is in the OPENING state.  For\nexample, it can happen if ceph_con_close() is called on the con before\nthe TCP connection is established.  con_work() will come around and shut\ndown the socket.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a5b0662bb814837139bb73249463e199528101b5",
      "tree": "db88aff4007d86eeaf5c25b0e43e5dc5bd364562",
      "parents": [
        "638ba1765d03bdc3a972bfca69fd0a4a4eda717c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Jun 27 12:24:34 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:38 2012 -0800"
      },
      "message": "libceph: initialize mon_client con only once\n\n(cherry picked from commit 735a72ef952d42a256f79ae3e6dc1c17a45c041b)\n\nDo not re-initialize the con on every connection attempt.  When we\nceph_con_close, there may still be work queued on the socket (e.g., to\nclose it), and re-initializing will clobber the work_struct state.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "638ba1765d03bdc3a972bfca69fd0a4a4eda717c",
      "tree": "75da2d47d2997f1a2800dbc7bea2f4d5520f47bf",
      "parents": [
        "db90f992eb77188ce3e2b95d36f99ba194e04e66"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Jun 27 12:24:08 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:37 2012 -0800"
      },
      "message": "libceph: set peer name on con_open, not init\n\n(cherry picked from commit b7a9e5dd40f17a48a72f249b8bbc989b63bae5fd)\n\nThe peer name may change on each open attempt, even when the connection is\nreused.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "db90f992eb77188ce3e2b95d36f99ba194e04e66",
      "tree": "9f3e121e70ae6fb8260db9c64b29b0f077b60465",
      "parents": [
        "a8651271bb5d77402251bf35554d1f320463c949"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jun 20 21:53:53 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:28 2012 -0800"
      },
      "message": "libceph: add some fine ASCII art\n\n(cherry picked from commit bc18f4b1c850ab355e38373fbb60fd28568d84b5)\n\nSage liked the state diagram I put in my commit description so\nI\u0027m putting it in with the code.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a8651271bb5d77402251bf35554d1f320463c949",
      "tree": "60805b823e098a6a40f1c2f8fdcbc4d3ae1e2f47",
      "parents": [
        "8a0566f6aac534a20ed436e3bed56b736cef4c40"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 11 14:57:13 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:28 2012 -0800"
      },
      "message": "libceph: small changes to messenger.c\n\n(cherry picked from commit 5821bd8ccdf5d17ab2c391c773756538603838c3)\n\nThis patch gathers a few small changes in \"net/ceph/messenger.c\":\n  out_msg_pos_next()\n    - small logic change that mostly affects indentation\n  write_partial_msg_pages().\n    - use a local variable trail_off to represent the offset into\n      a message of the trail portion of the data (if present)\n    - once we are in the trail portion we will always be there, so we\n      don\u0027t always need to check against our data position\n    - avoid computing len twice after we\u0027ve reached the trail\n    - get rid of the variable tmpcrc, which is not needed\n    - trail_off and trail_len never change so mark them const\n    - update some comments\n  read_partial_message_bio()\n    - bio_iovec_idx() will never return an error, so don\u0027t bother\n      checking for it\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "8a0566f6aac534a20ed436e3bed56b736cef4c40",
      "tree": "f71c7dc5081ace4fa2116086da676a6bc1338b1b",
      "parents": [
        "05a24ecce18262f17aa0b28a6bf1191a2a456975"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu May 24 11:55:03 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:28 2012 -0800"
      },
      "message": "libceph: distinguish two phases of connect sequence\n\n(cherry picked from commit 7593af920baac37752190a0db703d2732bed4a3b)\n\nCurrently a ceph connection enters a \"CONNECTING\" state when it\nbegins the process of (re-)connecting with its peer.  Once the two\nends have successfully exchanged their banner and addresses, an\nadditional NEGOTIATING bit is set in the ceph connection\u0027s state to\nindicate the connection information exhange has begun.  The\nCONNECTING bit/state continues to be set during this phase.\n\nRather than have the CONNECTING state continue while the NEGOTIATING\nbit is set, interpret these two phases as distinct states.  In other\nwords, when NEGOTIATING is set, clear CONNECTING.  That way only\none of them will be active at a time.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "05a24ecce18262f17aa0b28a6bf1191a2a456975",
      "tree": "ff14157d6e199ae34932a21fe21d142c1591227d",
      "parents": [
        "a94af04be86f81d5e3973a37e6a861f329418f1e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu May 31 11:37:29 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:28 2012 -0800"
      },
      "message": "libceph: separate banner and connect writes\n\n(cherry picked from commit ab166d5aa3bc036fba7efaca6e4e43a7e9510acf)\n\nThere are two phases in the process of linking together the two ends\nof a ceph connection.  The first involves exchanging a banner and\nIP addresses, and if that is successful a second phase exchanges\nsome detail about each side\u0027s connection capabilities.\n\nWhen initiating a connection, the client side now queues to send\nits information for both phases of this process at the same time.\nThis is probably a bit more efficient, but it is slightly messier\nfrom a layering perspective in the code.\n\nSo rearrange things so that the client doesn\u0027t send the connection\ninformation until it has received and processed the response in the\ninitial banner phase (in process_banner()).\n\nMove the code (in the (con-\u003esock \u003d\u003d NULL) case in try_write()) that\nprepares for writing the connection information, delaying doing that\nuntil the banner exchange has completed.  Move the code that begins\nthe transition to this second \"NEGOTIATING\" phase out of\nprocess_banner() and into its caller, so preparing to write the\nconnection information and preparing to read the response are\nadjacent to each other.\n\nFinally, preparing to write the connection information now requires\nthe output kvec to be reset in all cases, so move that into the\nprepare_write_connect() and delete it from all callers.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a94af04be86f81d5e3973a37e6a861f329418f1e",
      "tree": "f9894d5ba822a10d31b1cf310dfd14f47c214bb6",
      "parents": [
        "abb46df87f784b398bcdb5091175d24456e42f11"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 23 14:35:23 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:28 2012 -0800"
      },
      "message": "libceph: define and use an explicit CONNECTED state\n\n(cherry picked from commit e27947c767f5bed15048f4e4dad3e2eb69133697)\n\nThere is no state explicitly defined when a ceph connection is fully\noperational.  So define one.\n\nIt\u0027s set when the connection sequence completes successfully, and is\ncleared when the connection gets closed.\n\nBe a little more careful when examining the old state when a socket\ndisconnect event is reported.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "abb46df87f784b398bcdb5091175d24456e42f11",
      "tree": "fe74a12cb1cf4517e02cf64274e176125d9c1841",
      "parents": [
        "2a281c7aa696af085db44154d053a169e4b07449"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 23 14:35:23 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:28 2012 -0800"
      },
      "message": "libceph: clear NEGOTIATING when done\n\n(cherry picked from commit 3ec50d1868a9e0493046400bb1fdd054c7f64ebd)\n\nA connection state\u0027s NEGOTIATING bit gets set while in CONNECTING\nstate after we have successfully exchanged a ceph banner and IP\naddresses with the connection\u0027s peer (the server).  But that bit\nis not cleared again--at least not until another connection attempt\nis initiated.\n\nInstead, clear it as soon as the connection is fully established.\nAlso, clear it when a socket connection gets prematurely closed\nin the midst of establishing a ceph connection (in case we had\nreached the point where it was set).\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "2a281c7aa696af085db44154d053a169e4b07449",
      "tree": "aa7d31e193a964f885e66e0ff1083786a60f5d64",
      "parents": [
        "8a62c3339d5455c46c1da1e9fb9b60df20e59905"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jun 20 21:53:53 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:27 2012 -0800"
      },
      "message": "libceph: clear CONNECTING in ceph_con_close()\n\n(cherry picked from commit bb9e6bba5d8b85b631390f8dbe8a24ae1ff5b48a)\n\nA connection that is closed will no longer be connecting.  So\nclear the CONNECTING state bit in ceph_con_close().  Similarly,\nif the socket has been closed we no longer are in connecting\nstate (a new connect sequence will need to be initiated).\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "8a62c3339d5455c46c1da1e9fb9b60df20e59905",
      "tree": "8cabebaa63de6c8f237cd7edc50ab813912571ad",
      "parents": [
        "70b06043cd9aebf15319ce3917196ff032dc20dd"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jun 20 21:53:53 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:27 2012 -0800"
      },
      "message": "libceph: don\u0027t touch con state in con_close_socket()\n\n(cherry picked from commit 456ea46865787283088b23a8a7f69244513b95f0)\n\nIn con_close_socket(), a connection\u0027s SOCK_CLOSED flag gets set and\nthen cleared while its shutdown method is called and its reference\ngets dropped.\n\nPreviously, that flag got set only if it had not already been set,\nso setting it in con_close_socket() might have prevented additional\nprocessing being done on a socket being shut down.  We no longer set\nSOCK_CLOSED in the socket event routine conditionally, so setting\nthat bit here no longer provides whatever benefit it might have\nprovided before.\n\nA race condition could still leave the SOCK_CLOSED bit set even\nafter we\u0027ve issued the call to con_close_socket(), so we still clear\nthat bit after shutting the socket down.  Add a comment explaining\nthe reason for this.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "70b06043cd9aebf15319ce3917196ff032dc20dd",
      "tree": "fc9b36a43c1ac3b6cc2f2756a5e0129eac47b03f",
      "parents": [
        "54942c5326f039a40c407a251175cd3925ce2951"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jun 20 21:53:53 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:27 2012 -0800"
      },
      "message": "libceph: just set SOCK_CLOSED when state changes\n\n(cherry picked from commit d65c9e0b9eb43d14ece9dd843506ccba06162ee7)\n\nWhen a TCP_CLOSE or TCP_CLOSE_WAIT event occurs, the SOCK_CLOSED\nconnection flag bit is set, and if it had not been previously set\nqueue_con() is called to ensure con_work() will get a chance to\nhandle the changed state.\n\ncon_work() atomically checks--and if set, clears--the SOCK_CLOSED\nbit if it was set.  This means that even if the bit were set\nrepeatedly, the related processing in con_work() only gets called\nonce per transition of the bit from 0 to 1.\n\nWhat\u0027s important then is that we ensure con_work() gets called *at\nleast* once when a socket close event occurs, not that it gets\ncalled *exactly* once.\n\nThe work queue mechanism already takes care of queueing work\nonly if it is not already queued, so there\u0027s no need for us\nto call queue_con() conditionally.\n\nSo this patch just makes it so the SOCK_CLOSED flag gets set\nunconditionally in ceph_sock_state_change().\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "54942c5326f039a40c407a251175cd3925ce2951",
      "tree": "18d7ff6bda683e39ce7d6a468c7c6753deb116a1",
      "parents": [
        "eb8c5642db57af9577ebfea7ff9e96eadbf596b8"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jun 20 21:53:53 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:27 2012 -0800"
      },
      "message": "libceph: don\u0027t change socket state on sock event\n\n(cherry picked from commit 188048bce311ee41e5178bc3255415d0eae28423)\n\nCurrently the socket state change event handler records an error\nmessage on a connection to distinguish a close while connecting from\na close while a connection was already established.\n\nChanging connection information during handling of a socket event is\nnot very clean, so instead move this assignment inside con_work(),\nwhere it can be done during normal connection-level processing (and\nunder protection of the connection mutex as well).\n\nMove the handling of a socket closed event up to the top of the\nprocessing loop in con_work(); there\u0027s no point in handling backoff\netc. if we have a newly-closed socket to take care of.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "eb8c5642db57af9577ebfea7ff9e96eadbf596b8",
      "tree": "329a1bcd8af8036db9941af76df4f5dec68aba70",
      "parents": [
        "f8920642ec1913872f1af07aa8bcb3570bf6ec77"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jun 20 21:53:53 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:27 2012 -0800"
      },
      "message": "libceph: SOCK_CLOSED is a flag, not a state\n\n(cherry picked from commit a8d00e3cdef4c1c4f194414b72b24cd995439a05)\n\nThe following commit changed it so SOCK_CLOSED bit was stored in\na connection\u0027s new \"flags\" field rather than its \"state\" field.\n\n    libceph: start separating connection flags from state\n    commit 928443cd\n\nThat bit is used in con_close_socket() to protect against setting an\nerror message more than once in the socket event handler function.\n\nUnfortunately, the field being operated on in that function was not\nupdated to be \"flags\" as it should have been.  This fixes that\nerror.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f8920642ec1913872f1af07aa8bcb3570bf6ec77",
      "tree": "14438e4819573dd64faf0c204a358d5865d8e23d",
      "parents": [
        "67e5007aca705782360373d36613827ebe9e2f36"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 11 14:57:13 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:26 2012 -0800"
      },
      "message": "libceph: don\u0027t use bio_iter as a flag\n\n(cherry picked from commit abdaa6a849af1d63153682c11f5bbb22dacb1f6b)\n\nRecently a bug was fixed in which the bio_iter field in a ceph\nmessage was not being properly re-initialized when a message got\nre-transmitted:\n    commit 43643528cce60ca184fe8197efa8e8da7c89a037\n    Author: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\n    rbd: Clear ceph_msg-\u003ebio_iter for retransmitted message\n\nWe are now only initializing the bio_iter field when we are about to\nstart to write message data (in prepare_write_message_data()),\nrather than every time we are attempting to write any portion of the\nmessage data (in write_partial_msg_pages()).  This means we no\nlonger need to use the msg-\u003ebio_iter field as a flag.\n\nSo just don\u0027t do that any more.  Trust prepare_write_message_data()\nto ensure msg-\u003ebio_iter is properly initialized, every time we are\nabout to begin writing (or re-writing) a message\u0027s bio data.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "67e5007aca705782360373d36613827ebe9e2f36",
      "tree": "963aa49fd34ec6b45ea4a92304ec12d1ef52e89f",
      "parents": [
        "ec53635e8f11ddf452f69d93eb562c3c5eada75f"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 11 14:57:13 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:26 2012 -0800"
      },
      "message": "libceph: move init of bio_iter\n\n(cherry picked from commit 572c588edadaa3da3992bd8a0fed830bbcc861f8)\n\nIf a message has a non-null bio pointer, its bio_iter field is\ninitialized in write_partial_msg_pages() if this has not been done\nalready.  This is really a one-time setup operation for sending a\nmessage\u0027s (bio) data, so move that initialization code into\nprepare_write_message_data() which serves that purpose.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ec53635e8f11ddf452f69d93eb562c3c5eada75f",
      "tree": "b24f29c2eb6c8bea4ecc810dcd8ba5338bc85520",
      "parents": [
        "3b17b0bb2b1dcfa3e8aee9ce7ee5c239b1109b72"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 11 14:57:13 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:26 2012 -0800"
      },
      "message": "libceph: move init_bio_*() functions up\n\n(cherry picked from commit df6ad1f97342ebc4270128222e896541405eecdb)\n\nMove init_bio_iter() and iter_bio_next() up in their source file so\nthe\u0027ll be defined before they\u0027re needed.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "3b17b0bb2b1dcfa3e8aee9ce7ee5c239b1109b72",
      "tree": "7c8a643b3726250e1b4558af067041db318e53eb",
      "parents": [
        "3c968ed12fad908a5d3676b8d3150b9ac167841c"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 11 14:57:13 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:26 2012 -0800"
      },
      "message": "libceph: don\u0027t mark footer complete before it is\n\n(cherry picked from commit fd154f3c75465abd83b7a395033e3755908a1e6e)\n\nThis is a nit, but prepare_write_message() sets the FOOTER_COMPLETE\nflag before the CRC for the data portion (recorded in the footer)\nhas been completely computed.  Hold off setting the complete flag\nuntil we\u0027ve decided it\u0027s ready to send.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "3c968ed12fad908a5d3676b8d3150b9ac167841c",
      "tree": "530e7165bb7b972f0de3cb8f5b4a65bd0f2d199e",
      "parents": [
        "4ecff48cef44be80eccfa0b3864d55f446006dc5"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 11 14:57:13 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:26 2012 -0800"
      },
      "message": "libceph: encapsulate advancing msg page\n\n(cherry picked from commit 84ca8fc87fcf4ab97bb8acdb59bf97bb4820cb14)\n\nIn write_partial_msg_pages(), once all the data from a page has been\nsent we advance to the next one.  Put the code that takes care of\nthis into its own function.\n\nWhile modifying write_partial_msg_pages(), make its local variable\n\"in_trail\" be Boolean, and use the local variable \"msg\" (which is\njust the connection\u0027s current out_msg pointer) consistently.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "4ecff48cef44be80eccfa0b3864d55f446006dc5",
      "tree": "5692002e1dddc870fcc04aa3f53c418256ffb2aa",
      "parents": [
        "9021a42c794bf96156be9ad556ef707814a361ff"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 11 14:57:13 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:25 2012 -0800"
      },
      "message": "libceph: encapsulate out message data setup\n\n(cherry picked from commit 739c905baa018c99003564ebc367d93aa44d4861)\n\nMove the code that prepares to write the data portion of a message\ninto its own function.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "9021a42c794bf96156be9ad556ef707814a361ff",
      "tree": "54475c6baca932d1eb1272038a380a5e474e8e52",
      "parents": [
        "1c623b046a6c72666d81afa004f8bf7f70cd4391"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Thu Jun 21 12:49:23 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:25 2012 -0800"
      },
      "message": "libceph: drop ceph_con_get/put helpers and nref member\n\n(cherry picked from commit d59315ca8c0de00df9b363f94a2641a30961ca1c)\n\nThese are no longer used.  Every ceph_connection instance is embedded in\nanother structure, and refcounts manipulated via the get/put ops.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "1c623b046a6c72666d81afa004f8bf7f70cd4391",
      "tree": "8fa31cb8a39ff8ec6abf75013662797345f95653",
      "parents": [
        "8124d55a2d2c8d738c6ac5b95e6171fe3d1b5af3"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Thu Jun 21 12:47:08 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:25 2012 -0800"
      },
      "message": "libceph: use con get/put methods\n\n(cherry picked from commit 36eb71aa57e6a33d61fd90a2fd87f00c6844bc86)\n\nThe ceph_con_get/put() helpers manipulate the embedded con ref\ncount, which isn\u0027t used now that ceph_connections are embedded in\nother structures.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "8124d55a2d2c8d738c6ac5b95e6171fe3d1b5af3",
      "tree": "a34dd9e393a2bd8ca5d0f98a4fdf91134a0651b3",
      "parents": [
        "fccbf066b35a05606cdb96eb574eaf310c422125"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Tue Jun 19 08:52:33 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:25 2012 -0800"
      },
      "message": "libceph: fix NULL dereference in reset_connection()\n\n(cherry picked from commit 26ce171915f348abd1f41da1ed139d93750d987f)\n\nWe dereference \"con-\u003ein_msg\" on the line after it was set to NULL.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "fccbf066b35a05606cdb96eb574eaf310c422125",
      "tree": "e0c0b8e93f49891c1af5bcc548892a13d204bb06",
      "parents": [
        "f4d29a959aa619f3d46e2b685cfb8acac41503db"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Sat Jun 09 14:19:21 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:25 2012 -0800"
      },
      "message": "libceph: transition socket state prior to actual connect\n\n(cherry picked from commit 89a86be0ce20022f6ede8bccec078dbb3d63caaa)\n\nOnce we call -\u003econnect(), we are racing against the actual\nconnection, and a subsequent transition from CONNECTING -\u003e\nCONNECTED.  Set the state to CONNECTING before that, under the\nprotection of the mutex, to avoid the race.\n\nThis was introduced in 928443cd9644e7cfd46f687dbeffda2d1a357ff9,\nwith the original socket state code.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f4d29a959aa619f3d46e2b685cfb8acac41503db",
      "tree": "58c304c854c909c6143a2be3055353db624e3dc3",
      "parents": [
        "6b71f61c321b1fe8d35b75ab573ff46c51e59acc"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Wed Jun 06 19:35:55 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:24 2012 -0800"
      },
      "message": "libceph: fix overflow in osdmap_apply_incremental()\n\n(cherry picked from commit a5506049500b30dbc5edb4d07a3577477c1f3643)\n\nOn 32-bit systems, a large `pglen\u0027 would overflow `pglen*sizeof(u32)\u0027\nand bypass the check ceph_decode_need(p, end, pglen*sizeof(u32), bad).\nIt would also overflow the subsequent kmalloc() size, leading to\nout-of-bounds write.\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "6b71f61c321b1fe8d35b75ab573ff46c51e59acc",
      "tree": "8cf3da5771f2fb1d98fdaa84bde7ceeab4056630",
      "parents": [
        "c66a9c7c10955499d96df63ffd87feaee6b01754"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Wed Jun 06 19:35:55 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:24 2012 -0800"
      },
      "message": "libceph: fix overflow in osdmap_decode()\n\n(cherry picked from commit e91a9b639a691e0982088b5954eaafb5a25c8f1c)\n\nOn 32-bit systems, a large `n\u0027 would overflow `n * sizeof(u32)\u0027 and bypass\nthe check ceph_decode_need(p, end, n * sizeof(u32), bad).  It would also\noverflow the subsequent kmalloc() size, leading to out-of-bounds write.\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "c66a9c7c10955499d96df63ffd87feaee6b01754",
      "tree": "4276bd716521f0a4c14ed641aab6d2700309bf2c",
      "parents": [
        "ce4516fbb42d2ad5adba4699ebc1703d4e08e821"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Wed Jun 06 19:35:55 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:24 2012 -0800"
      },
      "message": "libceph: fix overflow in __decode_pool_names()\n\n(cherry picked from commit ad3b904c07dfa88603689bf9a67bffbb9b99beb5)\n\n`len\u0027 is read from network and thus needs validation.  Otherwise a\nlarge `len\u0027 would cause out-of-bounds access via the memcpy() call.\nIn addition, len \u003d 0xffffffff would overflow the kmalloc() size,\nleading to out-of-bounds write.\n\nThis patch adds a check of `len\u0027 via ceph_decode_need().  Also use\nkstrndup rather than kmalloc/memcpy.\n\n[elder@inktank.com: added -ENOMEM return for null kstrndup() result]\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ce4516fbb42d2ad5adba4699ebc1703d4e08e821",
      "tree": "19b4f581d776e60440b57de8400a976c4facddd8",
      "parents": [
        "ae048538ab62c31f67d42e00a3183b8870809a3c"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jun 01 14:56:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:24 2012 -0800"
      },
      "message": "libceph: make ceph_con_revoke_message() a msg op\n\n(cherry picked from commit 8921d114f5574c6da2cdd00749d185633ecf88f3)\n\nceph_con_revoke_message() is passed both a message and a ceph\nconnection.  A ceph_msg allocated for incoming messages on a\nconnection always has a pointer to that connection, so there\u0027s no\nneed to provide the connection when revoking such a message.\n\nNote that the existing logic does not preclude the message supplied\nbeing a null/bogus message pointer.  The only user of this interface\nis the OSD client, and the only value an osd client passes is a\nrequest\u0027s r_reply field.  That is always non-null (except briefly in\nan error path in ceph_osdc_alloc_request(), and that drops the\nonly reference so the request won\u0027t ever have a reply to revoke).\nSo we can safely assume the passed-in message is non-null, but add a\nBUG_ON() to make it very obvious we are imposing this restriction.\n\nRename the function ceph_msg_revoke_incoming() to reflect that it is\nreally an operation on an incoming message.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ae048538ab62c31f67d42e00a3183b8870809a3c",
      "tree": "f77272ada51185c3892dab22dba5775b827be59c",
      "parents": [
        "bfd357201d3ffc6cc621e4c69fd47e7d457e5f3a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jun 01 14:56:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:24 2012 -0800"
      },
      "message": "libceph: make ceph_con_revoke() a msg operation\n\n(cherry picked from commit 6740a845b2543cc46e1902ba21bac743fbadd0dc)\n\nceph_con_revoke() is passed both a message and a ceph connection.\nNow that any message associated with a connection holds a pointer\nto that connection, there\u0027s no need to provide the connection when\nrevoking a message.\n\nThis has the added benefit of precluding the possibility of the\nproviding the wrong connection pointer.  If the message\u0027s connection\npointer is null, it is not being tracked by any connection, so\nrevoking it is a no-op.  This is supported as a convenience for\nupper layers, so they can revoke a message that is not actually\n\"in flight.\"\n\nRename the function ceph_msg_revoke() to reflect that it is really\nan operation on a message, not a connection.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "bfd357201d3ffc6cc621e4c69fd47e7d457e5f3a",
      "tree": "64f63fc3f2d0da1ac2abc43e095111fa9332f9c3",
      "parents": [
        "e84e066e5c8c858d3954b2ef1da25c14309e4cef"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 04 14:43:33 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:23 2012 -0800"
      },
      "message": "libceph: have messages take a connection reference\n\n(cherry picked from commit 92ce034b5a740046cc643a21ea21eaad589e0043)\n\nThere are essentially two types of ceph messages: incoming and\noutgoing.  Outgoing messages are always allocated via ceph_msg_new(),\nand at the time of their allocation they are not associated with any\nparticular connection.  Incoming messages are always allocated via\nceph_con_in_msg_alloc(), and they are initially associated with the\nconnection from which incoming data will be placed into the message.\n\nWhen an outgoing message gets sent, it becomes associated with a\nconnection and remains that way until the message is successfully\nsent.  The association of an incoming message goes away at the point\nit is sent to an upper layer via a con-\u003eops-\u003edispatch method.\n\nThis patch implements reference counting for all ceph messages, such\nthat every message holds a reference (and a pointer) to a connection\nif and only if it is associated with that connection (as described\nabove).\n\nFor background, here is an explanation of the ceph message\nlifecycle, emphasizing when an association exists between a message\nand a connection.\n\nOutgoing Messages\nAn outgoing message is \"owned\" by its allocator, from the time it is\nallocated in ceph_msg_new() up to the point it gets queued for\nsending in ceph_con_send().  Prior to that point the message\u0027s\nmsg-\u003econ pointer is null; at the point it is queued for sending its\nmessage pointer is assigned to refer to the connection.  At that\ntime the message is inserted into a connection\u0027s out_queue list.\n\nWhen a message on the out_queue list has been sent to the socket\nlayer to be put on the wire, it is transferred out of that list and\ninto the connection\u0027s out_sent list.  At that point it is still owned\nby the connection, and will remain so until an acknowledgement is\nreceived from the recipient that indicates the message was\nsuccessfully transferred.  When such an acknowledgement is received\n(in process_ack()), the message is removed from its list (in\nceph_msg_remove()), at which point it is no longer associated with\nthe connection.\n\nSo basically, any time a message is on one of a connection\u0027s lists,\nit is associated with that connection.  Reference counting outgoing\nmessages can thus be done at the points a message is added to the\nout_queue (in ceph_con_send()) and the point it is removed from\neither its two lists (in ceph_msg_remove())--at which point its\nconnection pointer becomes null.\n\nIncoming Messages\nWhen an incoming message on a connection is getting read (in\nread_partial_message()) and there is no message in con-\u003ein_msg,\na new one is allocated using ceph_con_in_msg_alloc().  At that\npoint the message is associated with the connection.  Once that\nmessage has been completely and successfully read, it is passed to\nupper layer code using the connection\u0027s con-\u003eops-\u003edispatch method.\nAt that point the association between the message and the connection\nno longer exists.\n\nReference counting of connections for incoming messages can be done\nby taking a reference to the connection when the message gets\nallocated, and releasing that reference when it gets handed off\nusing the dispatch method.\n\nWe should never fail to get a connection reference for a\nmessage--the since the caller should already hold one.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "e84e066e5c8c858d3954b2ef1da25c14309e4cef",
      "tree": "fa927a404b1bdd81fb9102824549cc04dee8f875",
      "parents": [
        "35067a20685e5f51513c3633256e658fc71e847e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jun 01 14:56:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:23 2012 -0800"
      },
      "message": "libceph: have messages point to their connection\n\n(cherry picked from commit 38941f8031bf042dba3ced6394ba3a3b16c244ea)\n\nWhen a ceph message is queued for sending it is placed on a list of\npending messages (ceph_connection-\u003eout_queue).  When they are\nactually sent over the wire, they are moved from that list to\nanother (ceph_connection-\u003eout_sent).  When acknowledgement for the\nmessage is received, it is removed from the sent messages list.\n\nDuring that entire time the message is \"in the possession\" of a\nsingle ceph connection.  Keep track of that connection in the\nmessage.  This will be used in the next patch (and is a helpful\nbit of information for debugging anyway).\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "35067a20685e5f51513c3633256e658fc71e847e",
      "tree": "5c1837a2a781a18c8aaa458cdce9a0e300a188d0",
      "parents": [
        "6880138c03448b3c375a3d7a8ef6acd688e6fb40"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 04 14:43:32 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:23 2012 -0800"
      },
      "message": "libceph: tweak ceph_alloc_msg()\n\n(cherry picked from commit 1c20f2d26795803fc4f5155fe4fca5717a5944b6)\n\nThe function ceph_alloc_msg() is only used to allocate a message\nthat will be assigned to a connection\u0027s in_msg pointer.  Rename the\nfunction so this implied usage is more clear.\n\nIn addition, make that assignment inside the function (again, since\nthat\u0027s precisely what it\u0027s intended to be used for).  This allows us\nto return what is now provided via the passed-in address of a \"skip\"\nvariable.  The return type is now Boolean to be explicit that there\nare only two possible outcomes.\n\nMake sure the result of an -\u003ealloc_msg method call always sets the\nvalue of *skip properly.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "6880138c03448b3c375a3d7a8ef6acd688e6fb40",
      "tree": "32fcab0d28584b1ba13756cbdfd4f870065ecd69",
      "parents": [
        "9403ae33bf946342b23cfe3dbf3e4c9b86860c97"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sat May 26 23:26:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:23 2012 -0800"
      },
      "message": "libceph: fully initialize connection in con_init()\n\n(cherry picked from commit 1bfd89f4e6e1adc6a782d94aa5d4c53be1e404d7)\n\nMove the initialization of a ceph connection\u0027s private pointer,\noperations vector pointer, and peer name information into\nceph_con_init().  Rearrange the arguments so the connection pointer\nis first.  Hide the byte-swapping of the peer entity number inside\nceph_con_init()\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "9403ae33bf946342b23cfe3dbf3e4c9b86860c97",
      "tree": "54a62262c4c310b065f28a716df47c511e426ef6",
      "parents": [
        "a2b87615e2acfb851ec43603d0061f631381301a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sat May 26 23:26:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:23 2012 -0800"
      },
      "message": "libceph: init monitor connection when opening\n\n(cherry picked from commit 20581c1faf7b15ae1f8b80c0ec757877b0b53151)\n\nHold off initializing a monitor client\u0027s connection until just\nbefore it gets opened for use.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a2b87615e2acfb851ec43603d0061f631381301a",
      "tree": "29b5330ac144a2a44fe04e06f2b03346b4e766dd",
      "parents": [
        "31a84d83433edc79151e28762c1992c0708b222c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Thu May 31 20:27:50 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:22 2012 -0800"
      },
      "message": "libceph: drop connection refcounting for mon_client\n\n(cherry picked from commit ec87ef4309d33bd9c87a53bb5152a86ae7a65f25)\n\nAll references to the embedded ceph_connection come from the msgr\nworkqueue, which is drained prior to mon_client destruction.  That\nmeans we can ignore con refcounting entirely.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "31a84d83433edc79151e28762c1992c0708b222c",
      "tree": "4be92156c4e1ee9c363f83fc6c2596cf608b8199",
      "parents": [
        "51588ed26f489e50bfd2359d55abcb4d907149bc"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sat May 26 23:26:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:22 2012 -0800"
      },
      "message": "libceph: embed ceph connection structure in mon_client\n\n(cherry picked from commit 67130934fb579fdf0f2f6d745960264378b57dc8)\n\nA monitor client has a pointer to a ceph connection structure in it.\nThis is the only one of the three ceph client types that do it this\nway; the OSD and MDS clients embed the connection into their main\nstructures.  There is always exactly one ceph connection for a\nmonitor client, so there is no need to allocate it separate from the\nmonitor client structure.\n\nSo switch the ceph_mon_client structure to embed its\nceph_connection structure.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "51588ed26f489e50bfd2359d55abcb4d907149bc",
      "tree": "b4f266e3164be1b650c89718af7048743f903309",
      "parents": [
        "d39319ee9b0381848a7e2261d53914e2732191d7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue May 29 11:04:58 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:22 2012 -0800"
      },
      "message": "libceph: set CLOSED state bit in con_init\n\n(cherry picked from commit a5988c490ef66cb04ea2f610681949b25c773b3c)\n\nOnce a connection is fully initialized, it is really in a CLOSED\nstate, so make that explicit by setting the bit in its state field.\n\nIt is possible for a connection in NEGOTIATING state to get a\nfailure, leading to ceph_fault() and ultimately ceph_con_close().\nClear that bits if it is set in that case, to reflect that the\nconnection truly is closed and is no longer participating in a\nconnect sequence.\n\nIssue a warning if ceph_con_open() is called on a connection that\nis not in CLOSED state.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "d39319ee9b0381848a7e2261d53914e2732191d7",
      "tree": "b8ca102f48696f3f734fad41051fc6d814ff21da",
      "parents": [
        "0bcd15777405bf024a3ec591731582f7263ea1c0"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sat May 26 23:26:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:22 2012 -0800"
      },
      "message": "libceph: provide osd number when creating osd\n\n(cherry picked from commit e10006f807ffc4d5b1d861305d18d9e8145891ca)\n\nPass the osd number to the create_osd() routine, and move the\ninitialization of fields that depend on it therein.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "0bcd15777405bf024a3ec591731582f7263ea1c0",
      "tree": "e6e909ce1c506b160a4f8121701681fd5a697778",
      "parents": [
        "bc327474a0c9f3477be61b2d3e33833ef7b01bf9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue May 22 22:15:49 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:22 2012 -0800"
      },
      "message": "libceph: start tracking connection socket state\n\n(cherry picked from commit ce2c8903e76e690846a00a0284e4bd9ee954d680)\n\nStart explicitly keeping track of the state of a ceph connection\u0027s\nsocket, separate from the state of the connection itself.  Create\nplaceholder functions to encapsulate the state transitions.\n\n    --------\n    | NEW* |  transient initial state\n    --------\n        | con_sock_state_init()\n        v\n    ----------\n    | CLOSED |  initialized, but no socket (and no\n    ----------  TCP connection)\n     ^      \\\n     |       \\ con_sock_state_connecting()\n     |        ----------------------\n     |                              \\\n     + con_sock_state_closed()       \\\n     |\\                               \\\n     | \\                               \\\n     |  -----------                     \\\n     |  | CLOSING |  socket event;       \\\n     |  -----------  await close          \\\n     |       ^                            |\n     |       |                            |\n     |       + con_sock_state_closing()   |\n     |      / \\                           |\n     |     /   ---------------            |\n     |    /                   \\           v\n     |   /                    --------------\n     |  /    -----------------| CONNECTING |  socket created, TCP\n     |  |   /                 --------------  connect initiated\n     |  |   | con_sock_state_connected()\n     |  |   v\n    -------------\n    | CONNECTED |  TCP connection established\n    -------------\n\nMake the socket state an atomic variable, reinforcing that it\u0027s a\ndistinct transtion with no possible \"intermediate/both\" states.\nThis is almost certainly overkill at this point, though the\ntransitions into CONNECTED and CLOSING state do get called via\nsocket callback (the rest of the transitions occur with the\nconnection mutex held).  We can back out the atomicity later.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil\u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "bc327474a0c9f3477be61b2d3e33833ef7b01bf9",
      "tree": "fabf603a635c91daf1afd423f48fbc7574fa0400",
      "parents": [
        "d910c114b6da5b78c88889eff1b3f9e83c6f81cb"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue May 22 11:41:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:21 2012 -0800"
      },
      "message": "libceph: start separating connection flags from state\n\n(cherry picked from commit 928443cd9644e7cfd46f687dbeffda2d1a357ff9)\n\nA ceph_connection holds a mixture of connection state (as in \"state\nmachine\" state) and connection flags in a single \"state\" field.  To\nmake the distinction more clear, define a new \"flags\" field and use\nit rather than the \"state\" field to hold Boolean flag values.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil\u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "d910c114b6da5b78c88889eff1b3f9e83c6f81cb",
      "tree": "3bef4800c3888c84e61436de727ddba440eeb33b",
      "parents": [
        "4874ba9c07e2fa418cd7272d657f5cc883efd35a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sat May 26 23:26:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:21 2012 -0800"
      },
      "message": "libceph: embed ceph messenger structure in ceph_client\n\n(cherry picked from commit 15d9882c336db2db73ccf9871ae2398e452f694c)\n\nA ceph client has a pointer to a ceph messenger structure in it.\nThere is always exactly one ceph messenger for a ceph client, so\nthere is no need to allocate it separate from the ceph client\nstructure.\n\nSwitch the ceph_client structure to embed its ceph_messenger\nstructure.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "4874ba9c07e2fa418cd7272d657f5cc883efd35a",
      "tree": "609dcda18f69095b25ec649f854462fb13b410af",
      "parents": [
        "f5e79a443054452866bba4856ed243faf502d708"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 23 14:35:23 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:21 2012 -0800"
      },
      "message": "libceph: rename kvec_reset and kvec_add functions\n\n(cherry picked from commit e22004235a900213625acd6583ac913d5a30c155)\n\nThe functions ceph_con_out_kvec_reset() and ceph_con_out_kvec_add()\nare entirely private functions, so drop the \"ceph_\" prefix in their\nname to make them slightly more wieldy.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f5e79a443054452866bba4856ed243faf502d708",
      "tree": "a8e1559509c6f6f71c84b64d58476bae0a148441",
      "parents": [
        "809c58f1bd5fa3d3e9ff1d3614c00c1a1239abf1"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue May 22 11:41:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:21 2012 -0800"
      },
      "message": "libceph: rename socket callbacks\n\n(cherry picked from commit 327800bdc2cb9b71f4b458ca07aa9d522668dde0)\n\nChange the names of the three socket callback functions to make it\nmore obvious they\u0027re specifically associated with a connection\u0027s\nsocket (not the ceph connection that uses it).\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "809c58f1bd5fa3d3e9ff1d3614c00c1a1239abf1",
      "tree": "b706507a913b80898d6fd4a870189c96763f3c1f",
      "parents": [
        "ac7a42681718cd7474cec70f198f0684ba7444eb"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue May 29 21:47:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:21 2012 -0800"
      },
      "message": "libceph: kill bad_proto ceph connection op\n\n(cherry picked from commit 6384bb8b8e88a9c6bf2ae0d9517c2c0199177c34)\n\nNo code sets a bad_proto method in its ceph connection operations\nvector, so just get rid of it.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ac7a42681718cd7474cec70f198f0684ba7444eb",
      "tree": "30312de527b0b0a602b29b5c9d9c925e48d7f463",
      "parents": [
        "e7fda85c9dab7396c5ed7345ab7c6fcdf4ffc366"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue May 22 11:41:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:20 2012 -0800"
      },
      "message": "libceph: eliminate connection state \"DEAD\"\n\n(cherry picked from commit e5e372da9a469dfe3ece40277090a7056c566838)\n\nThe ceph connection state \"DEAD\" is never set and is therefore not\nneeded.  Eliminate it.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "e7fda85c9dab7396c5ed7345ab7c6fcdf4ffc366",
      "tree": "4295dee66c02db5d5e4b56e1b9e60fe675b602e7",
      "parents": [
        "9923ad77a69ab565af2746262989cc0340943668"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Mon May 28 14:44:30 2012 +0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:20 2012 -0800"
      },
      "message": "ceph: check PG_Private flag before accessing page-\u003eprivate\n\n(cherry picked from commit 28c0254ede13ab575d2df5c6585ed3d4817c3e6b)\n\nI got lots of NULL pointer dereference Oops when compiling kernel on ceph.\nThe bug is because the kernel page migration routine replaces some pages\nin the page cache with new pages, these new pages\u0027 private can be non-zero.\n\nSigned-off-by: Zheng Yan \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "9923ad77a69ab565af2746262989cc0340943668",
      "tree": "d72bc1c24fa9093177907b4e47931b9c0cc787a5",
      "parents": [
        "6448acf6e6b603c4fa21697931cd400ebee21d4a"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Wed Jun 06 09:15:33 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:10 2012 -0800"
      },
      "message": "rbd: Fix ceph_snap_context size calculation\n\n(cherry picked from commit f9f9a1904467816452fc70740165030e84c2c659)\n\nceph_snap_context-\u003esnaps is an u64 array\n\nSigned-off-by: Zheng Yan \u003czheng.z.yan@intel.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "6448acf6e6b603c4fa21697931cd400ebee21d4a",
      "tree": "e0c2f7588518946fae0d302c1ff81af81e2b41cf",
      "parents": [
        "45739514727c294e843269d515b952d5dbd911bf"
      ],
      "author": {
        "name": "Josh Durgin",
        "email": "josh.durgin@dreamhost.com",
        "time": "Mon Nov 21 13:04:42 2011 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:10 2012 -0800"
      },
      "message": "rbd: store snapshot id instead of index\n\n(cherry picked from commit 77dfe99fe3cb0b2b0545e19e2d57b7a9134ee3c0)\n\nWhen a device was open at a snapshot, and snapshots were deleted or\nadded, data from the wrong snapshot could be read. Instead of\nassuming the snap context is constant, store the actual snap id when\nthe device is initialized, and rely on the OSDs to signal an error\nif we try reading from a snapshot that was deleted.\n\nSigned-off-by: Josh Durgin \u003cjosh.durgin@dreamhost.com\u003e\nReviewed-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "45739514727c294e843269d515b952d5dbd911bf",
      "tree": "96021d986c838adf85f6799d40e3583ce026eddf",
      "parents": [
        "095cb2142dfb10daea5a3351ed9646d3178a6823"
      ],
      "author": {
        "name": "Josh Durgin",
        "email": "josh.durgin@dreamhost.com",
        "time": "Mon Dec 05 10:47:13 2011 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:10 2012 -0800"
      },
      "message": "rbd: protect read of snapshot sequence number\n\n(cherry picked from commit 403f24d3d51760a8b9368d595fa5f48c309f1a0f)\n\nThis is updated whenever a snapshot is added or deleted, and the\nsnapc pointer is changed with every refresh of the header.\n\nSigned-off-by: Josh Durgin \u003cjosh.durgin@dreamhost.com\u003e\nReviewed-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "095cb2142dfb10daea5a3351ed9646d3178a6823",
      "tree": "32290c2d2277d3a95e3f40b1825295ab3dd215e9",
      "parents": [
        "49da293c7dc4401c2c7963a2c70f633b1c8fa8c5"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Apr 04 13:35:44 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:10 2012 -0800"
      },
      "message": "rbd: don\u0027t hold spinlock during messenger flush\n\n(cherry picked from commit cd9d9f5df6098c50726200d4185e9e8da32785b3)\n\nA recent change made changes to the rbd_client_list be protected by\na spinlock.  Unfortunately in rbd_put_client(), the lock is taken\nbefore possibly dropping the last reference to an rbd_client, and on\nthe last reference that eventually calls flush_workqueue() which can\nsleep.\n\nThe problem was flagged by a debug spinlock warning:\n    BUG: spinlock wrong CPU on CPU#3, rbd/27814\n\nThe solution is to move the spinlock acquisition and release inside\nrbd_client_release(), which is the spot where it\u0027s really needed for\nprotecting the removal of the rbd_client from the client list.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "49da293c7dc4401c2c7963a2c70f633b1c8fa8c5",
      "tree": "7e61b4bfd7e2c192ba47b8db4866f3f9e7c039c2",
      "parents": [
        "21cbad59b07693104dda76ee4afef41302b2b8fb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Tue Jul 10 11:53:34 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:10 2012 -0800"
      },
      "message": "libceph: fix messenger retry\n\n(cherry picked from commit 5bdca4e0768d3e0f4efa43d9a2cc8210aeb91ab9)\n\nIn ancient times, the messenger could both initiate and accept connections.\nAn artifact if that was data structures to store/process an incoming\nceph_msg_connect request and send an outgoing ceph_msg_connect_reply.\nSadly, the negotiation code was referencing those structures and ignoring\nimportant information (like the peer\u0027s connect_seq) from the correct ones.\n\nAmong other things, this fixes tight reconnect loops where the server sends\nRETRY_SESSION and we (the client) retries with the same connect_seq as last\ntime.  This bug pretty easily triggered by injecting socket failures on the\nMDS and running some fs workload like workunits/direct_io/test_sync_io.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "21cbad59b07693104dda76ee4afef41302b2b8fb",
      "tree": "abc235870afd39ee9a90ec98d923ad2d07c678a9",
      "parents": [
        "576e428b246271f0f078079c68a9f11679c7db8a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Sun Jun 10 20:43:56 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:09 2012 -0800"
      },
      "message": "libceph: flush msgr queue during mon_client shutdown\n\n(cherry picked from commit f3dea7edd3d449fe7a6d402c1ce56a294b985261)\n(cherry picked from commit 642c0dbde32f34baa7886e988a067089992adc8f)\n\nWe need to flush the msgr workqueue during mon_client shutdown to\nensure that any work affecting our embedded ceph_connection is\nfinished so that we can be safely destroyed.\n\nPreviously, we were flushing the work queue after osd_client\nshutdown and before mon_client shutdown to ensure that any osd\nconnection refs to authorizers are flushed.  Remove the redundant\nflush, and document in the comment that the mon_client flush is\nneeded to cover that case as well.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "576e428b246271f0f078079c68a9f11679c7db8a",
      "tree": "147e2fb1c6899ddda780f84196581c6f6c0cba2a",
      "parents": [
        "acecca48781a79040dca822cf96d505904c282c3"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Wed Jun 06 19:35:55 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:09 2012 -0800"
      },
      "message": "rbd: Clear ceph_msg-\u003ebio_iter for retransmitted message\n\n(cherry picked from commit 43643528cce60ca184fe8197efa8e8da7c89a037)\n(cherry picked from commit b132cf4c733f91bb4dd2277ea049243cf16e8b66)\n\nThe bug can cause NULL pointer dereference in write_partial_msg_pages\n\nSigned-off-by: Zheng Yan \u003czheng.z.yan@intel.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "acecca48781a79040dca822cf96d505904c282c3",
      "tree": "53dbd32dc578652bc989b2f29a40a432a307784a",
      "parents": [
        "40971fcf1578d743cde0272ad20539f5ea34725a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Thu May 31 20:22:18 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:09 2012 -0800"
      },
      "message": "libceph: use con get/put ops from osd_client\n\n(cherry picked from commit 0d47766f14211a73eaf54cab234db134ece79f49)\n\nThere were a few direct calls to ceph_con_{get,put}() instead of the con\nops from osd_client.c.  This is a bug since those ops aren\u0027t defined to\nbe ceph_con_get/put.\n\nThis breaks refcounting on the ceph_osd structs that contain the\nceph_connections, and could lead to all manner of strangeness.\n\nThe purpose of the -\u003eget and -\u003eput methods in a ceph connection are\nto allow the connection to indicate it has a reference to something\nexternal to the messaging system, *not* to indicate something\nexternal has a reference to the connection.\n\n[elder@inktank.com: added that last sentence]\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n(cherry picked from commit 88ed6ea0b295f8e2383d599a04027ec596cdf97b)\n"
    },
    {
      "commit": "40971fcf1578d743cde0272ad20539f5ea34725a",
      "tree": "a56cfebbb5155355bb053e8403f3f253c983c687",
      "parents": [
        "1c201dffa3f4ef8e53dca7bffb8987a43e3e9139"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jun 04 14:43:32 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:09 2012 -0800"
      },
      "message": "libceph: osd_client: don\u0027t drop reply reference too early\n\n(cherry picked from commit ab8cb34a4b2f60281a4b18b1f1ad23bc2313d91b)\n\nIn ceph_osdc_release_request(), a reference to the r_reply message\nis dropped.  But just after that, that same message is revoked if it\nwas in use to receive an incoming reply.  Reorder these so we are\nsure we hold a reference until we\u0027re actually done with the message.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n(cherry picked from commit 680584fab05efff732b5ae16ad601ba994d7b505)\n"
    },
    {
      "commit": "1c201dffa3f4ef8e53dca7bffb8987a43e3e9139",
      "tree": "0956508a8ec07169a20c7714477a1ca211da9bb6",
      "parents": [
        "15ba38ebcee664a5a5de57300ee721e0d65b2dd5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 21 09:45:23 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:09 2012 -0800"
      },
      "message": "libceph: fix pg_temp updates\n\n(cherry picked from commit 6bd9adbdf9ca6a052b0b7455ac67b925eb38cfad)\n\nUsually, we are adding pg_temp entries or removing them.  Occasionally they\nupdate.  In that case, osdmap_apply_incremental() was failing because the\nrbtree entry already exists.\n\nFix by removing the existing entry before inserting a new one.\n\nFixes http://tracker.newdream.net/issues/2446\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "15ba38ebcee664a5a5de57300ee721e0d65b2dd5",
      "tree": "f88717a58c67b838ca063aa097e807a30e3be131",
      "parents": [
        "1d3df0e26616d97a798950eb5fb908b14b1839da"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:08 2012 -0800"
      },
      "message": "libceph: avoid unregistering osd request when not registered\n\n(cherry picked from commit 35f9f8a09e1e88e31bd34a1e645ca0e5f070dd5c)\n\nThere is a race between two __unregister_request() callers: the\nreply path and the ceph_osdc_wait_request().  If we get a reply\n*and* the timeout expires at roughly the same time, both callers\nwill try to unregister the request, and the second one will do bad\nthings.\n\nSimply check if the request is still already unregistered; if so,\nreturn immediately and do nothing.\n\nFixes http://tracker.newdream.net/issues/2420\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "1d3df0e26616d97a798950eb5fb908b14b1839da",
      "tree": "4be641c4f8d4a5695b85b99b3496130d69165e32",
      "parents": [
        "3f13447d2c90842c9ea5ceb6b4f8b8b7737f04da"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:08 2012 -0800"
      },
      "message": "ceph: add auth buf in prepare_write_connect()\n\n(cherry picked from commit 3da54776e2c0385c32d143fd497a7f40a88e29dd)\n\nMove the addition of the authorizer buffer to a connection\u0027s\nout_kvec out of get_connect_authorizer() and into its caller.  This\nway, the caller--prepare_write_connect()--can avoid adding the\nconnect header to out_kvec before it has been fully initialized.\n\nPrior to this patch, it was possible for a connect header to be\nsent over the wire before the authorizer protocol or buffer length\nfields were initialized.  An authorizer buffer associated with that\nheader could also be queued to send only after the connection header\nthat describes it was on the wire.\n\nFixes http://tracker.newdream.net/issues/2424\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "3f13447d2c90842c9ea5ceb6b4f8b8b7737f04da",
      "tree": "67c5a7e81ce5737a29ab0ac8e4d3e2313790a264",
      "parents": [
        "8d19055c84e89980a0e60604bd925bf7cf4cb9e4"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:08 2012 -0800"
      },
      "message": "ceph: rename prepare_connect_authorizer()\n\n(cherry picked from commit dac1e716c60161867a47745bca592987ca3a9cb2)\n\nChange the name of prepare_connect_authorizer().  The next\npatch is going to make this function no longer add anything to the\nconnection\u0027s out_kvec, so it will no longer fit the pattern of\nthe rest of the prepare_connect_*() functions.\n\nIn addition, pass the address of a variable that will hold the\nauthorization protocol to use.  Move the assignment of that to the\nconnection\u0027s out_connect structure into prepare_write_connect().\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "8d19055c84e89980a0e60604bd925bf7cf4cb9e4",
      "tree": "215315a62381ddd56e9ceec5fa85d82790b7d9c9",
      "parents": [
        "ed35fbcd3cf73dfbff59bf8c20c772925562bc45"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:08 2012 -0800"
      },
      "message": "ceph: return pointer from prepare_connect_authorizer()\n\n(cherry picked from commit 729796be9190f57ca40ccca315e8ad34a1eb8fef)\n\nChange prepare_connect_authorizer() so it returns a pointer (or\npointer-coded error).\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ed35fbcd3cf73dfbff59bf8c20c772925562bc45",
      "tree": "7a93030aa0bd809eb111d339cd82a0c29b32be74",
      "parents": [
        "4f33c7ed3796a5078cd9eef0d3af4ebf8f7e1b99"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:08 2012 -0800"
      },
      "message": "ceph: use info returned by get_authorizer\n\n(cherry picked from commit 8f43fb53894079bf0caab6e348ceaffe7adc651a)\n\nRather than passing a bunch of arguments to be filled in with the\ncontent of the ceph_auth_handshake buffer now returned by the\nget_authorizer method, just use the returned information in the\ncaller, and drop the unnecessary arguments.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "4f33c7ed3796a5078cd9eef0d3af4ebf8f7e1b99",
      "tree": "04ad359931118b3023e230b48dbba1a2184e8ad4",
      "parents": [
        "83d28f7956228e0dd1774aed1096392d3bfc0597"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:07 2012 -0800"
      },
      "message": "ceph: have get_authorizer methods return pointers\n\n(cherry picked from commit a3530df33eb91d787d08c7383a0a9982690e42d0)\n\nHave the get_authorizer auth_client method return a ceph_auth\npointer rather than an integer, pointer-encoding any returned\nerror value.  This is to pave the way for making use of the\nreturned value in an upcoming patch.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "83d28f7956228e0dd1774aed1096392d3bfc0597",
      "tree": "c0d9780e35f34d0732bfbaa161f2ca3bd5f53768",
      "parents": [
        "018a2a13f3cb5e205618b1357124ff25eb3a8223"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:07 2012 -0800"
      },
      "message": "ceph: ensure auth ops are defined before use\n\n(cherry picked from commit a255651d4cad89f1a606edd36135af892ada4f20)\n\nIn the create_authorizer method for both the mds and osd clients,\nthe auth_client-\u003eops pointer is blindly dereferenced.  There is no\nobvious guarantee that this pointer has been assigned.  And\nfurthermore, even if the ops pointer is non-null there is definitely\nno guarantee that the create_authorizer or destroy_authorizer\nmethods are defined.\n\nAdd checks in both routines to make sure they are defined (non-null)\nbefore use.  Add similar checks in a few other spots in these files\nwhile we\u0027re at it.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "018a2a13f3cb5e205618b1357124ff25eb3a8223",
      "tree": "cdbe7ee5776a748574c31d42721b97870ac2fad1",
      "parents": [
        "0f56a54fced6bee6e56a8b84f9adb65a41032866"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:07 2012 -0800"
      },
      "message": "ceph: messenger: reduce args to create_authorizer\n\n(cherry picked from commit 74f1869f76d043bad12ec03b4d5f04a8c3d1f157)\n\nMake use of the new ceph_auth_handshake structure in order to reduce\nthe number of arguments passed to the create_authorizor method in\nceph_auth_client_ops.  Use a local variable of that type as a\nshorthand in the get_authorizer method definitions.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "0f56a54fced6bee6e56a8b84f9adb65a41032866",
      "tree": "fbe92f0375167e2f0b17ce0159b464a89cc667d4",
      "parents": [
        "33f0577a991d6d00805450ea29da5a91f6acd1a8"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:07 2012 -0800"
      },
      "message": "ceph: define ceph_auth_handshake type\n\n(cherry picked from commit 6c4a19158b96ea1fb8acbe0c1d5493d9dcd2f147)\n\nThe definitions for the ceph_mds_session and ceph_osd both contain\nfive fields related only to \"authorizers.\"  Encapsulate those fields\ninto their own struct type, allowing for better isolation in some\nupcoming patches.\n\nFix the #includes in \"linux/ceph/osd_client.h\" to lay out their more\ncomplete canonical path.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "33f0577a991d6d00805450ea29da5a91f6acd1a8",
      "tree": "cd649ef62a7c738b2ca8078d50eef6276a79fd0f",
      "parents": [
        "29e1a95eb5de3d6745e6eebb7d22dfaea437783c"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:06 2012 -0800"
      },
      "message": "ceph: messenger: check return from get_authorizer\n\n(cherry picked from commit ed96af646011412c2bf1ffe860db170db355fae5)\n\nIn prepare_connect_authorizer(), a connection\u0027s get_authorizer\nmethod is called but ignores its return value.  This function can\nreturn an error, so check for it and return it if that ever occurs.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "29e1a95eb5de3d6745e6eebb7d22dfaea437783c",
      "tree": "16524e923867f0f5c648e53a99b4a498df5efa95",
      "parents": [
        "59336e08468a9485e499b1449ebc3d68331233db"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:06 2012 -0800"
      },
      "message": "ceph: messenger: rework prepare_connect_authorizer()\n\n(cherry picked from commit b1c6b9803f5491e94041e6da96bc9dec3870e792)\n\nChange prepare_connect_authorizer() so it returns without dropping\nthe connection mutex if the connection has no get_authorizer method.\n\nUse the symbolic CEPH_AUTH_UNKNOWN instead of 0 when assigning\nauthorization protocols.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "59336e08468a9485e499b1449ebc3d68331233db",
      "tree": "84731369e7a200ab49f42fe484ed28e3b721398f",
      "parents": [
        "59a521ebc05d2bd826d19c4a9a6fb00c313f6a52"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 21:51:59 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:06 2012 -0800"
      },
      "message": "ceph: messenger: check prepare_write_connect() result\n\n(cherry picked from commit 5a0f8fdd8a0ebe320952a388331dc043d7e14ced)\n\nprepare_write_connect() can return an error, but only one of its\ncallers checks for it.  All the rest are in functions that already\nreturn errors, so it should be fine to return the error if one\ngets returned.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "59a521ebc05d2bd826d19c4a9a6fb00c313f6a52",
      "tree": "49c30f119f8a9be076ee63355b9baf63e881e8a2",
      "parents": [
        "7dd07ab6bdc7634e99747557d6ba342b639b13d9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:05 2012 -0800"
      },
      "message": "ceph: don\u0027t set WRITE_PENDING too early\n\n(cherry picked from commit e10c758e4031a801ea4d2f8fb39bf14c2658d74b)\n\nprepare_write_connect() prepares a connect message, then sets\nWRITE_PENDING on the connection.  Then *after* this, it calls\nprepare_connect_authorizer(), which updates the content of the\nconnection buffer already queued for sending.  It\u0027s also possible it\nwill result in prepare_write_connect() returning -EAGAIN despite the\nWRITE_PENDING big getting set.\n\nFix this by preparing the connect authorizer first, setting the\nWRITE_PENDING bit only after that is done.\n\nPartially addresses http://tracker.newdream.net/issues/2424\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "7dd07ab6bdc7634e99747557d6ba342b639b13d9",
      "tree": "c9e25031eb4df4dcbb82dfad4bea4f1290f36410",
      "parents": [
        "d4ac74c3222ae545e62bb1ab2bd7306d71ba5379"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:05 2012 -0800"
      },
      "message": "ceph: drop msgr argument from prepare_write_connect()\n\n(cherry picked from commit e825a66df97776d30a48a187e3a986736af43945)\n\nIn all cases, the value passed as the msgr argument to\nprepare_write_connect() is just con-\u003emsgr.  Just get the msgr\nvalue from the ceph connection and drop the unneeded argument.\n\nThe only msgr passed to prepare_write_banner() is also therefore\njust the one from con-\u003emsgr, so change that function to drop the\nmsgr argument as well.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "d4ac74c3222ae545e62bb1ab2bd7306d71ba5379",
      "tree": "81ad5cb31e2fcbf23fde03fa3bdeac0bcd1d84aa",
      "parents": [
        "726644c635924f48f1bc9f64087e92915bc61fc7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:05 2012 -0800"
      },
      "message": "ceph: messenger: send banner in process_connect()\n\n(cherry picked from commit 41b90c00858129f52d08e6a05c9cfdb0f2bd074d)\n\nprepare_write_connect() has an argument indicating whether a banner\nshould be sent out before sending out a connection message.  It\u0027s\nonly ever set in one of its callers, so move the code that arranges\nto send the banner into that caller and drop the \"include_banner\"\nargument from prepare_write_connect().\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "726644c635924f48f1bc9f64087e92915bc61fc7",
      "tree": "6a754783f13571919209096f820a5b1d6ff28500",
      "parents": [
        "6b7cc02849d47abf3077e27aec841dbd140b8b35"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:05 2012 -0800"
      },
      "message": "ceph: messenger: reset connection kvec caller\n\n(cherry picked from commit 84fb3adf6413862cff51d8af3fce5f0b655586a2)\n\nReset a connection\u0027s kvec fields in the caller rather than in\nprepare_write_connect().   This ends up repeating a few lines of\ncode but it\u0027s improving the separation between distinct operations\non the connection, which we can take advantage of later.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "6b7cc02849d47abf3077e27aec841dbd140b8b35",
      "tree": "7f988f419f8fe3316883492fdf66cd5664f1ac55",
      "parents": [
        "1f7631fba2a763f45bfec34bdf731e2089ca3d87"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:04 2012 -0800"
      },
      "message": "libceph: don\u0027t reset kvec in prepare_write_banner()\n\n(cherry picked from commit d329156f16306449c273002486c28de3ddddfd89)\n\nMove the kvec reset for a connection out of prepare_write_banner and\ninto its only caller.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "1f7631fba2a763f45bfec34bdf731e2089ca3d87",
      "tree": "31d13e1cdef11e4315bde9451a9a3417b8a4d521",
      "parents": [
        "dd22ce515dc6f8a69957473f1ce0d0d8f043b06a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu May 10 10:29:50 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:04 2012 -0800"
      },
      "message": "ceph: messenger: change read_partial() to take \"end\" arg\n\n(cherry picked from commit fd51653f78cf40a0516e521b6de22f329c5bad8d)\n\nMake the second argument to read_partial() be the ending input byte\nposition rather than the beginning offset it now represents.  This\namounts to moving the addition \"to + size\" into the caller.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "dd22ce515dc6f8a69957473f1ce0d0d8f043b06a",
      "tree": "8ca4b2bd4c5e02f3eaaadb27ea8f873b4df09af4",
      "parents": [
        "d0d7af68e9da4d8ad24052151d5d4add6464f505"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu May 10 10:29:50 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:04 2012 -0800"
      },
      "message": "ceph: messenger: update \"to\" in read_partial() caller\n\n(cherry picked from commit e6cee71fac27c946a0bbad754dd076e66c4e9dbd)\n\nread_partial() always increases whatever \"to\" value is supplied by\nadding the requested size to it, and that\u0027s the only thing it does\nwith that pointed-to value.\n\nDo that pointer advance in the caller (and then only when the\nupdated value will be subsequently used), and change the \"to\"\nparameter to be an in-only and non-pointer value.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "d0d7af68e9da4d8ad24052151d5d4add6464f505",
      "tree": "9125ab8794e97c647bea1f5f8cbd1bae49808555",
      "parents": [
        "f77637d9f603dd74cf1b4366d7bb1938a6715ab2"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu May 10 10:29:50 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:04 2012 -0800"
      },
      "message": "ceph: messenger: use read_partial() in read_partial_message()\n\n(cherry picked from commit 57dac9d1620942608306d8c17c98a9d1568ffdf4)\n\nThere are two blocks of code in read_partial_message()--those that\nread the header and footer of the message--that can be replaced by a\ncall to read_partial().  Do that.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f77637d9f603dd74cf1b4366d7bb1938a6715ab2",
      "tree": "e28d1c10bba5c4b7accf02cdde8fea258a482b01",
      "parents": [
        "cf34fc7d48d9600665e570b5c8a297a52bbe5fc5"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreawmhost.com",
        "time": "Fri Apr 20 15:49:43 2012 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:04 2012 -0800"
      },
      "message": "ceph: osd_client: fix endianness bug in osd_req_encode_op()\n\n(cherry picked from commit 065a68f9167e20f321a62d044cb2c3024393d455)\n\nFrom Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n\nAl Viro noticed that we were using a non-cpu-encoded value in\na switch statement in osd_req_encode_op().  The result would\nclearly not work correctly on a big-endian machine.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "cf34fc7d48d9600665e570b5c8a297a52bbe5fc5",
      "tree": "2efb7ff889f60720cd2feb643dfff10568b7c393",
      "parents": [
        "9a0117ae53308d0d8284ba5664ed4c1d0ec54176"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:37:05 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:03 2012 -0800"
      },
      "message": "crush: fix memory leak when destroying tree buckets\n\n(cherry picked from commit 6eb43f4b5a2a74599b4ff17a97c03a342327ca65)\n\nReflects ceph.git commit 46d63d98434b3bc9dad2fc9ab23cbaedc3bcb0e4.\n\nReported-by: Alexander Lyakas \u003calex.bolshoy@gmail.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "9a0117ae53308d0d8284ba5664ed4c1d0ec54176",
      "tree": "fa01a51137fbb7785b485ff4940c6d24fc5685aa",
      "parents": [
        "20501b9e6e1db8e7ab6668ef15d697b1c057a50a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:36:49 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:03 2012 -0800"
      },
      "message": "crush: fix tree node weight lookup\n\n(cherry picked from commit f671d4cd9b36691ac4ef42cde44c1b7a84e13631)\n\nFix the node weight lookup for tree buckets by using a correct accessor.\n\nReflects ceph.git commit d287ade5bcbdca82a3aef145b92924cf1e856733.\n\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "20501b9e6e1db8e7ab6668ef15d697b1c057a50a",
      "tree": "337645b14368ad41867843483fee7731aa996397",
      "parents": [
        "9926776ca573b23914d5265457202307a3715748"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:35:24 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:03 2012 -0800"
      },
      "message": "crush: be more tolerant of nonsensical crush maps\n\n(cherry picked from commit a1f4895be8bf1ba56c2306b058f51619e9b0e8f8)\n\nIf we get a map that doesn\u0027t make sense, error out or ignore the badness\ninstead of BUGging out.  This reflects the ceph.git commits\n9895f0bff7dc68e9b49b572613d242315fb11b6c and\n8ded26472058d5205803f244c2f33cb6cb10de79.\n\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "9926776ca573b23914d5265457202307a3715748",
      "tree": "5b0e181568831b2f9df0a548238df8240509ed47",
      "parents": [
        "506b4672ace55889c16d4e9d5515e0c1ae7832d5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:35:09 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:03 2012 -0800"
      },
      "message": "crush: adjust local retry threshold\n\n(cherry picked from commit c90f95ed46393e29d843686e21947d1c6fcb1164)\n\nThis small adjustment reflects a change that was made in ceph.git commit\naf6a9f30696c900a2a8bd7ae24e8ed15fb4964bb, about 6 months ago.  An N-1\nsearch is not exhaustive.  Fixed ceph.git bug #1594.\n\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "506b4672ace55889c16d4e9d5515e0c1ae7832d5",
      "tree": "36da5c2597634f1398bb0f0d8cfdcec2fc617569",
      "parents": [
        "55649211861616c26aa25c9e710c5691837975e4"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:38:35 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Nov 26 11:38:03 2012 -0800"
      },
      "message": "crush: clean up types, const-ness\n\n(cherry picked from commit 8b12d47b80c7a34dffdd98244d99316db490ec58)\n\nMove various types from int -\u003e __u32 (or similar), and add const as\nappropriate.\n\nThis reflects changes that have been present in the userland implementation\nfor some time.\n\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    }
  ],
  "next": "55649211861616c26aa25c9e710c5691837975e4"
}
