)]}'
{
  "log": [
    {
      "commit": "9bb0ce2b0b734f3325ea5cd6b351856eeac94f78",
      "tree": "afd4c5d343ddfabae8c3b78bff342f6ba6037055",
      "parents": [
        "773e9b442693b250aa6c452cb0cf5a9343f51cef"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jun 13 16:20:18 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jun 13 16:26:17 2011 -0700"
      },
      "message": "libceph: fix page calculation for non-page-aligned io\n\nSet the page count correctly for non-page-aligned IO.  We were already\ndoing this correctly for alignment, but not the page count.  Fixes\nDIRECT_IO writes from unaligned pages.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2584547230ae49b8de91ab3bb5e0a81898905b45",
      "tree": "1f00818bc7075e0898998d4e05c0cd08dd3d85d0",
      "parents": [
        "70b666c3b4cb2b96098d80e6f515e4bc6d37db5a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Jun 03 09:37:09 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 07 21:34:13 2011 -0700"
      },
      "message": "ceph: fix sync vs canceled write\n\nIf we cancel a write, trigger the safe completions to prevent a sync from\nblocking indefinitely in ceph_osdc_sync().\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cd634fb6eec72ef8e6dd677546b8d0ffdd2501eb",
      "tree": "7f0213063830d24d77a1ad0a6a9abfa4f83a5d7d",
      "parents": [
        "7662d8ff57d2b00ce8f7fe0b60a85efbb2c05652"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 09:29:18 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 11:52:11 2011 -0700"
      },
      "message": "libceph: subscribe to osdmap when cluster is full\n\nWhen the cluster is marked full, subscribe to subsequent map updates to\nensure we find out promptly when it is no longer full.  This will prevent\nus from spewing ENOSPC for (much) longer than necessary.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7662d8ff57d2b00ce8f7fe0b60a85efbb2c05652",
      "tree": "c87fd023ab2d4749ea32619034bcc813cba9504a",
      "parents": [
        "9db4b3e32778400555d5cc6fb61d4058902d37f7"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 03 12:52:05 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 11:52:09 2011 -0700"
      },
      "message": "libceph: handle new osdmap down/state change encoding\n\nOld incrementals encode a 0 value (nearly always) when an osd goes down.\nChange that to allow any state bit(s) to be flipped.  Special case 0 to\nmean flip the CEPH_OSD_UP bit to mimic the old behavior.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9d6fcb081a4770c3772c51c59c7251c22716d7bb",
      "tree": "8827d90aff9d7f463cb429aff1ecd22dde6a77a6",
      "parents": [
        "6b4a3b517a767c483d16a200730b2967e0e23b83"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 15:48:16 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:05 2011 -0700"
      },
      "message": "ceph: check return value for start_request in writepages\n\nSince we pass the nofail arg, we should never get an error; BUG if we do.\n(And fix the function to not return an error if __map_request fails.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a2a79609c044d3ddb540671d5029a41c90c57251",
      "tree": "641da035ab11341e8e7e08fee7bf2fde8d6e0214",
      "parents": [
        "04177882265bc5014300a631e7384f8fe6b6aa0f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 15:34:24 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:05 2011 -0700"
      },
      "message": "libceph: add missing breaks in addr_set_port\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "04177882265bc5014300a631e7384f8fe6b6aa0f",
      "tree": "a008861b5c815be69cd4a6a074369359afd27904",
      "parents": [
        "da39822c6565095a0151ccf9d6b95e2ae5612885"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 15:33:17 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:04 2011 -0700"
      },
      "message": "libceph: fix TAG_WAIT case\n\nIf we get a WAIT as a client something went wrong; error out.  And don\u0027t\nfall through to an unrelated case.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "31456665a02148353a83fec84d3182700e356588",
      "tree": "406b6eada9dfaa7fdf6daf121d0c0bab11ffbdf2",
      "parents": [
        "3540303f87115cbdae6ed2cab44ce6a7676d48d3"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 15:18:43 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:03 2011 -0700"
      },
      "message": "libceph: fix osdmap timestamp assignment\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "12a2f643b0e6e791ba61485430d0003eeb3e373c",
      "tree": "0dd6429055579c3e18a9b81e99202888f91e2852",
      "parents": [
        "2dab036b8c349d747f447ac98c8eb40c769727a8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 14:34:04 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:03 2011 -0700"
      },
      "message": "libceph: use snprintf for unknown addrs\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2dab036b8c349d747f447ac98c8eb40c769727a8",
      "tree": "ab502f1a05ae17f5f6cbbd7bdb2731a051d15580",
      "parents": [
        "ae598083015e22d1802617c18d3408971b1bddc0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 14:29:51 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:02 2011 -0700"
      },
      "message": "libceph: use snprintf for formatting object name\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e8f54ce169125a2e59330fac25ad3c9ac0ce22a5",
      "tree": "10184a12eb50d98245f6e218efb631ada132ca8e",
      "parents": [
        "1b36698577c1008dc1e63f0bf4b6f3d9deada94a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 14:18:42 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:02 2011 -0700"
      },
      "message": "libceph: fix uninitialized value when no get_authorizer method is set\n\nIf there is no get_authorizer method we set the out_kvec to a bogus\npointer.  The length is also zero in that case, so it doesn\u0027t much matter,\nbut it\u0027s better not to add the empty item in the first place.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0da5d70369e87f80adf794080cfff1ca15a34198",
      "tree": "b9d2fcaa52903e1c9b87ad7edfc24fb294320bce",
      "parents": [
        "3b663780347ce532b08be1c859b1df14f0eea4c8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:21:05 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:21:05 2011 -0700"
      },
      "message": "libceph: handle connection reopen race with callbacks\n\nIf a connection is closed and/or reopened (ceph_con_close, ceph_con_open)\nit can race with a callback.  con_work does various state checks for\nclosed or reopened sockets at the beginning, but drops con-\u003emutex before\nmaking callbacks.  We need to check for state bit changes after retaking\nthe lock to ensure we restart con_work and execute those CLOSED/OPENING\ntests or else we may end up operating under stale assumptions.\n\nIn Jim\u0027s case, this was causing \u0027bad tag\u0027 errors.\n\nThere are four cases where we re-take the con-\u003emutex inside con_work: catch\nthem all and return EAGAIN from try_{read,write} so that we can restart\ncon_work.\n\nReported-by: Jim Schutt \u003cjaschut@sandia.gov\u003e\nTested-by: Jim Schutt \u003cjaschut@sandia.gov\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4ad12621e442b7a072e81270808f617cb65c5672",
      "tree": "eecdd1d51f525b9b07c70f8fbcf08c9ede3b8f79",
      "parents": [
        "8c71897be2ddfd84969412635ca42fa9e137f7b6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 03 09:23:36 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 03 09:28:13 2011 -0700"
      },
      "message": "libceph: fix ceph_osdc_alloc_request error checks\n\nceph_osdc_alloc_request returns NULL on failure.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ca20892db7567c40e8ed0668f46cf0d085d7db6d",
      "tree": "80fe0a4cf9304b834e9faadbc08fb293db78cc84",
      "parents": [
        "3772d26d87efc2d91b2e4247e0001c89ed09a980"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry.cy.chang@gmail.com",
        "time": "Tue May 03 02:29:56 2011 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 03 09:28:11 2011 -0700"
      },
      "message": "libceph: fix ceph_msg_new error path\n\nIf memory allocation failed, calling ceph_msg_put() will cause GPF\nsince some of ceph_msg variables are not initialized first.\n\nFix Bug #970.\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e6d28318344535331d9473548b210dd267fe7b7e",
      "tree": "90a4c7dab77900ec531b73151503b4b2e00132d1",
      "parents": [
        "e27e6151b154ff6e5e8162efa291bc60196d29ea",
        "77f38e0eeac290827f41fd2215ab82546b8f73b8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 14 19:02:55 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 14 19:02:55 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  libceph: fix linger request requeueing\n"
    },
    {
      "commit": "42933bac11e811f02200c944d8562a15f8ec4ff0",
      "tree": "fcdd9afe56eb0e746565ddd1f92f22d36678b843",
      "parents": [
        "2b9accbee563f535046ff2cd382d0acaa92e130c",
        "25985edcedea6396277003854657b5f3cb31a628"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6\n\n* \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6:\n  Fix common misspellings\n"
    },
    {
      "commit": "77f38e0eeac290827f41fd2215ab82546b8f73b8",
      "tree": "f3fe7b7989188f39c7618848ac30754c41c6eee0",
      "parents": [
        "4b2a58abd1e17c0ee53c8dded879e015917cca67"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Apr 06 09:09:16 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Apr 06 09:09:16 2011 -0700"
      },
      "message": "libceph: fix linger request requeueing\n\nFix the request transition from linger -\u003e normal request.  The key is to\npreserve r_osd and requeue on the same OSD.  Reregister as a normal request,\nadd the request to the proper queues, then unregister the linger.  Fix the\nunregister helper to avoid clearing r_osd (and also simplify the parallel\ncheck in __unregister_request()).\n\nReported-by: Henry Chang \u003chenry.cy.chang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "4b2a58abd1e17c0ee53c8dded879e015917cca67",
      "tree": "585a02b8e3e36f7e6069d43000355e75aba097d3",
      "parents": [
        "e2c3d29b4295c3eec18294bc34f0c99a7b9ae413"
      ],
      "author": {
        "name": "Tommi Virtanen",
        "email": "tommi.virtanen@dreamhost.com",
        "time": "Mon Mar 28 14:59:38 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 29 12:11:24 2011 -0700"
      },
      "message": "libceph: Create a new key type \"ceph\".\n\nThis allows us to use existence of the key type as a feature test,\nfrom userspace.\n\nSigned-off-by: Tommi Virtanen \u003ctommi.virtanen@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e2c3d29b4295c3eec18294bc34f0c99a7b9ae413",
      "tree": "29fbffeeed7e2774a4f87883ae01798079d85ed2",
      "parents": [
        "8323c3aa74cd92465350294567142d12ffdcc963"
      ],
      "author": {
        "name": "Tommi Virtanen",
        "email": "tommi.virtanen@dreamhost.com",
        "time": "Fri Mar 25 16:40:48 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 29 12:11:19 2011 -0700"
      },
      "message": "libceph: Get secret from the kernel keys api when mounting with key\u003dNAME.\n\nSigned-off-by: Tommi Virtanen \u003ctommi.virtanen@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8323c3aa74cd92465350294567142d12ffdcc963",
      "tree": "052e7374393994eea8d534f98ee1bc7acea4c2d9",
      "parents": [
        "fbdb9190482fd83a3eb20cdeb0da454759f479d7"
      ],
      "author": {
        "name": "Tommi Virtanen",
        "email": "tommi.virtanen@dreamhost.com",
        "time": "Fri Mar 25 16:32:57 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 29 12:11:16 2011 -0700"
      },
      "message": "ceph: Move secret key parsing earlier.\n\nThis makes the base64 logic be contained in mount option parsing,\nand prepares us for replacing the homebew key management with the\nkernel key retention service.\n\nSigned-off-by: Tommi Virtanen \u003ctommi.virtanen@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "fbdb9190482fd83a3eb20cdeb0da454759f479d7",
      "tree": "bf83dcd6ea13c9a1feedb2a8f79744de93f9fecd",
      "parents": [
        "234af26ff123dfb2aa48772124721b1354c8e0a5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 29 12:11:06 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 29 12:11:06 2011 -0700"
      },
      "message": "libceph: fix null dereference when unregistering linger requests\n\nWe should only clear r_osd if we are neither registered as a linger or a\nregular request.  We may unregister as a linger while still registered as\na regular request (e.g., in reset_osd).  Incorrectly clearing r_osd there\nleads to a null pointer dereference in __send_request.\n\nAlso simplify the parallel check in __unregister_request() where we just\nremoved r_osd_item and know it\u0027s empty.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "234af26ff123dfb2aa48772124721b1354c8e0a5",
      "tree": "9dfaaeb25a5b1265269796ebc48cab93d64fc1f2",
      "parents": [
        "6b0ae4097c1ebad98c7b33f83b4ca7e93890ed12"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Tue Mar 29 06:25:59 2011 +0300"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 29 08:59:54 2011 -0700"
      },
      "message": "ceph: unlock on error in ceph_osdc_start_request()\n\nThere was a missing unlock on the error path if __map_request() failed.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6b0ae4097c1ebad98c7b33f83b4ca7e93890ed12",
      "tree": "27db559925e8e3f08522d83f4a6f3b7d32a9f2fa",
      "parents": [
        "ef550f6f4f6c9345a27ec85d98f4f7de1adce79c"
      ],
      "author": {
        "name": "Mariusz Kozlowski",
        "email": "mk@lab.zgora.pl",
        "time": "Sat Mar 26 19:29:34 2011 +0100"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 26 13:41:20 2011 -0700"
      },
      "message": "ceph: fix possible NULL pointer dereference\n\nThis patch fixes \u0027event_work\u0027 dereference before it is checked for NULL.\n\nSigned-off-by: Mariusz Kozlowski \u003cmk@lab.zgora.pl\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ef550f6f4f6c9345a27ec85d98f4f7de1adce79c",
      "tree": "dafd71f3e7fe46ed685b5ab3fd62c2bb7d3cb679",
      "parents": [
        "59c2be1e4d42c0d4949cecdeef3f37070a1fbc13"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 25 13:27:48 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 25 13:27:48 2011 -0700"
      },
      "message": "ceph: flush msgr_wq during mds_client shutdown\n\nThe release method for mds connections uses a backpointer to the\nmds_client, so we need to flush the workqueue of any pending work (and\nceph_connection references) prior to freeing the mds_client.  This fixes\nan oops easily triggered under UML by\n\n while true ; do mount ... ; umount ... ; done\n\nAlso fix an outdated comment: the flush in ceph_destroy_client only flushes\nOSD connections out.  This bug is basically an artifact of the ceph -\u003e\nceph+libceph conversion.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a40c4f10e3fb96030358e49abd010c1f08446fa3",
      "tree": "1aa1f6ca618cd021d944f7da7caeb5b182beaee4",
      "parents": [
        "55b00bae111030bd0dfcc898a920e54725aed1bf"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Mon Mar 21 15:07:16 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 22 11:33:55 2011 -0700"
      },
      "message": "libceph: add lingering request and watch/notify event framework\n\nLingering requests are requests that are sent to the OSD normally but\ntracked also after we get a successful request.  This keeps the OSD\nconnection open and resends the original request if the object moves to\nanother OSD.  The OSD can then send notification messages back to us\nif another client initiates a notify.\n\nThis framework will be used by RBD so that the client gets notification\nwhen a snapshot is created by another node or tool.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6f6c7006755b667f9f6c1f3b6f08cd65f75cc471",
      "tree": "233e96acdc3b627c97267992368ae1cb6cd66a5f",
      "parents": [
        "09adc80c611bb8902daa8ccfe34dbbc009d6befe"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jan 17 20:34:08 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 21 12:24:19 2011 -0700"
      },
      "message": "libceph: fix osd request queuing on osdmap updates\n\nIf we send a request to osd A, and the request\u0027s pg remaps to osd B and\nthen back to A in quick succession, we need to resend the request to A. The\nold code was only calling kick_requests after processing all incremental\nmaps in a message, so it was very possible to not resend a request that\nneeded to be resent.  This would make the osd eventually time out (at least\nwith the current default of osd timeouts enabled).\n\nThe correct approach is to scan requests on every map incremental.  This\npatch refactors the kick code in a few ways:\n - all requests are either on req_lru (in flight), req_unsent (ready to\n   send), or req_notarget (currently map to no up osd)\n - mapping always done by map_request (previous map_osds)\n - if the mapping changes, we requeue.  requests are resent only after all\n   map incrementals are processed.\n - some osd reset code is moved out of kick_requests into a separate\n   function\n - the \"kick this osd\" functionality is moved to kick_osd_requests, as it\n   is unrelated to scanning for request-\u003epg-\u003eosd mapping changes\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b09734b1f4abd86e046777f0f268215b4ef1b523",
      "tree": "991e7a2d61dc8c950dbbe6082cbb10dfc3786e75",
      "parents": [
        "521cb40b0c44418a4fd36dc633f575813d59a43d"
      ],
      "author": {
        "name": "Tommi Virtanen",
        "email": "tommi.virtanen@dreamhost.com",
        "time": "Wed Feb 02 11:39:32 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 15 09:14:02 2011 -0700"
      },
      "message": "libceph: Fix base64-decoding when input ends in newline.\n\nIt used to return -EINVAL because it thought the end was not aligned\nto 4 bytes.\n\nClean up superfluous src \u003c end test in if, the while itself guarantees\nthat.\n\nSigned-off-by: Tommi Virtanen \u003ctommi.virtanen@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e00de341fdb76c955703b4438100f9933c452b7f",
      "tree": "ab776a5e46f1cb5acaa6b26484763259040f470c",
      "parents": [
        "e76661d0a59e53e5cc4dccbe4b755d1dc8a968ec"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 04 12:25:05 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 04 12:25:05 2011 -0800"
      },
      "message": "libceph: fix msgr standby handling\n\nThe standby logic used to be pretty dependent on the work requeueing\nbehavior that changed when we switched to WQ_NON_REENTRANT.  It was also\nvery fragile.\n\nRestructure things so that:\n - We clear WRITE_PENDING when we set STANDBY.  This ensures we will\n   requeue work when we wake up later.\n - con_work backs off if STANDBY is set.  There is nothing to do if we are\n   in standby.\n - clear_standby() helper is called by both con_send() and con_keepalive(),\n   the two actions that can wake us up again.  Move the connect_seq++\n   logic here.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e76661d0a59e53e5cc4dccbe4b755d1dc8a968ec",
      "tree": "371ed08c5d00dbcdcf6f18e5cf36d798bcc51180",
      "parents": [
        "60bf8bf8815e6adea4c1d0423578c3b8000e2ec8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 03 10:10:15 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 04 12:24:31 2011 -0800"
      },
      "message": "libceph: fix msgr keepalive flag\n\nThere was some broken keepalive code using a dead variable.  Shift to using\nthe proper bit flag.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "60bf8bf8815e6adea4c1d0423578c3b8000e2ec8",
      "tree": "ce7140c32a3f177816f4029a88eb99e15bda6943",
      "parents": [
        "692d20f576fb26f62c83f80dbf3ea899998391b7"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 04 12:24:28 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 04 12:24:28 2011 -0800"
      },
      "message": "libceph: fix msgr backoff\n\nWith commit f363e45f we replaced a bunch of hacky workqueue mutual\nexclusion logic with the WQ_NON_REENTRANT flag.  One pieces of fallout is\nthat the exponential backoff breaks in certain cases:\n\n * con_work attempts to connect.\n * we get an immediate failure, and the socket state change handler queues\n   immediate work.\n * con_work calls con_fault, we decide to back off, but can\u0027t queue delayed\n   work.\n\nIn this case, we add a BACKOFF bit to make con_work reschedule delayed work\nnext time it runs (which should be immediately).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "692d20f576fb26f62c83f80dbf3ea899998391b7",
      "tree": "91b3d1984b2986ea99c2b208de6dc65f1a74c701",
      "parents": [
        "38815b780285a4957852c5c9dbe94991c0b26c56"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 03 12:14:53 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 03 13:47:40 2011 -0800"
      },
      "message": "libceph: retry after authorization failure\n\nIf we mark the connection CLOSED we will give up trying to reconnect to\nthis server instance.  That is appropriate for things like a protocol\nversion mismatch that won\u0027t change until the server is restarted, at which\npoint we\u0027ll get a new addr and reconnect.  An authorization failure like\nthis is probably due to the server not properly rotating it\u0027s secret keys,\nhowever, and should be treated as transient so that the normal backoff and\nretry behavior kicks in.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "38815b780285a4957852c5c9dbe94991c0b26c56",
      "tree": "032d882544ef73d2e99208de7a6e6340df3d31ea",
      "parents": [
        "16a8b70a5a757db513f036bbcc73309f6c507d81"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Mar 02 16:55:21 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 03 13:47:39 2011 -0800"
      },
      "message": "libceph: fix handling of short returns from get_user_pages\n\nget_user_pages() can return fewer pages than we ask for.  We were returning\na bogus pointer/error code in that case.  Instead, loop until we get all\nthe pages we want or get an error we can return to the caller.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8bd89ca22010847e85de37b77d9f19f16b1962ad",
      "tree": "0bcee2ae6a85443177a6d95ed960301e0f4c9d57",
      "parents": [
        "b08b69a110bd981909c248f89997dcdcdfd5a39c",
        "97d79b403ef03f729883246208ef5d8a2ebc4d68"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 21 15:01:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 21 15:01:38 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: keep reference to parent inode on ceph_dentry\n  ceph: queue cap_snaps once per realm\n  libceph: fix socket write error handling\n  libceph: fix socket read error handling\n"
    },
    {
      "commit": "42961d2333a1855c649fa3790e258ab4f0fa66a4",
      "tree": "7858f28e3a3c5ff1f0dc6f6165251c68b9709b4d",
      "parents": [
        "98bdb0aa007ff7e8e0061936d8d0e210faf2e655"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 25 08:19:34 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 25 08:19:34 2011 -0800"
      },
      "message": "libceph: fix socket write error handling\n\nPass errors from writing to the socket up the stack.  If we get -EAGAIN,\nreturn 0 from the helper to simplify the callers\u0027 checks.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "98bdb0aa007ff7e8e0061936d8d0e210faf2e655",
      "tree": "78c32ad3f4aee581e1f17bc477791fbc102b672c",
      "parents": [
        "d66bbd441c08fe00ed2add1cf70cb243ebc2b27e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 25 08:17:48 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 25 08:17:48 2011 -0800"
      },
      "message": "libceph: fix socket read error handling\n\nIf we get EAGAIN when trying to read from the socket, it is not an error.\nReturn 0 from the helper in this case to simplify the error handling cases\nin the caller (indirectly, try_read).\n\nFix try_read to pass any error to it\u0027s caller (con_work) instead of almost\nalways returning 0.  This let\u0027s us respond to things like socket\ndisconnects.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a1703154200c390ab03c10224c586e815d3e31e8",
      "tree": "df90865eed3cfdf7af8664b5453a90e09d17480a",
      "parents": [
        "67b5ad9a63caa2ce56ddd2b22b802dae00d72c13",
        "766fc43973b16f9becb6b7402b3e052dbb84adee"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:24 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  rbd: fix cleanup when trying to mount inexistent image\n  net/ceph: make ceph_msgr_wq non-reentrant\n  ceph: fsc-\u003e*_wq\u0027s aren\u0027t used in memory reclaim path\n  ceph: Always free allocated memory in osdmap_decode()\n  ceph: Makefile: Remove unnessary code\n  ceph: associate requests with opening sessions\n  ceph: drop redundant r_mds field\n  ceph: implement DIRLAYOUTHASH feature to get dir layout from MDS\n  ceph: add dir_layout to inode\n"
    },
    {
      "commit": "f363e45fd1184219b472ea549cb7e192e24ef4d2",
      "tree": "1332feb2f7a0a47ce482a0fd4ee9afb547a27090",
      "parents": [
        "01e6acc4ea4c284c44bfb3d46c76f4ae580c6435"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 03 14:49:46 2011 +0100"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:14 2011 -0800"
      },
      "message": "net/ceph: make ceph_msgr_wq non-reentrant\n\nceph messenger code does a rather complex dancing around multithread\nworkqueue to make sure the same work item isn\u0027t executed concurrently\non different CPUs.  This restriction can be provided by workqueue with\nWQ_NON_REENTRANT.\n\nMake ceph_msgr_wq non-reentrant workqueue with the default concurrency\nlevel and remove the QUEUED/BUSY logic.\n\n* This removes backoff handling in con_work() but it couldn\u0027t reliably\n  block execution of con_work() to begin with - queue_con() can be\n  called after the work started but before BUSY is set.  It seems that\n  it was an optimization for a rather cold path and can be safely\n  removed.\n\n* The number of concurrent work items is bound by the number of\n  connections and connetions are independent from each other.  With\n  the default concurrency level, different connections will be\n  executed independently.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: ceph-devel@vger.kernel.org\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b0aee3516d84c05240065a53f238ba7a718f56b9",
      "tree": "13877be944725cd055782289fe0260ac69cb87f8",
      "parents": [
        "582c86e69045f37da8be445c265f72a7a73b18c6"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Fri Dec 24 23:01:12 2010 +0100"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:14 2011 -0800"
      },
      "message": "ceph: Always free allocated memory in osdmap_decode()\n\nAlways free memory allocated to \u0027pi\u0027 in\nnet/ceph/osdmap.c::osdmap_decode().\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6c0f3af72cb1622a66962a1180c36ef8c41be8e2",
      "tree": "66e415bf31ea31a3e9360c0ce624fd20b6050c89",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 16 11:14:34 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:12 2011 -0800"
      },
      "message": "ceph: add dir_layout to inode\n\nAdd a ceph_dir_layout to the inode, and calculate dentry hash values based\non the parent directory\u0027s specified dir_hash function.  This is needed\nbecause the old default Linux dcache hash function is extremely week and\nleads to a poor distribution of files among dir fragments.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "17f7f4d9fcce8f1b75b5f735569309dee7665968",
      "tree": "14d7e49ca0053a0fcab3c33b5023bf3f90c5c08a",
      "parents": [
        "041110a439e21cd40709ead4ffbfa8034619ad77",
        "d7c1255a3a21e98bdc64df8ccf005a174d7e6289"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 26 22:37:05 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 26 22:37:05 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tnet/ipv4/fib_frontend.c\n"
    },
    {
      "commit": "9d5004fcf6e4e8caa9efbc25c9f85059b165329c",
      "tree": "7f1b53d5487ffabb7be6e1f5b5b964448651b5bc",
      "parents": [
        "453434cf3fdcd3954bb52460e37d4945a0913d3e",
        "361cf40519a491f68b28ad90225e4611c4bf8e12"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 21:32:20 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 21:32:20 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: handle partial result from get_user_pages\n  ceph: mark user pages dirty on direct-io reads\n  ceph: fix null pointer dereference in ceph_init_dentry for nfs reexport\n  ceph: fix direct-io on non-page-aligned buffers\n  ceph: fix msgr_init error path\n"
    },
    {
      "commit": "361cf40519a491f68b28ad90225e4611c4bf8e12",
      "tree": "ac0a77f2d6b36d4140bbaf3b8c14a37e8ae1ef11",
      "parents": [
        "b6aa5901c7a2bd90d0b6b9866300d2648b2568f3"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry_c_chang@tcloudcomputing.com",
        "time": "Fri Dec 17 09:55:59 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 17 09:55:59 2010 -0800"
      },
      "message": "ceph: handle partial result from get_user_pages\n\nThe get_user_pages() helper can return fewer than the requested pages.\nError out in that case, and clean up the partial result.\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b6aa5901c7a2bd90d0b6b9866300d2648b2568f3",
      "tree": "1161ed9dbacb7ace73c5d48fc9acd1db0d7815d5",
      "parents": [
        "92cf765237e2787eb168096305c448caf25ac7f8"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry_c_chang@tcloudcomputing.com",
        "time": "Wed Dec 15 20:45:41 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 17 09:54:40 2010 -0800"
      },
      "message": "ceph: mark user pages dirty on direct-io reads\n\nFor read operation, we have to set the argument _write_ of get_user_pages\nto 1 since we will write data to pages. Also, we need to SetPageDirty before\nreleasing these pages.\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d96c9043d1588f04c7f467167f653c07d83232d5",
      "tree": "d4b68d2ee371db0287902cae2a27f37749e8e1c9",
      "parents": [
        "1cd275f609ba46c8cae3ee77e499c54a0d13a983"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 13 20:30:28 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 13 20:30:28 2010 -0800"
      },
      "message": "ceph: fix msgr_init error path\n\ncreate_workqueue() returns NULL on failure.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "fe6c791570efe717946ea7b7dd50aec96b70d551",
      "tree": "1becb5e8aea7a9c9a7d78f987bd73b0a5d8ee434",
      "parents": [
        "f8bf5681cf15f77692c8ad8cb95d059ff7c622c9",
        "f19872575ff7819a3723154657a497d9bca66b33"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 08 13:15:38 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 08 13:47:38 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/wireless/ath/ath9k/ar9003_eeprom.c\n\tnet/llc/af_llc.c\n"
    },
    {
      "commit": "a01af8e4a4ee1135598f157051959982418c38f8",
      "tree": "76c78a7cbd02204afbe7404880dfbf312ebd51a5",
      "parents": [
        "a9735c81a43054a7e8cb8771c8e04c01fcacde10",
        "25888e30319f8896fc656fc68643e6a078263060"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 29 14:36:33 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 29 14:36:33 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (27 commits)\n  af_unix: limit recursion level\n  pch_gbe driver: The wrong of initializer entry\n  pch_gbe dreiver: chang author\n  ucc_geth: fix ucc halt problem in half duplex mode\n  inet: Fix __inet_inherit_port() to correctly increment bsockets and num_owners\n  ehea: Add some info messages and fix an issue\n  hso: fix disable_net\n  NET: wan/x25_asy, move lapb_unregister to x25_asy_close_tty\n  cxgb4vf: fix setting unicast/multicast addresses ...\n  net, ppp: Report correct error code if unit allocation failed\n  DECnet: don\u0027t leak uninitialized stack byte\n  au1000_eth: fix invalid address accessing the MAC enable register\n  dccp: fix error in updating the GAR\n  tcp: restrict net.ipv4.tcp_adv_win_scale (#20312)\n  netns: Don\u0027t leak others\u0027 openreq-s in proc\n  Net: ceph: Makefile: Remove unnessary code\n  vhost/net: fix rcu check usage\n  econet: fix CVE-2010-3848\n  econet: fix CVE-2010-3850\n  econet: disallow NULL remote addr for sendmsg(), fixes CVE-2010-3849\n  ...\n"
    },
    {
      "commit": "4cb6a614ba0e58cae8abdadbf73bcb4d37a3f599",
      "tree": "09198ec9e4bbb9c751246d38db87da970a7740aa",
      "parents": [
        "a27e13d370415add3487949c60810e36069a23a6"
      ],
      "author": {
        "name": "Tracey Dent",
        "email": "tdent48227@gmail.com",
        "time": "Sun Nov 21 15:23:50 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 27 17:39:29 2010 -0800"
      },
      "message": "Net: ceph: Makefile: Remove unnessary code\n\nRemove the if and else conditional because the code is in mainline and there\nis no need in it being there.\n\nSigned-off-by: Tracey Dent \u003ctdent48227@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3cbaa0f7a78d3b970b566629ee298c310780b919",
      "tree": "5b392ab5d59cfd87d7a6869ab6681a63d14e7d04",
      "parents": [
        "e94571653876922bbc247c8ef13c0b7839c3e503",
        "cf41a51db89850033efc11c18a5257de810b5417"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 24 08:22:34 2010 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 24 08:22:34 2010 +0900"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  of/phylib: Use device tree properties to initialize Marvell PHYs.\n  phylib: Add support for Marvell 88E1149R devices.\n  phylib: Use common page register definition for Marvell PHYs.\n  qlge: Fix incorrect usage of module parameters and netdev msg level\n  ipv6: fix missing in6_ifa_put in addrconf\n  SuperH IrDA: correct Baud rate error correction\n  atl1c: Fix hardware type check for enabling OTP CLK\n  net: allow GFP_HIGHMEM in __vmalloc()\n  bonding: change list contact to netdev@vger.kernel.org\n  e1000: fix screaming IRQ\n"
    },
    {
      "commit": "fa13bc3daa5954ce58f68fd34fb1611df6ea6e6f",
      "tree": "d3119cb5044ddcf2c3d68c9b69d37ff230c931e8",
      "parents": [
        "bac14e017830bd204b3a1bd55f42b0841c02e995"
      ],
      "author": {
        "name": "Tracey Dent",
        "email": "tdent48227@gmail.com",
        "time": "Sun Nov 21 15:03:15 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 22 08:16:10 2010 -0800"
      },
      "message": "Net: ceph: Makefile: remove deprecated kbuild goal definitions\n\nChanged Makefile to use \u003cmodules\u003e-y instead of \u003cmodules\u003e-objs\nbecause -objs is deprecated and not mentioned in\nDocumentation/kbuild/makefiles.txt.\n\nSigned-off-by: Tracey Dent \u003ctdent48227@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7a1c8e5ab120a5f352e78bbc1fa5bb64e6f23639",
      "tree": "9c9b81e173c59d4be5590be5101c405457acab83",
      "parents": [
        "a6c36ee677607b02d8ecc88e8a12785418b88107"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sat Nov 20 07:46:35 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 21 10:04:04 2010 -0800"
      },
      "message": "net: allow GFP_HIGHMEM in __vmalloc()\n\nWe forgot to use __GFP_HIGHMEM in several __vmalloc() calls.\n\nIn ceph, add the missing flag.\n\nIn fib_trie.c, xfrm_hash.c and request_sock.c, using vzalloc() is\ncleaner and allows using HIGHMEM pages as well.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c5c6b19d4b8f5431fca05f28ae9e141045022149",
      "tree": "0961d9aeee49f481134089ac5b93b7118cf3a34b",
      "parents": [
        "b7495fc2ff941db6a118a93ab8d61149e3f4cef8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:40:00 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:43:17 2010 -0800"
      },
      "message": "ceph: explicitly specify page alignment in network messages\n\nThe alignment used for reading data into or out of pages used to be taken\nfrom the data_off field in the message header.  This only worked as long\nas the page alignment matched the object offset, breaking direct io to\nnon-page aligned offsets.\n\nInstead, explicitly specify the page alignment next to the page vector\nin the ceph_msg struct, and use that instead of the message header (which\nprobably shouldn\u0027t be trusted).  The alloc_msg callback is responsible for\nfilling in this field properly when it sets up the page vector.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b7495fc2ff941db6a118a93ab8d61149e3f4cef8",
      "tree": "231c339d74760e2fa13e5e6f41c10bc28cea51b3",
      "parents": [
        "e98b6fed84d0f0155d7b398e0dfeac74c792f2d0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:43:12 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:43:12 2010 -0800"
      },
      "message": "ceph: make page alignment explicit in osd interface\n\nWe used to infer alignment of IOs within a page based on the file offset,\nwhich assumed they matched.  This broke with direct IO that was not aligned\nto pages (e.g., 512-byte aligned IO).  We were also trusting the alignment\nspecified in the OSD reply, which could have been adjusted by the server.\n\nExplicitly specify the page alignment when setting up OSD IO requests.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e98b6fed84d0f0155d7b398e0dfeac74c792f2d0",
      "tree": "0762cba398c39329dc5f056ddfccebf6768d2555",
      "parents": [
        "d8672d64b88cdb7aa8139fb6d218f40b8cbf60af"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:24:53 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:24:53 2010 -0800"
      },
      "message": "ceph: fix comment, remove extraneous args\n\nThe offset/length arguments aren\u0027t used.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "df9f86faf3ee610527ed02031fe7dd3c8b752e44",
      "tree": "361ecdca449c3f80d45ff33a291ad0ae544d7470",
      "parents": [
        "2f56f56ad991edd51ffd0baf1182245ee1277a04"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 01 15:49:23 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 01 15:49:23 2010 -0700"
      },
      "message": "ceph: fix small seq message skipping\n\nIf the client gets out of sync with the server message sequence number, we\nnormally skip low seq messages (ones we already received).  The skip code\nwas also incrementing the expected seq, such that all subsequent messages\nalso appeared old and got skipped, and an eventual timeout on the osd\nconnection.  This resulted in some lagging requests and console messages\nlike\n\n[233480.882885] ceph: skipping osd22 10.138.138.13:6804 seq 2016, expected 2017\n[233480.882919] ceph: skipping osd22 10.138.138.13:6804 seq 2017, expected 2018\n[233480.882963] ceph: skipping osd22 10.138.138.13:6804 seq 2018, expected 2019\n[233480.883488] ceph: skipping osd22 10.138.138.13:6804 seq 2019, expected 2020\n[233485.219558] ceph: skipping osd22 10.138.138.13:6804 seq 2020, expected 2021\n[233485.906595] ceph: skipping osd22 10.138.138.13:6804 seq 2021, expected 2022\n[233490.379536] ceph: skipping osd22 10.138.138.13:6804 seq 2022, expected 2023\n[233495.523260] ceph: skipping osd22 10.138.138.13:6804 seq 2023, expected 2024\n[233495.923194] ceph: skipping osd22 10.138.138.13:6804 seq 2024, expected 2025\n[233500.534614] ceph:  tid 6023602 timed out on osd22, will reset osd\n\nReported-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "240634e9b3a8ae2a9e2b7effeea3b9a5b30d68fb",
      "tree": "5e6e5f9e09644ee0b1587189b1c4aef2b914be9a",
      "parents": [
        "571dba52a34015a5a7aa5d480a86936878444a6f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 05 12:03:23 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:23 2010 -0700"
      },
      "message": "ceph: fix num_pages_free accounting in pagelist\n\nDecrement the free page counter when removing a page from the free_list.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "010e3b48fca57920557d2b80b83f8b2899fb5d1e",
      "tree": "df18bbb03fe34602412df792094dfbb6d6dca20e",
      "parents": [
        "6f453ed6c07dbed83b368269c9c0fb170866ee71"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Thu Sep 30 11:58:31 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:22 2010 -0700"
      },
      "message": "ceph: don\u0027t crash when passed bad mount options\n\nThis only happened when parse_extra_token was not passed\nto ceph_parse_option() (hence, only happened in rbd).\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "ac0b74d8a1ced8ea86147467daf06b15b130dd94",
      "tree": "a71aec65be7f71b42ae78907acd5b0f4aeafd3a9",
      "parents": [
        "18a38193efcaac1fb3c94ad8fa04bb117850a3c2"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregf@hq.newdream.net",
        "time": "Fri Sep 17 10:10:55 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:16 2010 -0700"
      },
      "message": "ceph: add pagelist_reserve, pagelist_truncate, pagelist_set_cursor\n\nThese facilitate preallocation of pages so that we can encode into the pagelist\nin an atomic context.\n\nSigned-off-by: Greg Farnum \u003cgregf@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "602adf400201636e95c3fed9f31fba54a3d7e844",
      "tree": "1b10046664d2c380a595ceaaafab2eed835dc937",
      "parents": [
        "3d14c5d2b6e15c21d8e5467dc62d33127c23a644"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Thu Aug 12 16:11:25 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:13 2010 -0700"
      },
      "message": "rbd: introduce rados block device (rbd), based on libceph\n\nThe rados block device (rbd), based on osdblk, creates a block device\nthat is backed by objects stored in the Ceph distributed object storage\ncluster.  Each device consists of a single metadata object and data\nstriped over many data objects.\n\nThe rbd driver supports read-only snapshots.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3d14c5d2b6e15c21d8e5467dc62d33127c23a644",
      "tree": "7d123c47847df9d1e865b6b78dc7da3fe739b704",
      "parents": [
        "ae1533b62b3369e6ae32338f4a77d64d0e88f676"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Apr 06 15:14:15 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:37:28 2010 -0700"
      },
      "message": "ceph: factor out libceph from Ceph file system\n\nThis factors out protocol and low-level storage parts of ceph into a\nseparate libceph module living in net/ceph and include/linux/ceph.  This\nis mostly a matter of moving files around.  However, a few key pieces\nof the interface change as well:\n\n - ceph_client becomes ceph_fs_client and ceph_client, where the latter\n   captures the mon and osd clients, and the fs_client gets the mds client\n   and file system specific pieces.\n - Mount option parsing and debugfs setup is correspondingly broken into\n   two pieces.\n - The mon client gets a generic handler callback for otherwise unknown\n   messages (mds map, in this case).\n - The basic supported/required feature bits can be expanded (and are by\n   ceph_fs_client).\n\nNo functional change, aside from some subtle error handling cases that got\ncleaned up in the refactoring process.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    }
  ]
}
