)]}'
{
  "log": [
    {
      "commit": "b612a0553714c6b9744ad0d03f10cac78f3a84b1",
      "tree": "9dfb5cb5d13c187ff1f54448f8441512203625d0",
      "parents": [
        "52b0ace7dfe8f70350218017a95d7cab1eb41fbb",
        "2a8e5e3637e2fc058798f5d3626f525729ffaaaf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 08:56:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 08:56:39 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: clean up on forwarded aborted mds request\n  ceph: fix leak of osd authorizer\n  ceph: close out mds, osd connections before stopping auth\n  ceph: make lease code DN specific\n  fs/ceph: Use ERR_CAST\n  ceph: renew auth tickets before they expire\n  ceph: do not resend mon requests on auth ticket renewal\n  ceph: removed duplicated #includes\n  ceph: avoid possible null dereference\n  ceph: make mds requests killable, not interruptible\n  sched: add wait_for_completion_killable_timeout\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": "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": "23804d91f112df09b832cd091b71af4dc2831aa8",
      "tree": "4b77c43b47d58f08ab02220c507dabfc8f6daf7a",
      "parents": [
        "366837706bae00abc2edd75add2579c1be18b2b8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 14 13:06:30 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:41 2010 -0700"
      },
      "message": "ceph: specify max_bytes on readdir replies\n\nSpecify max bytes in request to bound size of reply.  Add associated\nmount option with default value of 512 KB.\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": "f1f2765faedc24f8f2e9fd68521a5ea469801b60",
      "tree": "92952357c08d4b5e88151f42d01d1af4f9a652a3",
      "parents": [
        "bddfa3cc18fcd9c9313a1030b19d3b0ea2639310"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 21:50:39 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:26 2010 -0700"
      },
      "message": "ceph: set next_offset on readdir finish\n\nSet next_offset to 2 (always 2!), not 0, on readdir finish.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8c6efb58a5bab880d45b2078cb55ec4320707daf",
      "tree": "fe4d72552be0525905d569f0efd09938c6175369",
      "parents": [
        "559c1e0073ae779d60e1c673cda837f3e4295302"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 23 11:36:54 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:23 2010 -0700"
      },
      "message": "ceph: fix memory leak due to possible dentry init race\n\nFree dentry_info in error path.\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": "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": "ea1409f96197c1bffe5d7d5bc967b3445edcc1fa",
      "tree": "cbbd8ed4cca9bb718a596277f1152f2f1d629c37",
      "parents": [
        "5c6a2cdb4fe8aaf6b54f022c14f13d2a12b45914"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Apr 28 16:12:06 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:25 2010 -0700"
      },
      "message": "ceph: clear dir complete, invalidate dentry on replayed rename\n\nIf a rename operation is resent to the MDS following an MDS restart, the\nclient does not get a full reply (containing the resulting metadata) back.\nIn that case, a ceph_rename() needs to compensate by doing anything useful\nthat fill_inode() would have, like d_move().\n\nIt also needs to invalidate the dentry (to workaround the vfs_rename_dir()\nbug) and clear the dir complete flag, just like fill_trace().\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": "e1e4dd0caa63e166afa46a1ccc947bebb4f66bcf",
      "tree": "028dcbe599b2ecd0a08519e741298a7a5fcb701d",
      "parents": [
        "fc837c8f0446b73a1661339db406c0238dd1d184"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Apr 13 11:45:56 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 13 12:28:54 2010 -0700"
      },
      "message": "ceph: reserve one more caps space when doing readdir\n\nWe were missing space for the directory cap.  The result was a BUG at\nfs/ceph/caps.c:2178.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "f5b066287c74b624583b993395a65d03a6487b3a",
      "tree": "113dd2a4bbf0d2ff9fd374b53dc377f55677f922",
      "parents": [
        "2844a76a25a2fc2f5025cf128c95a14d86146d33"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Apr 12 14:24:28 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Apr 12 14:25:51 2010 -0700"
      },
      "message": "ceph: fix dentry reference leak in dcache readdir\n\nWhen filldir returned an error (e.g. buffer full for a large directory),\nwe would leak a dentry reference, causing an oops on umount.\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": "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": "393f66209669ad23f4f6d4191234c1df4367df3c",
      "tree": "5c628bcf731c98f5627000192e7f2d23a7a039a5",
      "parents": [
        "d96d60498ff748c5a88c72ec5d1cc4ba9a583e7e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Mar 10 12:03:32 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:47:06 2010 -0700"
      },
      "message": "ceph: fix possible double-free of mds request reference\n\nClear pointer to mds request after dropping the reference to\nensure we don\u0027t drop it again, as there is at least one error\npath through this function that does not reset fi-\u003elast_readdir\nto a new value.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "04a419f908b5291ff7e8ffd7aa351fa0ac0c08af",
      "tree": "2e634bdca766c27b88280ab5c1ce067f47ffe536",
      "parents": [
        "6df058c025ce343052c5516b1d8a9a7e73cddd64"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 23 09:30:21 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 23 09:30:21 2009 -0800"
      },
      "message": "ceph: add feature bits to connection handshake (protocol change)\n\nDefine supported and required feature set.  Fail connection if the server\nrequires features we do not support (TAG_FEATURES), or if the server does\nnot support features we require.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5de7bf8afa87f75af5ef3d6f9fce3e171cac834c",
      "tree": "42d3cdf8c6a78ee9057adca516dea26c890be24e",
      "parents": [
        "c4a29f26d50bea65809ca670992108a33aa2efa6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 21 11:48:44 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 21 16:39:58 2009 -0800"
      },
      "message": "ceph: do not drop lease during revalidate\n\nWe need to hold session s_mutex for __ceph_mdsc_drop_dentry_lease(), which\nwe don\u0027t, so skip it.  It was purely an optimization.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1d1de9160e0d8aff0d67a21137b62e63ffd6f184",
      "tree": "45482bacc25511428b150424f0bdb934b6d9bf73",
      "parents": [
        "50b885b96c903e420a1eac54dd27626244704a06"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 02 11:54:25 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 03 14:59:48 2009 -0800"
      },
      "message": "ceph: hide /.ceph from readdir results\n\nWe need to skip /.ceph in (cached) readdir results, and exclude \"/.ceph\"\nfrom the cached ENOENT lookup check.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "09b8a7d2af83ae96dc052f9708e50140d06a9b6c",
      "tree": "cb863b7cc50846bee4d8e85ec974dca5737de11e",
      "parents": [
        "cdac830313fa6bf2831693af80fefe4aaac11b7d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 11 15:21:27 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 11 15:50:25 2009 -0800"
      },
      "message": "ceph: exclude snapdir from readdir results\n\nIt was hidden from sync readdir, but not the cached dcache version.\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": "2817b000b02c5f0c05af67c01fb2684e1381d6ef",
      "tree": "32efd3c3cddde6824d4f1e44deb5e7694899dbe1",
      "parents": [
        "355da1eb7a1f91c276b991764e951bbcd8047599"
      ],
      "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: directory operations\n\nDirectory operations, including lookup, are defined here.  We take\nadvantage of lookup intents when possible.  For the most part, we just\nneed to build the proper requests for the metadata server(s) and\npass things off to the mds_client.\n\nThe results of most operations are normally incorporated into the\nclient\u0027s cache when the reply is parsed by ceph_fill_trace().\nHowever, if the MDS replies without a trace (e.g., when retrying an\nupdate after an MDS failure recovery), some operation-specific cleanup\nmay be needed.\n\nWe can validate cached dentries in two ways.  A per-dentry lease may\nbe issued by the MDS, or a per-directory cap may be issued that acts\nas a lease on the entire directory.  In the latter case, a \u0027gen\u0027 value\nis used to determine which dentries belong to the currently leased\ndirectory contents.\n\nWe normally prepopulate the dcache and icache with readdir results.\nThis makes subsequent lookups and getattrs avoid any server\ninteraction.  It also lets us satisfy readdir operation by peeking at\nthe dcache IFF we hold the per-directory cap/lease, previously\nperformed a readdir, and haven\u0027t dropped any of the resulting\ndentries.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    }
  ]
}
