)]}'
{
  "log": [
    {
      "commit": "cd045cb42a266882ac24bc21a3a8d03683c72954",
      "tree": "2938560e8362804e829cc9feb23ef746d354140b",
      "parents": [
        "feb4cc9bb433bf1491ac5ffbba133f3258dacf06"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 04 11:05:05 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 07:29:05 2010 -0800"
      },
      "message": "ceph: fix rdcache_gen usage and invalidate\n\nWe used to use rdcache_gen to indicate whether we \"might\" have cached\npages.  Now we just look at the mapping to determine that.  However, some\nold behavior remains from that transition.\n\nFirst, rdcache_gen \u003d\u003d 0 no longer means we have no pages.  That can happen\nat any time (presumably when we carry FILE_CACHE).  We should not reset it\nto zero, and we should not check that it is zero.\n\nThat means that the only purpose for rdcache_revoking is to resolve races\nbetween new issues of FILE_CACHE and an async invalidate.  If they are\nequal, we should invalidate.  On success, we decrement rdcache_revoking,\nso that it is no longer equal to rdcache_gen.  Similarly, if we success\nin doing a sync invalidate, set revoking \u003d gen - 1.  (This is a small\noptimization to avoid doing unnecessary invalidate work and does not\naffect correctness.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "feb4cc9bb433bf1491ac5ffbba133f3258dacf06",
      "tree": "6339043d3fd867683459d9dc33f146b2f7e37d75",
      "parents": [
        "912a9b0319a8eb9e0834b19a25e01013ab2d6a9f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:39:00 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:39:23 2010 -0800"
      },
      "message": "ceph: re-request max_size if cap auth changes\n\nIf the auth cap migrates to another MDS, clear requested_max_size so that\nwe resend any pending max_size increase requests.  This fixes potential\nhangs on writes that extend a file and race with an cap migration between\nMDSs.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2f56f56ad991edd51ffd0baf1182245ee1277a04",
      "tree": "e4062e2bb1a92b487609cded256d5ede1a6eda90",
      "parents": [
        "efa4c1206eaff047c474af2136748a58eb8cc33b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 27 20:59:49 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 27 21:05:54 2010 -0700"
      },
      "message": "Revert \"ceph: update issue_seq on cap grant\"\n\nThis reverts commit d91f2438d881514e4a923fd786dbd94b764a9440.\n\nThe intent of issue_seq is to distinguish between mds-\u003eclient messages that\n(re)create the cap and those that do not, which means we should _only_ be\nupdating that value in the create paths.  By updating it in handle_cap_grant,\nwe reset it to zero, which then breaks release.\n\nThe larger question is what workload/problem made me think it should be\nupdated here...\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "18a38193efcaac1fb3c94ad8fa04bb117850a3c2",
      "tree": "096877dc2a039a991262d9f05fa0a2c2f684cfa8",
      "parents": [
        "93afd449aa3c0430ef409c13e1cb2b3f0458fc10"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Sep 17 10:46:44 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:15 2010 -0700"
      },
      "message": "ceph: use mapping-\u003enrpages to determine if mapping is empty\n\nThis is simpler and faster.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "93afd449aa3c0430ef409c13e1cb2b3f0458fc10",
      "tree": "dd9ab308735c2414260539e33605197a5f90f069",
      "parents": [
        "4c32f5dda5ffe23687a55da1538b7cc426710d1a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Sep 17 08:38:25 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:15 2010 -0700"
      },
      "message": "ceph: only invalidate on check_caps if we actually have pages\n\nThe i_rdcache_gen value only implies we MAY have cached pages; actually\ncheck the mapping to see if it\u0027s worth bothering with an invalidate.\n\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"
    },
    {
      "commit": "d91f2438d881514e4a923fd786dbd94b764a9440",
      "tree": "d0419a4c2132687c58e54a18938ab2359794700d",
      "parents": [
        "21b559de56695d36b3f0819b7e2454737db254f8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Sep 22 11:16:00 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Oct 07 08:01:50 2010 -0700"
      },
      "message": "ceph: update issue_seq on cap grant\n\nWe need to update the issue_seq on any grant operation, be it via an MDS\nreply or a separate grant message.  The update in the grant path was\nmissing.  This broke cap release for inodes in which the MDS sent an\nexplicit grant message that was not soon after followed by a successful\nMDS reply on the same inode.\n\nAlso fix the signedness on seq locals.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "21b559de56695d36b3f0819b7e2454737db254f8",
      "tree": "41559b37754818d637d11aec1b61a138d7a8efb5",
      "parents": [
        "bba0cd0e3d97472855840af817b766e3f632a501"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregf@hq.newdream.net",
        "time": "Wed Oct 06 15:46:30 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Oct 07 08:00:24 2010 -0700"
      },
      "message": "ceph: send cap release message early on failed revoke.\n\nIf an MDS tries to revoke caps that we don\u0027t have, we want to send\nreleases early since they probably contain the caps message the MDS\nis looking for.\n\nPreviously, we only sent the messages if we didn\u0027t have the inode either. But\nin a multi-mds system we can retain the inode after dropping all caps for\na single MDS.\n\nSigned-off-by: Greg Farnum \u003cgregf@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a43fb73101eaf6db0b33d22c152b338ab8b3edbb",
      "tree": "039276b81586a986f5b9662fc28b37cbf9271eb3",
      "parents": [
        "e835124c2be289515b918f2688ced4249e2de566"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Sep 17 09:54:08 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Sep 17 09:54:31 2010 -0700"
      },
      "message": "ceph: check mapping to determine if FILE_CACHE cap is used\n\nSee if the i_data mapping has any pages to determine if the FILE_CACHE\ncapability is currently in use, instead of assuming it is any time the\nrdcache_gen value is set (i.e., issued -\u003e used).\n\nThis allows the MDS RECALL_STATE process work for inodes that have cached\npages.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e835124c2be289515b918f2688ced4249e2de566",
      "tree": "1bf9bc86a2d1c3e9508dc304830a3bb42ad7de9b",
      "parents": [
        "ae00d4f37f4df56821331deb1028748110dd6dc9"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Sep 17 08:03:08 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Sep 17 08:03:08 2010 -0700"
      },
      "message": "ceph: only send one flushsnap per cap_snap per mds session\n\nSending multiple flushsnap messages is problematic because we ignore\nthe response if the tid doesn\u0027t match, and the server may only respond to\neach one once.  It\u0027s also a waste.\n\nSo, skip cap_snaps that are already on the flushing list, unless the caller\ntells us to resend (because we are reconnecting).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cfc0bf6640dfd0f43bf8bfec5a475284809baa4d",
      "tree": "63ee1563bc9b844c48684e57ad03bc3c023014a2",
      "parents": [
        "8bef9239ee1a42eb37d3f83bacf6a75f019c028d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Sep 14 15:50:59 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Sep 14 15:50:59 2010 -0700"
      },
      "message": "ceph: stop sending FLUSHSNAPs when we hit a dirty capsnap\n\nStop sending FLUSHSNAP messages when we hit a capsnap that has dirty_pages\nor is still writing.  We\u0027ll send the newer capsnaps only after the older\nones complete.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7d8cb26d7dcb911f110b7762bd5941e8f009d6c3",
      "tree": "2adf2f6303cc96ff14c951dc6966f68a0fc3cf25",
      "parents": [
        "07a27e226d1ed210d2d4218bd0642b40f5405c6a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Aug 24 08:44:16 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Aug 24 16:24:18 2010 -0700"
      },
      "message": "ceph: maintain i_head_snapc when any caps are dirty, not just for data\n\nWe used to use i_head_snapc to keep track of which snapc the current epoch\nof dirty data was dirtied under.  It is used by queue_cap_snap to set up\nthe cap_snap.  However, since we queue cap snaps for any dirty caps, not\njust for dirty file data, we need to keep a valid i_head_snapc anytime\nwe have dirty|flushing caps.  This fixes a NULL pointer deref in\nqueue_cap_snap when writing back dirty caps without data (e.g.,\nsnaptest-authwb.sh).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4a625be47243e0e07dedd0a1a6b94c66c2ab93ba",
      "tree": "4224efef4f83bcf629934d6da17d2c122b49ba5c",
      "parents": [
        "082afec92d1052305af1195f591602f4d0f44277"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 22 15:03:56 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 22 15:16:46 2010 -0700"
      },
      "message": "ceph: include dirty xattrs state in snapped caps\n\nWhen we snapshot dirty metadata that needs to be written back to the MDS,\ninclude dirty xattr metadata.  Make the capsnap reference the encoded\nxattr blob so that it will be written back in the FLUSHSNAP op.\n\nAlso fix the capsnap creation guard to include dirty auth or file bits,\nnot just tests specific to dirty file data or file writes in progress\n(this fixes auth metadata writeback).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "082afec92d1052305af1195f591602f4d0f44277",
      "tree": "7012fc71ac7be7bd88f2b0d92f27a3ba46c354de",
      "parents": [
        "f3c60c5918f26ea16761ddc8b12d8401a3db626b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 22 15:16:41 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 22 15:16:41 2010 -0700"
      },
      "message": "ceph: fix xattr cap writeback\n\nWe should include the xattr metadata blob in the cap update message any\ntime we are flushing dirty state, NOT just when we are also dropping the\ncap.  This fixes async xattr writeback.\n\nAlso, clean up the code slightly to avoid duplicating the bit test.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0eb6cd49f6e3ec523787d09cf08d3179be270db4",
      "tree": "7974963003e0b8ef26fdfb3a8120c6b4b588a01b",
      "parents": [
        "e9d177443134bc4ac1c1393af69e2a8704bcac09"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Aug 05 13:53:18 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Aug 05 13:53:40 2010 -0700"
      },
      "message": "ceph: only queue async writeback on cap revocation if there is dirty data\n\nNormally, if the Fb cap bit is being revoked, we queue an async writeback.\nIf there is no dirty data but we still hold the cap, this leaves the\nclient sitting around doing nothing until the cap timeouts expire and the\ncap is released on its own (as it would have been without the revocation).\n\nInstead, only queue writeback if the bit is actually used (i.e., we have\ndirty data).  If not, we can reply to the revocation immediately.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ce1fbc8dd657a4bbcf26c683c9d07c88db83fd86",
      "tree": "5ff998e85e35f6938cd316c2f9147c87a6a5faab",
      "parents": [
        "cbbfe499055f49c09210e04d9f88c2f483052384"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Aug 02 15:09:39 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Aug 02 15:48:49 2010 -0700"
      },
      "message": "ceph: support v2 client_caps encoding\n\nAdd support for v2 encoding of MClientCaps, which includes a flock blob.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b8cd07e78eaa49857e882f4199309f86aeb80bbd",
      "tree": "91999adddd919b9f47d69d71800ac33ac40077fd",
      "parents": [
        "effcb9ed43d16db27ae5837d93879e067e902151"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Jul 16 12:00:02 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:42 2010 -0700"
      },
      "message": "ceph: warn on missing snap realm\n\nWell, this Shouldn\u0027t Happen, so it would be helpful to know the caller when\nit does.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2bc50259fa0aa1868f8b2ba1d374406cb3c57f72",
      "tree": "0c8d510478866b4fdeafeb7953395226f0b8fb25",
      "parents": [
        "154f42c2c3c3b66a7a63dad5648e8a9860a32af9"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregf@hq.newdream.net",
        "time": "Wed Jun 30 12:44:34 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:41 2010 -0700"
      },
      "message": "ceph: add ceph_get_cap_for_mds function.\n\nSigned-off-by: Greg Farnum \u003cgregf@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "154f42c2c3c3b66a7a63dad5648e8a9860a32af9",
      "tree": "408beec027a62dcb67f212b07590039aea22866b",
      "parents": [
        "cb170a22153730eb9c82b6c85ead2001dba6c41a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jun 21 13:45:04 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:41 2010 -0700"
      },
      "message": "ceph: connect to export targets on cap export\n\nWhen we get a cap EXPORT message, make sure we are connected to all export\ntargets to ensure we can handle the matching IMPORT.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "37151668bad3fd058368752bee476f2ba3645596",
      "tree": "6eeae77dfa1c758ff03659b5677f474a72fbe7c0",
      "parents": [
        "0deb01c9998f8112c5e478e3fe3a930131abbc0a"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Thu Jun 17 16:16:12 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:40 2010 -0700"
      },
      "message": "ceph: do caps accounting per mds_client\n\nCaps related accounting is now being done per mds client instead\nof just being global. This prepares ground work for a later revision\nof the caps preallocated reservation list.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cd84db6e4051a9fb7941d49d31a0193a3371fd61",
      "tree": "beb657b2cc6b4184d97a85502b29a291616a83ab",
      "parents": [
        "ca81f3f6bd759f90a4b940cddda1f8bc61a7725a"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Jun 11 16:58:48 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:40 2010 -0700"
      },
      "message": "ceph: code cleanup\n\nMainly fixing minor issues reported by sparse.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ca81f3f6bd759f90a4b940cddda1f8bc61a7725a",
      "tree": "77b0f3a45d48303246f26e85b3945916f388805a",
      "parents": [
        "3b454c4945c756686e91d77eeefac80cb5d21baf"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jun 10 14:21:36 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:39 2010 -0700"
      },
      "message": "ceph: skip if no auth cap in flush_snaps\n\nIf we have a capsnap but no auth cap (e.g. because it is migrating to\nanother mds), bail out and do nothing for now.  Do NOT remove the capsnap\nfrom the flush list.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3b454c4945c756686e91d77eeefac80cb5d21baf",
      "tree": "bd55ec2db3c234cf2fb1eebcf1ace3e4b9e2bc35",
      "parents": [
        "38e8883ee31667d901feb9106f4863af35948c91"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jun 10 13:20:33 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:39 2010 -0700"
      },
      "message": "ceph: simplify caps revocation, fix for multimds\n\nThe caps revocation should either initiate writeback, invalidateion, or\ncall check_caps to ack or do the dirty work.  The primary question is\nwhether we can get away with only checking the auth cap or whether all\ncaps need to be checked.\n\nThe old code was doing...something else.  At the very least, revocations\nfrom non-auth MDSs could break by triggering the \"check auth cap only\"\ncase.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ee6b272b9c3447a78fa831e37b925aefd5587ec9",
      "tree": "fcb7c31794908d89760fef635ee2a52b1c338fa1",
      "parents": [
        "2962507ca204f886967e1a089d9bec206d427c22"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jun 10 12:55:52 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:39 2010 -0700"
      },
      "message": "ceph: drop unused argument\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2962507ca204f886967e1a089d9bec206d427c22",
      "tree": "e9cec16b13ad1d8e41c288658e62fb3bf1c66859",
      "parents": [
        "33caad324b88f75f42d836735d86feaafb3b40cf"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 27 10:40:43 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:39 2010 -0700"
      },
      "message": "ceph: perform lazy reads when file mode and caps permit\n\nIf the file mode is marked as \"lazy,\" perform cached/buffered reads when\nthe caps permit it.  Adjust the rdcache_gen and invalidation logic\naccordingly so that we manage our cache based on the FILE_CACHE -or-\nFILE_LAZYIO cap bits.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "33caad324b88f75f42d836735d86feaafb3b40cf",
      "tree": "57e50ce5bdc181ea296191784c4d57999c51207e",
      "parents": [
        "8c6e9229fc1989cf263a6fcd4ff406d7f473f966"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 26 14:31:27 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:39 2010 -0700"
      },
      "message": "ceph: perform lazy writes when file mode and caps permit\n\nIf we have marked a file as \"lazy\" (using the ceph ioctl), perform buffered\nwrites when the MDS caps allow it.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "03066f23452ff088ad8e2c8acdf4443043f35b51",
      "tree": "37f03df4e28de87339cec3b88e479073c8cee958",
      "parents": [
        "25848b3ec681c7018e3746dd850c1e8ed0a3dd6b"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Jul 27 13:11:08 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 27 13:11:17 2010 -0700"
      },
      "message": "ceph: use complete_all and wake_up_all\n\nThis fixes an issue triggered by running concurrent syncs. One of the syncs\nwould go through while the other would just hang indefinitely. In any case, we\nnever actually want to wake a single waiter, so the *_all functions should\nbe used.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1dadcce358a4c4078e1ea0bc4365c3f67b8e373e",
      "tree": "01e2bc98db97884a5c039a185612a878c199a1aa",
      "parents": [
        "8c696737aa61316a252c4514d09dd163f1464d33"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Jul 23 13:54:21 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Jul 23 13:54:21 2010 -0700"
      },
      "message": "ceph: fix dentry lease release\n\nWhen we embed a dentry lease release notification in a request, invalidate\nour lease so we don\u0027t think we still have it.  Otherwise we can get all\nsorts of incorrect client behavior when multiple clients are interacting\nwith the same part of the namespace.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "443b3760a06860187f135c1ecd56c2c7d4ad1022",
      "tree": "d6a3ec8b77f133066bd7795acca33f461eee821a",
      "parents": [
        "ec97f88ba6d4256927fde516033ee76d5d85b54a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 29 09:28:39 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 29 09:31:56 2010 -0700"
      },
      "message": "ceph: fix caps usage accounting for import (non-reserved) case\n\nWe need to increase the total and used counters when allocating a new cap\nin the non-reserved (cap import) case.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ec97f88ba6d4256927fde516033ee76d5d85b54a",
      "tree": "0df9cb10364afdb9092a089ba0da4a15f3c25a06",
      "parents": [
        "a1a31e734241aefcb2b30fb0cc0376977b6d2ba8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jun 24 15:12:37 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 29 09:31:55 2010 -0700"
      },
      "message": "ceph: only release clean, unused caps with mds requests\n\nWe can drop caps with an mds request.  Ensure we only drop unused AND\nclean caps, since the MDS doesn\u0027t support cap writeback in that context,\nnor do we track it.  If caps are dirty, and the MDS needs them back, we\nit will revoke and we will flush in the normal fashion.\n\nThis fixes a possibly loss of metadata.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2b2300d62ea413bec631d5b880effa2cc5363acb",
      "tree": "50707a1b8a547d781dc23fd830c23d580671c8a8",
      "parents": [
        "3d7ded4d81d807c2f75f310a8d74a5d72be13a1b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jun 09 16:52:04 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jun 10 13:30:25 2010 -0700"
      },
      "message": "ceph: try to send partial cap release on cap message on missing inode\n\nIf we have enough memory to allocate a new cap release message, do so, so\nthat we can send a partial release message immediately.  This keeps us from\nmaking the MDS wait when the cap release it needs is in a partially full\nrelease message.\n\nIf we fail because of ENOMEM, oh well, they\u0027ll just have to wait a bit\nlonger.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3d7ded4d81d807c2f75f310a8d74a5d72be13a1b",
      "tree": "c633b938f72dcd39c84f2430c7d4025331ab4369",
      "parents": [
        "9dbd412f56c453f15014396c6024b895c1485ccb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jun 09 16:47:10 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jun 10 13:30:07 2010 -0700"
      },
      "message": "ceph: release cap on import if we don\u0027t have the inode\n\nIf we get an IMPORT that give us a cap, but we don\u0027t have the inode, queue\na release (and try to send it immediately) so that the MDS doesn\u0027t get\nstuck waiting for us.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9dbd412f56c453f15014396c6024b895c1485ccb",
      "tree": "633dc3b97a73f3cc131d6640a9d58806bbb359ce",
      "parents": [
        "00d5643e7c5ed4ae1bb0b385fe2f41bb951cc3cd"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jun 10 13:21:20 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jun 10 13:29:59 2010 -0700"
      },
      "message": "ceph: fix misleading/incorrect debug message\n\nNothing is released here: the caps message is simply ignored in this case.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "34d23762d988b7dcb08390ac72a353df3d60193c",
      "tree": "3a49d039527548697165da2b8789f3588b95ffed",
      "parents": [
        "23804d91f112df09b832cd091b71af4dc2831aa8"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Apr 06 14:33:58 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:42 2010 -0700"
      },
      "message": "ceph: all allocation functions should get gfp_mask\n\nThis is essential, as for the rados block device we\u0027ll need\nto run in different contexts that would need flags that\nare other than GFP_NOFS.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a5ee751c15016d0deee0d651e42a3b163ea73ade",
      "tree": "eaf993df4c0c8d020ca16a778b34b24f8cb7f571",
      "parents": [
        "0f8605f2bde2c69737709765dfc574558ea35d4e"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Fri May 07 10:27:14 2010 +0200"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:32 2010 -0700"
      },
      "message": "ceph: cleanup: remove unused assignement\n\nWe don\u0027t ever use \"dirty\" so we can remove it.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "bb257664f748bcfc80715f85f70f0f560caec3b4",
      "tree": "0f03c628328082e660c6a60f6094cde478dadec9",
      "parents": [
        "a79832f26be370ee26ea81eecdfd42d10e49d66a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 01 16:07:23 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:19 2010 -0700"
      },
      "message": "ceph: simplify ceph_msg_new\n\nWe only need to pass in front_len.  Callers can attach any other payload\npieces (middle, data) as they see fit.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a79832f26be370ee26ea81eecdfd42d10e49d66a",
      "tree": "59d55f3c928558505a420830eddfb01b3186d467",
      "parents": [
        "d52f847a841bfeba0ea87a7842732d388a1ca2e8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 01 16:06:19 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:18 2010 -0700"
      },
      "message": "ceph: make ceph_msg_new return NULL on failure; clean up, fix callers\n\nReturning ERR_PTR(-ENOMEM) is useless extra work.  Return NULL on failure\ninstead, and fix up the callers (about half of which were wrong anyway).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "640ef79d27c81b7a3265a344ec1d25644dd463ad",
      "tree": "f5632a0b2a2f6cef7c6f3a513bbb6020d6ac694a",
      "parents": [
        "2d06eeb877581a7f53209af1582c5f66c799f0bd"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Mar 26 17:40:33 2010 +0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:17 2010 -0700"
      },
      "message": "ceph: use ceph_sb_to_client instead of ceph_client\n\nceph_sb_to_client and ceph_client are really identical, we need to dump\none; while function ceph_client is confusing with \"struct ceph_client\",\nceph_sb_to_client\u0027s definition is more clear; so we\u0027d better switch all\ncall to ceph_sb_to_client.\n\n  -static inline struct ceph_client *ceph_client(struct super_block *sb)\n  -{\n  -\treturn sb-\u003es_fs_info;\n  -}\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "f818a73674c5d197f66b636a46d7d578d7258129",
      "tree": "90c485b5ca0a211b84ad8feddfce4f301de3d5c9",
      "parents": [
        "45c6ceb547ad2d98215351974a4686bf8cb13e14"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 20:56:31 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 20:56:31 2010 -0700"
      },
      "message": "ceph: fix cap removal races\n\nThe iterate_session_caps helper traverses the session caps list and tries\nto grab an inode reference.  However, the __ceph_remove_cap was clearing\nthe inode backpointer _before_ removing itself from the session list,\ncausing a null pointer dereference.\n\nClear cap-\u003eci under protection of s_cap_lock to avoid the race, and to\ntightly couple the list and backpointer state.  Use a local flag to\nindicate whether we are releasing the cap, as cap-\u003esession may be modified\nby a racing thread in iterate_session_caps.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0b0c06d1476290cea248923c0ee7be9fd61cacea",
      "tree": "557eacf9666cf0c2f989c2ff1955805d5557d07d",
      "parents": [
        "c8f16584ac85444d51d8753c5df502350cfc7bb7"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 20 10:27:13 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:23 2010 -0700"
      },
      "message": "ceph: fix leaked spinlock during mds reconnect\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "96e35b40c0d6206f56370f937f6f4722739eb273",
      "tree": "2c387b6e3f628484a1f4bdc964e529f89d5f5821",
      "parents": [
        "f5c07a2d8acfc98e00d3be6298f979e5b3175953",
        "a6a5349d17f2a5c37079826f1a1474c3d08c6b53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 14 18:45:31 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 14 18:45:31 2010 -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  ceph: use separate class for ceph sockets\u0027 sk_lock\n  ceph: reserve one more caps space when doing readdir\n  ceph: queue_cap_snap should always queue dirty context\n  ceph: fix dentry reference leak in dcache readdir\n  ceph: decode v5 of osdmap (pool names) [protocol change]\n  ceph: fix ack counter reset on connection reset\n  ceph: fix leaked inode ref due to snap metadata writeback race\n  ceph: fix snap context reference leaks\n  ceph: allow writeback of snapped pages older than \u0027oldest\u0027 snapc\n  ceph: fix dentry rehashing on virtual .snap dir\n"
    },
    {
      "commit": "819ccbfa448403992ceafc05d6d7097aaa74d4c3",
      "tree": "e6b3592fd85fbb35a63d6d10c84a8d01913eddab",
      "parents": [
        "6298a33757ba7361bb8f506c106daad77e5ac8cf"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 01 09:33:46 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 01 09:34:38 2010 -0700"
      },
      "message": "ceph: fix leaked inode ref due to snap metadata writeback race\n\nWe create a ceph_cap_snap if there is dirty cap metadata (for writeback to\nmds) OR dirty pages (for writeback to osd).  It is thus possible that the\nmetadata has been written back to the MDS but the OSD data has not when\nthe cap_snap is created.  This results in a cap_snap with dirty(caps) \u003d\u003d 0.\nThe problem is that cap writeback to the MDS isn\u0027t necessary, and a\nFLUSHSNAP cap op gets no ack from the MDS.  This leaves the cap_snap\nattached to the inode along with its inode reference.\n\nFix the problem by dropping the cap_snap if it becomes \u0027complete\u0027 (all\npages written out) and dirty(caps) \u003d\u003d 0 in ceph_put_wrbuffer_cap_refs().\n\nAlso, BUG() in __ceph_flush_snaps() if we encounter a cap_snap with\ndirty(caps) \u003d\u003d 0.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "916623da10e270c7e9e802a7ddfe1ec8f890982d",
      "tree": "892f703ce8a4200ab27b0c1db14f4c2057d7b2f3",
      "parents": [
        "15637c8b1251c38694c32214eba69b72a30e9d9b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 15:01:07 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:55 2010 -0700"
      },
      "message": "ceph: only release unused caps with mds requests\n\nWe were releasing used caps (e.g. FILE_CACHE) from encode_inode_release\nwith MDS requests (e.g. setattr).  We don\u0027t carry refs on most caps, so\nthis code worked most of the time, but for setattr (utimes) we try to\ndrop Fscr.\n\nThis causes cap state to get slightly out of sync with reality, and may\nresult in subsequent mds revoke messages getting ignored.\n\nFix by only releasing unused caps.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "15637c8b1251c38694c32214eba69b72a30e9d9b",
      "tree": "a410e4db868f75dbace870930b9b032b877a552d",
      "parents": [
        "cdc2ce056a3620139056b60ad7f6d355ad13f445"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 13:42:00 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:54 2010 -0700"
      },
      "message": "ceph: clean up handle_cap_grant, handle_caps wrt session mutex\n\nDrop session mutex unconditionally in handle_cap_grant, and do the\ncheck_caps from the handle_cap_grant helper.  This avoids using a magic\nreturn value.\n\nAlso avoid using a flag variable in the IMPORT case and call\ncheck_caps at the appropriate point.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cdc2ce056a3620139056b60ad7f6d355ad13f445",
      "tree": "1aed7f66612d13beeeec6e2c191f19eff44d1054",
      "parents": [
        "4ea0043a29c82ca52ca54728d837314563bec574"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 13:39:28 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:53 2010 -0700"
      },
      "message": "ceph: fix session locking in handle_caps, ceph_check_caps\n\nPassing a session pointer to ceph_check_caps() used to mean it would leave\nthe session mutex locked.  That wasn\u0027t always possible if it wasn\u0027t passed\nCHECK_CAPS_AUTHONLY.   If could unlock the passed session and lock a\ndifferet session mutex, which was clearly wrong, and also emitted a\nwarning when it a racing CPU retook it and we did an unlock from the wrong\ncontext.\n\nThis was only a problem when there was more than one MDS.\n\nFirst, make ceph_check_caps unconditionally drop the session mutex, so that\nit is free to lock other sessions as needed.  Then adjust the one caller\nthat passes in a session (handle_cap_grant) accordingly.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4ea0043a29c82ca52ca54728d837314563bec574",
      "tree": "df7e9859f54d0ae1b20d07647886a313cd9da9fb",
      "parents": [
        "12eadc190038e68b5884a4aa313b6ab89ba60f5e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 10:36:40 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:52 2010 -0700"
      },
      "message": "ceph: drop unnecessary WARN_ON in caps migration\n\nIf we don\u0027t have the exported cap it\u0027s because we already released it. No\nneed to WARN.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "978097c907b58a2d085bbf7632bee1a5a7e6f6ba",
      "tree": "1d52869c500f7b6d5c0566011c070e0924dbe57f",
      "parents": [
        "220bf991b0366cc50a94feede3d7341fa5710ee4"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 08 15:27:53 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 21:33:06 2010 -0700"
      },
      "message": "ceph: implemented caps should always be superset of issued caps\n\nAdded assertion, and cleared one case where the implemented caps were\nnot following the issued caps.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "f1a3d57213fe264b4cf584e78bac36aaf9998729",
      "tree": "9adf9ba40793ecf83f7a1fd71b4bd73e726b6dac",
      "parents": [
        "422d2cb8f9afadba1ecd3614f658b6daaaa480fb"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Mon Jan 18 11:53:08 2010 +1100"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 05 14:49:41 2010 -0800"
      },
      "message": "ceph: update for write_inode API change\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e9964c102312967a4bc1fd501cb628c4a3b19034",
      "tree": "7bccb0c4e29d94baaf8c30e008ec5aebdccf9c57",
      "parents": [
        "7af8f1e4aa86720840d3318e4dc225c3c7e5a6d0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:16:56 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:28:02 2010 -0800"
      },
      "message": "ceph: fix flush_dirty_caps race with caps migration\n\nThe flush_dirty_caps() used to loop over the first entry of the cap_dirty\ndirty list on the assumption that after calling ceph_check_caps() it would\nbe removed from the list.  This isn\u0027t true for caps that are being\nmigrated between MDSs, where we\u0027ve received the EXPORT but not the IMPORT.\n\nInstead, do a safe list iteration, and pin the next inode on the list via\nthe CEPH_I_NOFLUSH flag.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7af8f1e4aa86720840d3318e4dc225c3c7e5a6d0",
      "tree": "56129109512f2a01f4589a269f1494b6a5cb58d8",
      "parents": [
        "e53a8fd773065628b24605b289a9a40ee4a35d83"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:17:34 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:28:01 2010 -0800"
      },
      "message": "ceph: include migrating caps in issued set\n\nWe should include caps that are mid-migration (we\u0027ve received the EXPORT,\nbut not the IMPORT) in the issued caps set.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "195d3ce2cc9a8ec69827f6369c41b269345b9988",
      "tree": "9ef91489d379ac612895b6ab3118535969aba152",
      "parents": [
        "6f863e712d4114e8ae2f02de64ebeac0546ebaa0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 09:57:54 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:28:00 2010 -0800"
      },
      "message": "ceph: return EBADF if waiting for caps on closed file\n\nVerify the file is actually open for the given caps when we are\nwaiting for caps.  This ensures we will wake up and return EBADF\nif another thread closes the file out from under us.\n\nNote that EBADF is also the correct return code from write(2)\nwhen called on a file handle opened for reading (although the\nvfs should catch that).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "70edb55bdfa8922c8ad40bc5a67abb6d9fee8d47",
      "tree": "4e2f3445a71bc016adba9095a8885048b2d3bcfe",
      "parents": [
        "c16e786927b977cb880873214bbd815e8d5ec4ba"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 13:20:50 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:20:05 2010 -0800"
      },
      "message": "ceph: fix snaptrace decoding on cap migration between mds\n\nThis was simply broken.  Apparently at some point we thought about putting\nthe snaptrace in the middle section, but didn\u0027t.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2600d2dd5085ab6fb09540226138a60055abf335",
      "tree": "5aeb8a110eb7a41dab2d16b3a5ba8d67ad068a82",
      "parents": [
        "a6369741c48815fedfce7072b7a9cd98b5bafd56"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 22 15:12:16 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 23 14:26:35 2010 -0800"
      },
      "message": "ceph: drop messages on unregistered mds sessions; cleanup\n\nVerify the mds session is currently registered before handling\nincoming messages.  Clean up message handlers to pull mds out\nof session-\u003es_mds instead of less trustworthy src field.\n\nClean up con_{get,put} debug output.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a6369741c48815fedfce7072b7a9cd98b5bafd56",
      "tree": "dd9ce7da7a6c5556d6c7731423dff0824aad9545",
      "parents": [
        "4ce1e9adabbad8f2c45ceeeb6de56cc368484297"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 22 13:59:00 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 23 14:26:35 2010 -0800"
      },
      "message": "ceph: fix comments, locking in destroy_inode\n\nThe destroy_inode path needs no inode locks since there are no\ninode references.  Update __ceph_remove_cap comment to reflect\nthat it is called without cap-\u003esession-\u003es_mutex in this case.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "bcd2cbd10ce31c950a40c08d7f601f8ff23537b8",
      "tree": "1f419714feceb6072828cc8977610cfcadec1705",
      "parents": [
        "c9af9fb68e01eb2c2165e1bc45cfeeed510c64e6"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Feb 19 00:12:21 2010 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 19 14:41:10 2010 -0800"
      },
      "message": "ceph: cleanup redundant code in handle_cap_grant\n\nThere is no state in local vars that requires us to loop after temporarily\ndropping i_lock.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5ecad6fd7bfd30b3eaea51345f546b81de7a6473",
      "tree": "98447fd009cc03e5125ffc51b4caac07123e0f70",
      "parents": [
        "2c27c9a57c93a0757b9b4b0e7dc1abeaf1db1ce2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:43:37 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 19 14:33:18 2010 -0800"
      },
      "message": "ceph: fix check for invalidate_mapping_pages success\n\nWe need to know whether there was any page left behind, and not the\nreturn value (the total number of pages invalidated).  Look at the mapping\nto see if we were successful or not.\n\nMove it all into a helper to simplify the two callers.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7c1332b8cb5b27656cf6ab1f5fe808a8eb8bb2c0",
      "tree": "f990ab6b339a88896f41a6b3541d0676684c935d",
      "parents": [
        "85ccce43a3fc15a40ded6ae1603e3f68a17f4d24"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 11:39:45 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:02:47 2010 -0800"
      },
      "message": "ceph: fix iterate_caps removal race\n\nWe need to be able to iterate over all caps on a session with a\npossibly slow callback on each cap.  To allow this, we used to\nprevent cap reordering while we were iterating.  However, we were\nnot safe from races with removal: removing the \u0027next\u0027 cap would\nmake the next pointer from list_for_each_entry_safe be invalid,\nand cause a lock up or similar badness.\n\nInstead, we keep an iterator pointer in the session pointing to\nthe current cap.  As before, we avoid reordering.  For removal,\nif the cap isn\u0027t the current cap we are iterating over, we are\nfine.  If it is, we clear cap-\u003eci (to mark the cap as pending\nremoval) but leave it in the session list.  In iterate_caps, we\ncan safely finish removal and get the next cap pointer.\n\nWhile we\u0027re at it, clean up put_cap to not take a cap reservation\ncontext, as it was never used.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "85ccce43a3fc15a40ded6ae1603e3f68a17f4d24",
      "tree": "1e15fb7dc7df43da4a3feacff671c8169e96291d",
      "parents": [
        "5ce6e9dbe6805ab8ee67e21936d17f431adc63c6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:02:43 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:02:43 2010 -0800"
      },
      "message": "ceph: clean up readdir caps reservation\n\nUse a global counter for the minimum number of allocated caps instead of\nhard coding a check against readdir_max.  This takes into account multiple\nclient instances, and avoids examining the superblock mount options when a\ncap is dropped.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8031049147c58d9d8b6226c3ac31a9d72d053e25",
      "tree": "d89aec0fc9dcae6ea20fe0665b7700911c2dbf61",
      "parents": [
        "0840d8af3e6e40bcd5f2366698eb2755f88acfea"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 09 16:43:11 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:55 2010 -0800"
      },
      "message": "ceph: remove bogus invalidate_mapping_pages\n\nWe were invalidating mapping pages when dropping FILE_CACHE in\n__send_cap().  But ceph_check_caps attempts to invalidate already, and\nalso checks for success, so we should never get to this point.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0840d8af3e6e40bcd5f2366698eb2755f88acfea",
      "tree": "9eed5acb6d23bdefcc4e4a832347199cd3b181d2",
      "parents": [
        "3c6f6b79a64db7f1c7abf09d693db3b0066784fb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 09 15:44:16 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:54 2010 -0800"
      },
      "message": "ceph: invalidate pages even if truncate is pending\n\nThere is no reason not to invalidate pages when a truncate is pending.\nBoth throw out page cache pages.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3c6f6b79a64db7f1c7abf09d693db3b0066784fb",
      "tree": "e17b4cd848212b0556180331280044dd1526b742",
      "parents": [
        "6a026589ba333185c466c906376fe022a27a53f9"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 09 15:24:44 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:54 2010 -0800"
      },
      "message": "ceph: cleanup async writeback, truncation, invalidate helpers\n\nGrab inode ref in helper.  Make work functions static, with consistent\nnaming.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "68c283236a1e0772e1a469dd2ffc17afc300b07b",
      "tree": "6bdca5168713dab721f5458487e3c9d218d24726",
      "parents": [
        "cbd03635913a86afb7c2cfc0058932956b05b51e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 09 13:41:47 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:52 2010 -0800"
      },
      "message": "ceph: do not retain caps that are being revoked\n\nNever retain caps in __send_cap() that are being revoked.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cbd03635913a86afb7c2cfc0058932956b05b51e",
      "tree": "5938439c41509d72af379fcfc770e37fb5527847",
      "parents": [
        "29065a513aa4c7e4b46b77cbcd25f814a4ca0bfe"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 09 13:41:18 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:52 2010 -0800"
      },
      "message": "ceph: cap revocation fixes\n\nTry to invalidate pages in ceph_check_caps() if FILE_CACHE is being\nrevoked.  If we fail, queue an immediate async invalidate if FILE_CACHE\nis being revoked.  (If it\u0027s not being revoked, we just queue the caps\nfor later evaluation later, as per the old behavior.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6df058c025ce343052c5516b1d8a9a7e73cddd64",
      "tree": "58230bd258f71c2c3adf56a55d11ed39f404d12a",
      "parents": [
        "0cf90ab5b075821940873e73cdbfeb8edc3dabe8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 22 11:24:33 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 23 08:17:22 2009 -0800"
      },
      "message": "ceph: include transaction id in ceph_msg_header (protocol change)\n\nMany (most?) message types include a transaction id.  By including it in\nthe fixed size header, we always have it available even when we are unable\nto allocate memory for the (larger, variable sized) message body.  This\nwill allow us to error out the appropriate request instead of (silently)\ndropping the reply.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5dacf09121ffb2e5fc7d15b78cae0b77042a1935",
      "tree": "8a4ec2fde459f93936a91644d024673d37347408",
      "parents": [
        "7067f797b8409f1e10ec95ac2c1e17a200173d13"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 21 20:40:34 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 23 08:17:14 2009 -0800"
      },
      "message": "ceph: do not touch_caps while iterating over caps list\n\nAvoid confusing iterate_session_caps(), flag the session while we are\niterating so that __touch_cap does not rearrange items on the list.\n\nAll other modifiers of session-\u003es_caps do so under the protection of\ns_mutex.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9ec7cab14e6de732d4e7c355fe67c5810c32c758",
      "tree": "2f512034bc7db2b4ca8fe47ceea06ac99a8cab40",
      "parents": [
        "93c20d98c29ccefa039c3843ccc37122caaf3d31"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 14 15:13:47 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 21 16:39:52 2009 -0800"
      },
      "message": "ceph: hex dump corrupt server data to KERN_DEBUG\n\nAlso, print fsid using standard format, NOT hex dump.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "50b885b96c903e420a1eac54dd27626244704a06",
      "tree": "35038a32cbb963c784685e8b73d6ecd1a7cde3c9",
      "parents": [
        "34b43a56b9b103a7a820032177131532d9dbdbe8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 01 14:12:07 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 03 14:59:44 2009 -0800"
      },
      "message": "ceph: whitespace cleanup\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "11ea8eda064aa4dc6e44a6dade1891b69ebd5255",
      "tree": "e7def548d1d80e38710cc7d1fe30d4b2cd37d56f",
      "parents": [
        "039934b895c89c2bb40aa5132efe00e60b70efca"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 12 15:07:24 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 12 15:57:05 2009 -0800"
      },
      "message": "ceph: fix page invalidation deadlock\n\nWe occasionally want to make a best-effort attempt to invalidate cache\npages without fear of blocking.  If this fails, we fall back to an async\ninvalidate in another thread.\n\nUse invalidate_mapping_pages instead of invalidate_inode_page2, as that\nwill skip locked pages, and not deadlock.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cdac830313fa6bf2831693af80fefe4aaac11b7d",
      "tree": "cf5004237a084779ca84130c3303e42e9ea9fa35",
      "parents": [
        "eed0ef2caf928327332da54d23579debe629d5bc"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 10 16:02:23 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 10 16:03:53 2009 -0800"
      },
      "message": "ceph: remove recon_gen logic\n\nWe don\u0027t get an explicit affirmative confirmation that our caps reconnect,\nnor do we necessarily want to pay that cost.  So, take all this code out\nfor now.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "685f9a5d14194fc35db73e5e7370740ccc14b64a",
      "tree": "4c34ac2348149d91ad5e08cd105207810f0afdc9",
      "parents": [
        "fb690390e305ea51e1883b105c7d3c52d7100ba5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 09 12:05:48 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 09 12:06:07 2009 -0800"
      },
      "message": "ceph: do not confuse stale and dead (unreconnected) caps\n\nWe were using the cap_gen to track both stale caps (caps that timed out\ndue to temporarily losing touch with the mds) and dead caps that did not\nreconnect after an MDS failure.  Introduce a recon_gen counter to track\nreconnections to restarted MDSs and kill dead caps based on that instead.\n\nRename gen to cap_gen while we\u0027re at it to make it more clear which is\nwhich.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6b8051855d983db8480ff1ea1b02ef2b49203c22",
      "tree": "afb72be534ddd4c474a2ec9b7cf2ea5ab86799bc",
      "parents": [
        "e53c2fe075feda1fd4f009956ac026dc24c3a199"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 27 11:50:50 2009 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 27 11:57:03 2009 -0700"
      },
      "message": "ceph: allocate and parse mount args before client instance\n\nThis simplifies much of the error handling during mount.  It also means\nthat we have the mount args before client creation, and we can initialize\nbased on those options.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "76e3b390d41db9d69e254a09dd1aedd3e6aac25f",
      "tree": "2a2b6586fd36dcef430d1c13e07aa42ceaa51c84",
      "parents": [
        "8f3bc053c610826a657714649ea596f07875db2e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Oct 15 18:13:53 2009 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Oct 15 18:14:44 2009 -0700"
      },
      "message": "ceph: move dirty caps code around\n\nCleanup only.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "afcdaea3f2a78ce4873bd7e98a6d603bda23d167",
      "tree": "08defc298e2c27816d70bd41c8c3ecc80a82ba79",
      "parents": [
        "cdc35f96277314bbfeefd0505410cabd69aebd8d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 14 14:27:38 2009 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Oct 15 18:14:35 2009 -0700"
      },
      "message": "ceph: flush dirty caps via the cap_dirty list\n\nPreviously we were flushing dirty caps by passing an extra flag\nwhen traversing the delayed caps list.  Besides being a bit ugly,\nthat can also miss caps that are dirty but didn\u0027t result in a\ncap requeue: notably, mark_caps_dirty().\n\nSeparate the flushing into a separate helper, and traverse the\ncap_dirty list.\n\nThis also brings i_dirty_item in line with i_dirty_caps: we are\non the list IFF caps !\u003d 0.  We carry an inode ref IFF\ndirty_caps|flushing_caps !\u003d 0.\n\nLose the unused return value from __ceph_mark_caps_dirty().\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cdc35f96277314bbfeefd0505410cabd69aebd8d",
      "tree": "296cdc331f4a8902f284a7cf72ba29529121a94f",
      "parents": [
        "f2cf418cec8d61df0651a0140a92a8c75246e14f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 14 14:24:19 2009 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 14 14:43:56 2009 -0700"
      },
      "message": "ceph: move generic flushing code into helper\n\nBoth callers of __mark_caps_flushing() do the same work; move it\ninto the helper.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a8599bd821d084d04a3290fffae1071624ec00ea",
      "tree": "e2323ebfad9a49fdb579ff87d1ec3a8694e8c0f5",
      "parents": [
        "ba75bb98cfb93b62c54af25bf67ff90857264bbe"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 06 11:31:12 2009 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 06 11:31:12 2009 -0700"
      },
      "message": "ceph: capability management\n\nThe Ceph metadata servers control client access to inode metadata and\nfile data by issuing capabilities, granting clients permission to read\nand/or write both inode field and file data to OSDs (storage nodes).\nEach capability consists of a set of bits indicating which operations\nare allowed.\n\nIf the client holds a *_SHARED cap, the client has a coherent value\nthat can be safely read from the cached inode.\n\nIn the case of a *_EXCL (exclusive) or FILE_WR capabilities, the client\nis allowed to change inode attributes (e.g., file size, mtime), note\nits dirty state in the ceph_cap, and asynchronously flush that\nmetadata change to the MDS.\n\nIn the event of a conflicting operation (perhaps by another client),\nthe MDS will revoke the conflicting client capabilities.\n\nIn order for a client to cache an inode, it must hold a capability\nwith at least one MDS server.  When inodes are released, release\nnotifications are batched and periodically sent en masse to the MDS\ncluster to release server state.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    }
  ]
}
