)]}'
{
  "log": [
    {
      "commit": "7e34bc524ecae3a04d8cc427ee76ddad826a937b",
      "tree": "5065eb0e287e450aef2d8e03e3a18d8f895a4c9e",
      "parents": [
        "a41359fa355e7b450c610ed8e913d5d75c3c9c3b"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sat May 22 12:01:14 2010 +0200"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat May 29 09:12:41 2010 -0700"
      },
      "message": "fs/ceph: Use ERR_CAST\n\nUse ERR_CAST(x) rather than ERR_PTR(PTR_ERR(x)).  The former makes more\nclear what is the purpose of the operation, which otherwise looks like a\nno-op.\n\nIn the case of fs/ceph/inode.c, ERR_CAST is not needed, because the type of\nthe returned value is the same as the type of the enclosing function.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\ntype T;\nT x;\nidentifier f;\n@@\n\nT f (...) { \u003c+...\n- ERR_PTR(PTR_ERR(x))\n+ x\n ...+\u003e }\n\n@@\nexpression x;\n@@\n\n- ERR_PTR(PTR_ERR(x))\n+ ERR_CAST(x)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "167c9e352deb7e25568c926c49c3eafad69cbe76",
      "tree": "b420c256e60accca30704059ab676e878cf49603",
      "parents": [
        "85792d0dd6e7a7a18fba55c97e49871211b28fe0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 14 10:02:57 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:40 2010 -0700"
      },
      "message": "ceph: use common helper for aborted dir request invalidation\n\nWe invalidate I_COMPLETE and dentry leases in two places: on aborted mds\nrequest and on request replay.  Use common helper to avoid duplicate code.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1cd3935bedccf592d44343890251452a6dd74fc4",
      "tree": "b088e425d19dbca7d7702e9f1bfa0b2dfa85eba0",
      "parents": [
        "1b7facc41b42c2ab904b2f88b64b1f8ca0ca6cb7"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 22:08:02 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:28 2010 -0700"
      },
      "message": "ceph: set dn offset when spliced\n\nWe want to assign an offset when the dentry goes from null to linked, which\nis always done by splice_dentry().  Notably, we should NOT assign an\noffset when a dentry is first created and is still null.\n\nBUG if we try to splice a non-null dentry (we shouldn\u0027t).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1b7facc41b42c2ab904b2f88b64b1f8ca0ca6cb7",
      "tree": "43203661dfe2675979e32a477d598d0f7559c8ee",
      "parents": [
        "e8a7498715181ece36130335536e13733a5c3187"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 16 12:58:02 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:27 2010 -0700"
      },
      "message": "ceph: don\u0027t clobber i_max_offset on already complete dir\n\nThis can screw up offsets assigned to new dentries and break dcache\nreaddir results.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e8a7498715181ece36130335536e13733a5c3187",
      "tree": "3a8afe3901eecfefd833e024cf6f661c6992a12c",
      "parents": [
        "f1f2765faedc24f8f2e9fd68521a5ea469801b60"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 15 14:08:49 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:27 2010 -0700"
      },
      "message": "ceph: skip set_dentry_offset work if directory not I_COMPLETE\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a6424e48c8d54a5795430b07c4487f1ed280df4e",
      "tree": "34731c9cb1df3cfe885d4526ce79ca50c50b7b4a",
      "parents": [
        "9dd4658db1be5ca92c2ed2fd7a100d973125d9c5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 29 09:28:11 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:25 2010 -0700"
      },
      "message": "ceph: fix xattr dangling pointer / double free\n\nIf we use the xattr_blob, clear the pointer so we don\u0027t release the memory\nat the bottom of the fuction.\n\nReported-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\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": "81a6cf2d30eac5d790f53cdff110892f7b18c7fe",
      "tree": "9dcc1d4492b8736cda6a007a4a1c076048bd87af",
      "parents": [
        "b4556396fac5b3f063d5b8ac54dc02f7612a75e1"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 14 09:35:38 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 10:25:45 2010 -0700"
      },
      "message": "ceph: invalidate affected dentry leases on aborted requests\n\nIf we abort a request, we return to caller, but the request may still\ncomplete.  And if we hold the dir FILE_EXCL bit, we may not release a\nlease when sending a request.  A simple un-tar, control-c, un-tar again\nwill reproduce the bug (manifested as a \u0027Cannot open: File exists\u0027).\n\nEnsure we invalidate affected dentry leases (as well dir I_COMPLETE) so\nwe don\u0027t have valid (but incorrect) leases.  Do the same, consistently, at\nother sites where I_COMPLETE is similarly cleared.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "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"
    }
  ]
}
