)]}'
{
  "log": [
    {
      "commit": "04d000eb358919043da538f197d63f2a5924a525",
      "tree": "725f4031c083323b63664f03b4d0d7ce9c183b21",
      "parents": [
        "0ceed5db321ac0f9782e77dda476ebe28a8e2199"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 07 11:26:34 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:55 2010 -0700"
      },
      "message": "ceph: fix open file counting on snapped inodes when mds returns no caps\n\nIt\u0027s possible the MDS will not issue caps on a snapped inode, in which case\nan open request may not __ceph_get_fmode(), botching the open file\ncounting.  (This is actually a server bug, but the client shouldn\u0027t BUG out\nin this case.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c10f5e12bafde7f7a2f9b75d76f7a68d62154e91",
      "tree": "422e4a5898dea5fddaa4b6b73379b9ac4db230b5",
      "parents": [
        "66f41d4c5c8a5deed66fdcc84509376c9a0bf9d8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 16 12:56:11 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:22 2010 -0700"
      },
      "message": "ceph: clear dir complete on d_move\n\nd_move() reorders the d_subdirs list, breaking the readdir result caching.\nUnless/until d_move preserves that ordering, clear CEPH_I_COMPLETE on\nrename.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9358c6d4c0264b1572554c49c4b92673ea9a5c72",
      "tree": "3d11a5021487dccf61b8d53c66c32df6b84223eb",
      "parents": [
        "2eaa9cfdf33b8d7fb7aff27792192e0019ae8fc6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 30 13:54:41 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 30 13:55:22 2010 -0700"
      },
      "message": "ceph: fix dentry rehashing on virtual .snap dir\n\nIf a lookup fails on the magic .snap directory, we bind it to a magic\nsnap directory inode in ceph_lookup_finish().  That code assumes the dentry\nis unhashed, but a recent server-side change started returning NULL leases\non lookup failure, causing the .snap dentry to be hashed and NULL by\nceph_fill_trace().\n\nThis causes dentry hash chain corruption, or a dies when d_rehash()\nincludes\n\tBUG_ON(!d_unhashed(entry));\n\nSo, avoid processing the NULL dentry lease if it the dentry matches the\nsnapdir name in ceph_fill_trace().  That allows the lookup completion to\nproperly bind it to the snapdir inode.  BUG there if dentry is hashed to\nbe sure.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8b218b8a4a65bf4e304ae8690cadb9100ef029c0",
      "tree": "0fcc54e0bfff4cea6bdbb73c391adc9763564a6b",
      "parents": [
        "052bb34af3bf8ae2001b9f03d884ba0def3e427c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 09 12:59:08 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 21:33:08 2010 -0700"
      },
      "message": "ceph: fix inode removal from snap realm when racing with migration\n\nWhen an inode was dropped while being migrated between two MDSs,\ni_cap_exporting_issued was non-zero such that issue caps were non-zero and\n__ceph_is_any_caps(ci) was true.  This prevented the inode from being\nremoved from the snap realm, even as it was dropped from the cache.\n\nFix this by dropping any residual i_snap_realm ref in destroy_inode.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c9af9fb68e01eb2c2165e1bc45cfeeed510c64e6",
      "tree": "9af8caecd66c6557c5ada6a38d4b2ff9be180d35",
      "parents": [
        "e63dc5c780ba32d6d8b3662eecce2b8d96489b41"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Feb 19 00:10:11 2010 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 19 14:40:51 2010 -0800"
      },
      "message": "ceph: don\u0027t truncate dirty pages in invalidate work thread\n\nInstead of truncating the whole range of pages, we skip those\npages that are dirty or in the middle of writeback. Those pages\nwill be cleared later when the writeback completes.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2c27c9a57c93a0757b9b4b0e7dc1abeaf1db1ce2",
      "tree": "ffd4b1fd667938e2707d221bcc9de93421571dc0",
      "parents": [
        "a17d6473cc9eb64a5b41c568310aa73824ebaa64"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 15:45:51 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 15:45:51 2010 -0800"
      },
      "message": "ceph: fix typo in ceph_queue_writeback debug output\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": "3d497d858ae6e5f23a28783030aecc69074e102d",
      "tree": "43c69325be88a7a1ea3842d5f64a33d613fb710c",
      "parents": [
        "4af6b2257ee0eb8f4bf3b1dc8acb643c0e8a887f"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Feb 09 11:08:40 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:51 2010 -0800"
      },
      "message": "ceph: fix truncation when not holding caps\n\nA truncation should occur when either we have the\nspecified caps for the file, or (in cases where we are\nnot the only ones referencing the file) when it is mapped\nor when it is opened. The latter two cases were not\nhandled.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0f26c4b21b684825a6dd41f2bc04d48ff62d72f8",
      "tree": "6788224697ce1998c952bce1ff0136831af38648",
      "parents": [
        "ac8839d7b264d0fa478fca7c4f9b6bb833540a80"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Jan 29 11:01:11 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Jan 29 12:42:39 2010 -0800"
      },
      "message": "ceph: remove unreachable code\n\nWe never truncate to a smaller size without contacting the MDS.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5b1daecd59f95eb24dc629407ed80369c9929520",
      "tree": "19b5d4e11427350f48947df8dca453069ed0a0d5",
      "parents": [
        "3ea25f9441fc0951ada649105f2c57a59536b539"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jan 25 11:33:08 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jan 25 11:49:51 2010 -0800"
      },
      "message": "ceph: properly handle aborted mds requests\n\nPreviously, if the MDS request was interrupted, we would unregister the\nrequest and ignore any reply.  This could cause the caps or other cache\nstate to become out of sync.  (For instance, aborting dbench and doing\nrm -r on clients would complain about a non-empty directory because the\nclient didn\u0027t realize it\u0027s aborted file create request completed.)\n\nEven we don\u0027t unregister, we still can\u0027t process the reply normally because\nwe are no longer holding the caller\u0027s locks (like the dir i_mutex).\n\nSo, mark aborted operations with r_aborted, and in the reply handler, be\nsure to process all the caps.  Do not process the namespace changes,\nthough, since we no longer will hold the dir i_mutex.  The dentry lease\nstate can also be ignored as it\u0027s more forgiving.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4baa75ef0ed29adae03fcbbaa9aca1511a5a8cc9",
      "tree": "f3ba17caa2a8738eff064b611c1d7bb0610f3037",
      "parents": [
        "6a4ef48103a78a46b80e07fcd8ac4edda0c7128f"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Thu Jan 07 15:36:32 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 14 12:23:14 2010 -0800"
      },
      "message": "ceph: change dentry offset and position after splice_dentry\n\nThis fixes a bug, where we had the parent list have dentries with\noffsets that are not monotonically increasing, which caused the ceph\ndcache_readdir to skip entries.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c4a29f26d50bea65809ca670992108a33aa2efa6",
      "tree": "20b6c85cd3d92792e855d990aca3504dbe20d294",
      "parents": [
        "2baba25019ec564cd247af74013873d69a0b8190"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 21 11:42:18 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 21 16:39:57 2009 -0800"
      },
      "message": "ceph: ensure rename target dentry fails revalidation\n\nThis works around a bug in vfs_rename_dir() that rehashes the target\ndentry.  Ensure such dentries always fail revalidation by timing out the\ndentry lease and kicking it out of the current directory lease gen.\n\nThis can be reverted when the vfs bug is fixed.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b6c1d5b81ea0841ae9d3ce2cda319ab986b081cf",
      "tree": "c7ddbaa1acdaec0704dfb0c1c539ddaf6e8c7506",
      "parents": [
        "dd26d857a7bf1b5b734a23180c19eac3e46db944"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 07 12:17:17 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 07 12:17:17 2009 -0800"
      },
      "message": "ceph: simplify ceph_buffer interface\n\nWe never allocate the ceph_buffer and buffer separtely, so use a single\nconstructor.\n\nDisallow put on NULL buffer; make the caller check.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b377ff13b31778c19203f3089d14080beb40a692",
      "tree": "d872382487128fb0b1f9cfc3e67ac6ffdd9ecd4b",
      "parents": [
        "09b8a7d2af83ae96dc052f9708e50140d06a9b6c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 11 15:22:37 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 11 15:50:28 2009 -0800"
      },
      "message": "ceph: initialize i_size/i_rbytes on snapdir\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "232d4b01319767b3ffa5d08962a81c805962be49",
      "tree": "9df213823c817b988c4438e1f81797936c70f48b",
      "parents": [
        "bb097ffaf833a40335b6dd5e4fa6f5ed0b223bdc"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 21 11:21:49 2009 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 21 11:24:36 2009 -0700"
      },
      "message": "ceph: move directory size logic to ceph_getattr\n\nWe can\u0027t fill i_size with rbytes at the fill_file_size stage without\nadding additional checks for directories.  Notably, we want st_blocks\nto remain 0 on directories so that \u0027du\u0027 still works.\n\nFill in i_blocks, i_size specially in ceph_getattr instead.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "355da1eb7a1f91c276b991764e951bbcd8047599",
      "tree": "18b30761cbbeaa2b104957f5d50fb4c5296a52c5",
      "parents": [
        "16725b9d2a2e3d0fd2b0034482e2eb0a2d78050f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 06 11:31:08 2009 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 06 11:31:08 2009 -0700"
      },
      "message": "ceph: inode operations\n\nInode cache and inode operations.  We also include routines to\nincorporate metadata structures returned by the MDS into the client\ncache, and some helpers to deal with file capabilities and metadata\nleases.  The bulk of that work is done by fill_inode() and\nfill_trace().\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    }
  ]
}
