)]}'
{
  "log": [
    {
      "commit": "a1703154200c390ab03c10224c586e815d3e31e8",
      "tree": "df90865eed3cfdf7af8664b5453a90e09d17480a",
      "parents": [
        "67b5ad9a63caa2ce56ddd2b22b802dae00d72c13",
        "766fc43973b16f9becb6b7402b3e052dbb84adee"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:24 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  rbd: fix cleanup when trying to mount inexistent image\n  net/ceph: make ceph_msgr_wq non-reentrant\n  ceph: fsc-\u003e*_wq\u0027s aren\u0027t used in memory reclaim path\n  ceph: Always free allocated memory in osdmap_decode()\n  ceph: Makefile: Remove unnessary code\n  ceph: associate requests with opening sessions\n  ceph: drop redundant r_mds field\n  ceph: implement DIRLAYOUTHASH feature to get dir layout from MDS\n  ceph: add dir_layout to inode\n"
    },
    {
      "commit": "14303d20f3ae3e6ab626c77a4aac202b3bafd377",
      "tree": "ee93c0de758571721f594c35f556ca79468e684f",
      "parents": [
        "6c0f3af72cb1622a66962a1180c36ef8c41be8e2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 14 17:37:52 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:13 2011 -0800"
      },
      "message": "ceph: implement DIRLAYOUTHASH feature to get dir layout from MDS\n\nThis implements the DIRLAYOUTHASH protocol feature, which passes the dir\nlayout over the wire from the MDS.  This gives the client knowledge\nof the correct hash function to use for mapping dentries among dir\nfragments.\n\nNote that if this feature is _not_ present on the client but is on the\nMDS, the client may misdirect requests.  This will result in a forward\nand degrade performance.  It may also result in inaccurate NFS filehandle\ngeneration, which will prevent fh resolution when the inode is not present\nin the client cache and the parent directories have been fragmented.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6c0f3af72cb1622a66962a1180c36ef8c41be8e2",
      "tree": "66e415bf31ea31a3e9360c0ce624fd20b6050c89",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 16 11:14:34 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:12 2011 -0800"
      },
      "message": "ceph: add dir_layout to inode\n\nAdd a ceph_dir_layout to the inode, and calculate dentry hash values based\non the parent directory\u0027s specified dir_hash function.  This is needed\nbecause the old default Linux dcache hash function is extremely week and\nleads to a poor distribution of files among dir fragments.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee",
      "tree": "7a2c299a180713e21d5cb653cb933121adf53c31",
      "parents": [
        "949854d02455080d20cd3e1db28a3a18daf7599d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:38 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache remove dcache_lock\n\ndcache_lock no longer protects anything. remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "2fd6b7f50797f2e993eea59e0a0b8c6399c811dc",
      "tree": "ce33b94b34844c09103836cf4cfa4364b742f217",
      "parents": [
        "da5029563a0a026c64821b09e8e7b4fd81d3fe1b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:34 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale subdirs\n\nProtect d_subdirs and d_child with d_lock, except in filesystems that aren\u0027t\nusing dcache_lock for these anyway (eg. using i_mutex).\n\nNote: if we change the locking rule in future so that -\u003ed_child protection is\nprovided only with -\u003ed_parent-\u003ed_lock, it may allow us to reduce some locking.\nBut it would be an exception to an otherwise regular locking scheme, so we\u0027d\nhave to see some good results. Probably not worthwhile.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b7ab39f631f505edc2bbdb86620d5493f995c9da",
      "tree": "62be97ebc7fc69ceb601f23312d335ebb8038ee7",
      "parents": [
        "2304450783dfde7b0b94ae234edd0dbffa865073"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:32 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale dentry refcount\n\nMake d_count non-atomic and protect it with d_lock. This allows us to ensure a\n0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when\nwe start protecting many other dentry members with d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "76db8ac45fc738f7d7664fe9b56d15c594a45228",
      "tree": "eca23feab074d505b375e27714473f4ad337bd85",
      "parents": [
        "caf8394524fdc039b090cd3af99157e9e76f4f06",
        "3105c19c450ac7c18ab28c19d364b588767261b3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 19 15:32:22 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 19 15:32:22 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: fix readdir EOVERFLOW on 32-bit archs\n  ceph: fix frag offset for non-leftmost frags\n  ceph: fix dangling pointer\n  ceph: explicitly specify page alignment in network messages\n  ceph: make page alignment explicit in osd interface\n  ceph: fix comment, remove extraneous args\n  ceph: fix update of ctime from MDS\n  ceph: fix version check on racing inode updates\n  ceph: fix uid/gid on resent mds requests\n  ceph: fix rdcache_gen usage and invalidate\n  ceph: re-request max_size if cap auth changes\n  ceph: only let auth caps update max_size\n  ceph: fix open for write on clustered mds\n  ceph: fix bad pointer dereference in ceph_fill_trace\n  ceph: fix small seq message skipping\n  Revert \"ceph: update issue_seq on cap grant\"\n"
    },
    {
      "commit": "451a3c24b0135bce54542009b5fde43846c7cf67",
      "tree": "f0fbbcc155aef2a1ffcb8aa593fe7a966d0e6900",
      "parents": [
        "55f6561c6941713ab5ae9180525b026dd40b7d14"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 17 16:26:55 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 17 08:59:32 2010 -0800"
      },
      "message": "BKL: remove extraneous #include \u003csmp_lock.h\u003e\n\nThe big kernel lock has been removed from all these files at some point,\nleaving only the #include.\n\nRemove this too as a cleanup.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b7495fc2ff941db6a118a93ab8d61149e3f4cef8",
      "tree": "231c339d74760e2fa13e5e6f41c10bc28cea51b3",
      "parents": [
        "e98b6fed84d0f0155d7b398e0dfeac74c792f2d0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:43:12 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:43:12 2010 -0800"
      },
      "message": "ceph: make page alignment explicit in osd interface\n\nWe used to infer alignment of IOs within a page based on the file offset,\nwhich assumed they matched.  This broke with direct IO that was not aligned\nto pages (e.g., 512-byte aligned IO).  We were also trusting the alignment\nspecified in the OSD reply, which could have been adjusted by the server.\n\nExplicitly specify the page alignment when setting up OSD IO requests.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d8672d64b88cdb7aa8139fb6d218f40b8cbf60af",
      "tree": "71d955bc89b33df3f838f8e1e8c0cbcd3f2bfc62",
      "parents": [
        "8bd59e0188c04f6540f00e13f633f22e4804ce06"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 09:24:34 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 09:24:34 2010 -0800"
      },
      "message": "ceph: fix update of ctime from MDS\n\nThe client can have a newer ctime than the MDS due to AUTH_EXCL and\nXATTR_EXCL caps as well; update the check in ceph_fill_file_time\nappropriately.\n\nThis fixes cases where ctime/mtime goes backward under the right sequence\nof local updates (e.g. chmod) and mds replies (e.g. subsequent stat that\ngoes to the MDS).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8bd59e0188c04f6540f00e13f633f22e4804ce06",
      "tree": "7f311b4fc75dea4fcd71aedbfa85ce7b6cfd712d",
      "parents": [
        "cb4276cca4695670916a82e359f2e3776f0a9138"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 09:23:12 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 09:23:12 2010 -0800"
      },
      "message": "ceph: fix version check on racing inode updates\n\nWe may get updates on the same inode from multiple MDSs; generally we only\npay attention if the update is newer than what we already have.  The\nexception is when an MDS sense unstable information, in which case we\nalways update.\n\nThe old \u003e check got this wrong when our version was odd (e.g. 3) and the\nreply version was even (e.g. 2): the older stale (v2) info would be\napplied.  Fixed and clarified the comment.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "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": "912a9b0319a8eb9e0834b19a25e01013ab2d6a9f",
      "tree": "7b04fca1669f006c1a1f35da8d986ca8ad11161c",
      "parents": [
        "7421ab8041d98363edfb85955fa3b9849ffae366"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:37:25 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:39:21 2010 -0800"
      },
      "message": "ceph: only let auth caps update max_size\n\nOnly the auth MDS has a meaningful max_size value for us, so only update it\nin fill_inode if we\u0027re being issued an auth cap.  Otherwise, a random\nstat result from a non-auth MDS can clobber a meaningful max_size, get\nthe client\u003c-\u003emds cap state out of sync, and make writes hang.\n\nSpecifically, even if the client re-requests a larger max_size (which it\nwill), the MDS won\u0027t respond because as far as it knows we already have a\nsufficiently large value.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d8b16b3d1c9d8d9124d647d05797383d35e2d645",
      "tree": "29bd57396f016572b5535c17a198b24062e2c79d",
      "parents": [
        "df9f86faf3ee610527ed02031fe7dd3c8b752e44"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 06 12:41:16 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 08:40:43 2010 -0800"
      },
      "message": "ceph: fix bad pointer dereference in ceph_fill_trace\n\nWe dereference *in a few lines down, but only set it on rename.  It is\napparently pretty rare for this to trigger, but I have been hitting it\nwith a clustered MDSs.\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": "467c525109d5d542d7d416b0c11bdd54610fe2f4",
      "tree": "abde91184dc9ccecc9efc784520b184cae772fb1",
      "parents": [
        "a77d9f7dce7600058d56f0670ed29d77abffcde2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Sep 13 11:39:20 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Sep 13 11:40:36 2010 -0700"
      },
      "message": "ceph: fix dn offset during readdir_prepopulate\n\nWhen adding the readdir results to the cache, ceph_set_dentry_offset was\nclobbered our just-set offset.  This can cause the readdir result offsets\nto get out of sync with the server.  Add an argument to the helper so\nthat it does not.\n\nThis bug was introduced by 1cd3935bedccf592d44343890251452a6dd74fc4.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ac1f12ef569d49b013c3db86e11be7e15d66b1c3",
      "tree": "79ca92f4f4c08a14629ff6b2b3b74d2eb7fac5eb",
      "parents": [
        "36e21687e6e51c4225c42e6291938363f7bbfa7c"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Wed Aug 25 09:11:35 2010 +0200"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Aug 25 12:01:54 2010 -0700"
      },
      "message": "ceph: ceph_get_inode() returns an ERR_PTR\n\nceph_get_inode() returns an ERR_PTR and it doesn\u0027t return a NULL.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "124514918b030d74f1f3e15483b7bf3b85268082",
      "tree": "78f539354383bf0820dc1cb20fd752b63f74760c",
      "parents": [
        "679ceace848e9fd570678396ffe1ef034e00e82d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 22 21:33:32 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 22 21:33:32 2010 -0700"
      },
      "message": "ceph: don\u0027t improperly set dir complete when holding EXCL cap\n\nIf we hold the EXCL cap, we cannot trust the dir stats from the MDS (num\nfiles, subdirs) and must not incorrectly conclude that the directory is\nempty.  If we do, we get can bad results from lookup (bad ENOENT) and\nbad readdir results.\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": "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": "8c696737aa61316a252c4514d09dd163f1464d33",
      "tree": "8f130d45380ac3f8bd897bf78bc7650c1bbb41b5",
      "parents": [
        "bc4fdca85734d12cd2c7a25c52323ef6e6e5adef"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jul 22 14:11:56 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Jul 23 10:02:07 2010 -0700"
      },
      "message": "ceph: fix leak of dentry in ceph_init_dentry() error path\n\nIf we fail to allocate a ceph_dentry_info, don\u0027t leak the dn reference.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d69ed05a80f23b25f06e73af9b7e701ce4900edc",
      "tree": "dfe4d372b1c2bb66a71d13d6bf8a22758640ddd0",
      "parents": [
        "cebc5be6b6c82a99231e9c9af451e9e3d3399ec6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jun 21 10:38:14 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jun 21 16:04:10 2010 -0700"
      },
      "message": "ceph: handle splice_dentry/d_materialize_unique error in readdir_prepopulate\n\nHandle a splice_dentry failure (due to a d_materialize_unique error)\nwithout crashing.  (Also, report the error code.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "13a4214cd9ec14d7b77e98bd3ee51f60f868a6e5",
      "tree": "baf741b4b80b169994591870106a39a885b55a68",
      "parents": [
        "67a3e12b05e055c0415c556a315a3d3eb637e29e"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry_c_chang@tcloudcomputing.com",
        "time": "Tue Jun 01 11:31:08 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 01 16:55:55 2010 -0700"
      },
      "message": "ceph: fix d_subdirs ordering problem\n\nWe misused list_move_tail() to order the dentry in d_subdirs.\nThis will screw up the d_subdirs order.\n\nThis bug can be reliably reproduced by:\n1. mount ceph fs.\n2. on ceph fs, git clone git://ceph.newdream.net/git/ceph.git\n3. Run autogen.sh in ceph directory.\n(Note: Errors only occur at the first time you run autogen.sh.)\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "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"
    }
  ]
}
