)]}'
{
  "log": [
    {
      "commit": "1a52bb0b686844021597d190e562ab55d1210104",
      "tree": "7edf13509869a6a7f1f488a679f15ff6c3057c54",
      "parents": [
        "8638094e956a47dbb9a25166705a91e9a0981d52",
        "83eb26af0db71f2dfe551405c55d982288fa6178"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:29:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:29:21 2012 -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: ensure prealloc_blob is in place when removing xattr\n  rbd: initialize snap_rwsem in rbd_add()\n  ceph: enable/disable dentry complete flags via mount option\n  vfs: export symbol d_find_any_alias()\n  ceph: always initialize the dentry in open_root_dentry()\n  libceph: remove useless return value for osd_client __send_request()\n  ceph: avoid iput() while holding spinlock in ceph_dir_fsync\n  ceph: avoid useless dget/dput in encode_fh\n  ceph: dereference pointer after checking for NULL\n  crush: fix force for non-root TAKE\n  ceph: remove unnecessary d_fsdata conditional checks\n  ceph: Use kmemdup rather than duplicating its implementation\n\nFix up conflicts in fs/ceph/super.c (d_alloc_root() failure handling vs\nalways initialize the dentry in open_root_dentry)\n"
    },
    {
      "commit": "83eb26af0db71f2dfe551405c55d982288fa6178",
      "tree": "c7bc62a810483e328cbe2b931416e58ec655ab9b",
      "parents": [
        "0e805a1d857799352e51e8697c0b1a30aec16913"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jan 11 17:41:01 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 12 11:00:51 2012 -0800"
      },
      "message": "ceph: ensure prealloc_blob is in place when removing xattr\n\nIn __ceph_build_xattrs_blob(), if a ceph inode\u0027s extended attributes\nare marked dirty, all attributes recorded in its rb_tree index are\nformatted into a \"blob\" buffer.  The target buffer is recorded in\nceph_inode-\u003ei_xattrs.prealloc_blob, and it is expected to exist and\nbe of sufficient size to hold the attributes.\n\nThe extended attributes are marked dirty in two cases: when a new\nattribute is added to the inode; or when one is removed.  In the\nformer case work is done to ensure the prealloc_blob buffer is\nproperly set up, but in the latter it is not.\n\nChange the logic in ceph_removexattr() so it matches what is\ndone in ceph_setxattr().  Note that this is done in a way that\nkeeps the two blocks of code nearly identical, in anticipation\nof a subsequent patch that encapsulates some of this logic into\none or more helper routines.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a40dc6cc2e121abcbd1b22583ef5447763df510c",
      "tree": "1c747cfabf33c6c9ad56811fabd22285816fc27a",
      "parents": [
        "46f72b349290d2bd7aecea38f02609d814332df6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 09:12:55 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 12 11:00:40 2012 -0800"
      },
      "message": "ceph: enable/disable dentry complete flags via mount option\n\nEnable/disable use of the dentry dir \u0027complete\u0027 flag via a mount option.\nThis lets the admin control whether ceph uses the dcache to satisfy\nnegative lookups or readdir when it has the entire directory contents in\nits cache.\n\nThis is purely a performance optimization; correctness is guaranteed\nwhether it is enabled or not.\n\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d46cfba5363a163851dc768f717f34185527a472",
      "tree": "18aaa9ab40b91b618ab206670de7a965f17589d1",
      "parents": [
        "56e925b677c5293e5aac73dac09e93b23259f907"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jan 04 16:30:15 2012 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 11 16:28:25 2012 -0800"
      },
      "message": "ceph: always initialize the dentry in open_root_dentry()\n\nWhen open_root_dentry() gets a dentry via d_obtain_alias() it does\nnot get initialized.  If the dentry obtained came from the cache,\nthis is OK.  But if not, the result is an improperly initialized\ndentry.\n\nTo fix this, call ceph_init_dentry() regardless of which path\nproduced the dentry.  That function returns immediately for a dentry\nthat is already initialized, it is safe to use either way.\n\n(Credit to Sage, who suggested this fix.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2ff179e650e95c2b21841b21dc46dc2edefd04cd",
      "tree": "9b15ba73039053111d73da96227e1589b3f11ff2",
      "parents": [
        "ee6b1baf67591b6d7ce1a6a07544343433d5ec9e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 03 10:09:07 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:57:02 2012 -0800"
      },
      "message": "ceph: avoid iput() while holding spinlock in ceph_dir_fsync\n\nceph_mdsc_put_request() can call iput(), which can sleep.  Don\u0027t do that.\n\nFixes: #1812\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ee6b1baf67591b6d7ce1a6a07544343433d5ec9e",
      "tree": "8aac5a6a2172d84d4188fe97bf3fe84aa558dc75",
      "parents": [
        "b8cd952b51034ad9f20ca147507ee68dc641c98c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 03 08:20:40 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:57:00 2012 -0800"
      },
      "message": "ceph: avoid useless dget/dput in encode_fh\n\nNothing we do here sleeps, so just do it under d_lock and avoid the dget/\ndput entirely.\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b8cd952b51034ad9f20ca147507ee68dc641c98c",
      "tree": "78fe2114ab9859eecc780206cc5d423b675b7e09",
      "parents": [
        "e11b05d31f21f0ea39ea288af667887cd6c21c80"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Dec 13 09:56:30 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:56:59 2012 -0800"
      },
      "message": "ceph: dereference pointer after checking for NULL\n\nmoved dereference after BUG_ON\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "3d8eb7a94e8f25a33362f708974ac7daae9e84f8",
      "tree": "5392b81331ea8733ac25e7a390ae64dbcd3b382a",
      "parents": [
        "186482560f660b8dbf77ee43aa6489cb45d342cd"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Nov 11 09:48:53 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:56:56 2012 -0800"
      },
      "message": "ceph: remove unnecessary d_fsdata conditional checks\n\nWe now set d_fsdata unconditionally on all dentries prior to setting up\nthe d_ops, so all of these checks are unnecessary.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3c5184ef1216dd476c9c67f22a199d90ac4d5892",
      "tree": "f6bd6d77ee9d1260892c8e8589497eaa2f5efbab",
      "parents": [
        "94bf608a18fa4421315275a81c5489734599297a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 09 16:34:32 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 09 16:36:12 2012 -0500"
      },
      "message": "ceph: d_alloc_root() may fail\n\n... and ceph_init_dentry(NULL) will oops\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "34c80b1d93e6e20ca9dea0baf583a5b5510d92d4",
      "tree": "7dcbf0a4e09464247e6992c8f44fcc872867bd3a",
      "parents": [
        "a6322de67b58a00e3a783ad9c87c2a11b2d67b47"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 08 21:32:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:19:54 2012 -0500"
      },
      "message": "vfs: switch -\u003eshow_options() to struct dentry *\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5706b27deae29ceee26d0c20112f087a9b841575",
      "tree": "8cd83edcaa711709e5671bd35376f3a9f67484f3",
      "parents": [
        "138d570de290ee7dbb18ef75d4f5735340352c56"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 04:52:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:16 2012 -0500"
      },
      "message": "ceph: propagate umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dba19c6064766730dd64757a010ec3aec503ecdb",
      "tree": "2071835ccfcb169b6219be7d5a4692fcfdcbd2c5",
      "parents": [
        "1b9d5ff7644ddf2723c9205f4726c95ec01bf033"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 20:49:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:12 2012 -0500"
      },
      "message": "get rid of open-coded S_ISREG(), etc.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1a67aafb5f72a436ca044293309fa7e6351d6a35",
      "tree": "d9e58600148de9d41b478cf815773b746647d15b",
      "parents": [
        "4acdaf27ebe2034c342f3be57ef49aed1ad885ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:52:52 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:54 2012 -0500"
      },
      "message": "switch -\u003emknod() to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4acdaf27ebe2034c342f3be57ef49aed1ad885ef",
      "tree": "d89a876ee19cd88609a587f8aa6c464a52ee6d98",
      "parents": [
        "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:42:34 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch -\u003ecreate() to umode_t\n\nvfs_create() ignores everything outside of 16bit subset of its\nmode argument; switching it to umode_t is obviously equivalent\nand it\u0027s the only caller of the method\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c",
      "tree": "4ee4e584bc9a67f3ec14ce159d2d7d4a27e68d4a",
      "parents": [
        "8208a22bb8bd3c52ef634b4ff194f14892ab1713"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:41:39 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch vfs_mkdir() and -\u003emkdir() to umode_t\n\nvfs_mkdir() gets int, but immediately drops everything that might not\nfit into umode_t and that\u0027s the only caller of -\u003emkdir()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6b520e0565422966cdf1c3759bd73df77b0f248c",
      "tree": "f63a26afa7342eb59b125271b16e30a219b59094",
      "parents": [
        "2a79f17e4a641a2f463cb512cb0ec349844a147b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 12 15:51:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: fix the stupidity with i_dentry in inode destructors\n\nSeeing that just about every destructor got that INIT_LIST_HEAD() copied into\nit, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();\nthe cost of taking it into inode_init_always() will be negligible for pipes\nand sockets and negative for everything else.  Not to mention the removal of\nboilerplate code from -\u003edestroy_inode() instances...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4d46363ce96c8fd7534c6f79051c78b52464132",
      "tree": "8d41ef517efe09f7783204fffe56ec2102d70f90",
      "parents": [
        "9d5a09e659f8414dd3713e2acbfaf8a9e9794aa1"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 29 08:05:14 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 29 08:05:14 2011 -0800"
      },
      "message": "ceph: disable use of dcache for readdir etc.\n\nCeph attempts to use the dcache to satisfy negative lookups and readdir\nwhen the entire directory contents are in cache.  Disable this behavior\nuntil lingering bugs in this code are shaken out; we\u0027ll re-enable these\nhooks once things are fully stable.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9d5a09e659f8414dd3713e2acbfaf8a9e9794aa1",
      "tree": "abba92c0a15f98cd4386cd86f081d1e2c89045ac",
      "parents": [
        "6a82c47aa84ab22cb5969a44105cca5358879d21"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Dec 13 09:57:44 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 13 11:59:53 2011 -0800"
      },
      "message": "ceph: add missing spin_unlock at ceph_mdsc_build_path()\n\none of the paths was missing spin_unlock\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "6a82c47aa84ab22cb5969a44105cca5358879d21",
      "tree": "60dea7b341119350274ba9c50cacddc2b357fd52",
      "parents": [
        "f1932fc1a6d899c754676b1dd8b17de93b052d43"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 13 09:19:26 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 13 09:19:26 2011 -0800"
      },
      "message": "ceph: fix SEEK_CUR, SEEK_SET regression\n\nCommit 06222e491e663dac939f04b125c9dc52126a75c4 got the if wrong so that\nit always evaluates as true.  This is semantically harmless, but makes\nSEEK_CUR and SEEK_SET needlessly query the server.\n\nRewrite the if to explicitly enumerate the cases we DO need a valid i_size\nto make this code less fragile.\n\nReported-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "be655596b3de5873f994ddbe205751a5ffb4de39",
      "tree": "cf6e53c6344f87a47ac68d6a6ff4d7dac6e5c25e",
      "parents": [
        "51703306b3b9ea7c05728040998521e47358147b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 30 09:47:09 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 07 10:46:44 2011 -0800"
      },
      "message": "ceph: use i_ceph_lock instead of i_lock\n\nWe have been using i_lock to protect all kinds of data structures in the\nceph_inode_info struct, including lists of inodes that we need to iterate\nover while avoiding races with inode destruction.  That requires grabbing\na reference to the inode with the list lock protected, but igrab() now\ntakes i_lock to check the inode flags.\n\nChanging the list lock ordering would be a painful process.\n\nHowever, using a ceph-specific i_ceph_lock in the ceph inode instead of\ni_lock is a simple mechanical change and avoids the ordering constraints\nimposed by igrab().\n\nReported-by: Amon Ott \u003ca.ott@m-privacy.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2151937d7ce491bfbe269a1ae742c6686904474c",
      "tree": "4aa64db4b4decc92cd8ee7c634a6d71546ab69f9",
      "parents": [
        "224736d9113ab4a7cf3f05c05377492bd99b4b02"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 01 08:06:52 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 02 09:27:54 2011 -0800"
      },
      "message": "ceph: fix rasize reporting by ceph_show_options\n\nFix typo.\n\nReported-by: mowang da \u003cwhooya.xxl@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "774ac21da76f5c3018428725074e27a3fd40b128",
      "tree": "3c22879278514494e467e651c918994cd6f359d2",
      "parents": [
        "15a2015fbc692e1c97d7ce12d96e077f5ae7ea6d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Nov 11 09:48:08 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Nov 11 09:50:17 2011 -0800"
      },
      "message": "ceph: initialize root dentry\n\nSet up d_fsdata on the root dentry.  This fixes a NULL pointer dereference\nin ceph_d_prune on umount.  It also means we can eventually strip out all\nof the conditional checks on d_fsdata because it is now set unconditionally\n(prior to setting up the d_ops).\n\nFix the ceph_d_prune debug print while we\u0027re here.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "15a2015fbc692e1c97d7ce12d96e077f5ae7ea6d",
      "tree": "f902cc2b7cab475c8b220147bb786dc3a772888e",
      "parents": [
        "0c6d4b4e22a513f8563a2e00c5ab08e9f8796272"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 22:06:31 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 22:06:31 2011 -0700"
      },
      "message": "ceph: fix iput race when queueing inode work\n\nIf we queue a work item that calls iput(), make sure we ihold() before\nattempting to queue work. Otherwise our queued work might miraculously run\nbefore we notice the queue_work() succeeded and call ihold(), allowing the\ninode to be destroyed.\n\nThat is, instead of\n\n\tif (queue_work(...))\n\t\tihold();\n\nwe need to do\n\n\tihold();\n\tif (!queue_work(...))\n\t\tiput();\n\nReported-by: Amon Ott \u003ca.ott@m-privacy.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0c6d4b4e22a513f8563a2e00c5ab08e9f8796272",
      "tree": "7c9401773dad6f6d64fea935b4623bab4e83c046",
      "parents": [
        "7fd7d101ff50af55d6d69f4705facc00c324024e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Fri Sep 23 11:53:30 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 21:10:12 2011 -0700"
      },
      "message": "ceph/super.c: quiet sparse noise\n\nQuiet the sparse noise:\n\nwarning: symbol \u0027create_fs_client\u0027 was not declared. Should it be static?\nwarning: symbol \u0027destroy_fs_client\u0027 was not declared. Should it be static?\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nceph-devel@vger.kernel.org\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7fd7d101ff50af55d6d69f4705facc00c324024e",
      "tree": "5314049cb1fc3e27d9962962bcea0194ce971b39",
      "parents": [
        "c6ffe10015f4e6fba8a915318b319c43aed1836f"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Fri Sep 23 13:22:11 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 21:10:11 2011 -0700"
      },
      "message": "ceph/mds_client.c: quiet sparse noise\n\nQuiet the following sparse noise:\n\nwarning: symbol \u0027get_nonsnap_parent\u0027 was not declared. Should it be static?\nwarning: symbol \u0027done_closing_sessions\u0027 was not declared. Should it be static?\n\nLocal functions don\u0027t need external visability. Make them static.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c6ffe10015f4e6fba8a915318b319c43aed1836f",
      "tree": "dd39730aeb6d00713ca27a1bf34b116d31479151",
      "parents": [
        "b58dc4100b9190f2cb437f1f67ffcb9f9acc4923"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 03 09:23:36 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 21:10:10 2011 -0700"
      },
      "message": "ceph: use new D_COMPLETE dentry flag\n\nWe used to use a flag on the directory inode to track whether the dcache\ncontents for a directory were a complete cached copy.  Switch to a dentry\nflag CEPH_D_COMPLETE that is safely updated by -\u003ed_prune().\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b58dc4100b9190f2cb437f1f67ffcb9f9acc4923",
      "tree": "5956065af3d9b126b8ae4a37551837c389f12702",
      "parents": [
        "3f8ddb032afa729d4bad1bf2965d3ec068de6b72"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 15 15:53:40 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 03 09:23:49 2011 -0700"
      },
      "message": "ceph: clear parent D_COMPLETE flag when on dentry prune\n\nWhen the VFS prunes a dentry from the cache, clear the D_COMPLETE flag\non the parent dentry.  Do this for the live and snapshotted namespaces. Do\nnot bother for the .snap dir contents, since we do not cache that.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "339573406737461cfb17bebabf7ba536a302d841",
      "tree": "9879390219993f759338b8bbfbf92a4ebb836cd8",
      "parents": [
        "3310f7541f0c991b51324a7712db51fb8f912601"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Oct 24 09:05:47 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:17 2011 -0700"
      },
      "message": "libceph: fix double-free of page vector\n\nceph_release_page_vector() kfrees the vector; we shouldn\u0027t do it here too.\n\nReported-by: Jeff Wu \u003ccpwu@tnsoft.com.cn\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3310f7541f0c991b51324a7712db51fb8f912601",
      "tree": "d9a003be8ae51c41facdb80125e853b7f143e5e6",
      "parents": [
        "38d6453ca39ecce442628a93e1bb46d70d547512"
      ],
      "author": {
        "name": "Amon Ott",
        "email": "a.ott@m-privacy.de",
        "time": "Thu Oct 20 13:04:07 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:17 2011 -0700"
      },
      "message": "ceph: fix 32-bit ino numbers\n\nFix 32-bit ino generation to not always be 1.\n\nSigned-off-by: Amon Ott \u003ca.ott@m-privacy.de\u003e\n"
    },
    {
      "commit": "a35eca958aa1c7d0b5f993db1a3ded45ae16d59b",
      "tree": "4d496b38cdd39d3363aaf23888f1932422ce5682",
      "parents": [
        "83eaea22bdfc9e1cec88f81be5b64f30f6c37e8b"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregory.farnum@dreamhost.com",
        "time": "Thu Aug 25 12:43:06 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:16 2011 -0700"
      },
      "message": "ceph: let the set_layout ioctl set single traits\n\nPreviously we were validating the passed-in stripe unit, object size,\nand stripe count against each other (and not testing most other stuff).\nInstead, make sure that the composed previous layout and new values are valid,\nand only send the new values to the MDS. This lets users change the\npool without setting the whole layout, for instance.\n\nSigned-off-by: Greg Farnum \u003cgregory.farnum@dreamhost.com\u003e\n"
    },
    {
      "commit": "83eaea22bdfc9e1cec88f81be5b64f30f6c37e8b",
      "tree": "f63f415ce4241c12639ef78f4920ed6b99915760",
      "parents": [
        "80db8bea6a0f4fd047eafd8329a44d5a110f462b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Aug 24 14:07:01 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:16 2011 -0700"
      },
      "message": "Revert \"ceph: don\u0027t truncate dirty pages in invalidate work thread\"\n\nThis reverts commit c9af9fb68e01eb2c2165e1bc45cfeeed510c64e6.\n\nWe need to block and truncate all pages in order to reliably invalidate\nthem.  Otherwise, we could:\n\n - have some uptodate pages in the cache\n - queue an invalidate\n - write(2) locks some pages\n - invalidate_work skips them\n - write(2) only overwrites part of the page\n - page now dirty and uptodate\n -\u003e partial leakage of invalidated data\n\nIt\u0027s not entirely clear why we started skipping locked pages in the first\nplace.  I just ran this through fsx and didn\u0027t see any problems.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "80db8bea6a0f4fd047eafd8329a44d5a110f462b",
      "tree": "17a119ced3e2a40972195cb67e1f48ea56076a6e",
      "parents": [
        "f0ed1b7cef1e801ef470efc501f9c663fe10cebd"
      ],
      "author": {
        "name": "Noah Watkins",
        "email": "noahwatkins@gmail.com",
        "time": "Mon Aug 22 13:49:23 2011 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:16 2011 -0700"
      },
      "message": "ceph: replace leading spaces with tabs\n\nTrivial formatting fix.\n\nSigned-off-by: Noah Watkins \u003cnoahwatkins@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b61c27636fffbaf1980e675282777b9467254a40",
      "tree": "bd78cfefda4beb7e3de5fe97dd36fed3dbfa91c1",
      "parents": [
        "f6a2f5be07463ef532b9f4e3cb9e42ab9df85832"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Aug 09 15:03:46 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "libceph: don\u0027t complain on msgpool alloc failures\n\nThe pool allocation failures are masked by the pool; there is no need to\nspam the console about them.  (That\u0027s the whole point of having the pool\nin the first place.)\n\nMark msg allocations whose failure is safely handled as such.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6ab00d465a1c8c02c2216f8220727282f3aa50b5",
      "tree": "b4cc08e1be5ffe0a60d9090d86f7f0d05b1f6e36",
      "parents": [
        "6a8ea4706adb4b4d8f77a8da5f9778b65fbf6f48"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Aug 09 09:41:59 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "libceph: create messenger with client\n\nThis simplifies the init/shutdown paths, and makes client-\u003emsgr available\nduring the rest of the setup process.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6a8ea4706adb4b4d8f77a8da5f9778b65fbf6f48",
      "tree": "263456e621ba9130f0f9bfec96f48cd597a75f88",
      "parents": [
        "0d66a487c120012f33fbcd6af5cbf0a0cad71557"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Aug 04 15:41:37 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "ceph: document ioctls\n\n...after some prodding by Christoph.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0d66a487c120012f33fbcd6af5cbf0a0cad71557",
      "tree": "be876b3a9a76e59e08165a661166be8507c25d9a",
      "parents": [
        "83817e35cbd9b36db955a22418c9e30324353587"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Aug 04 08:21:30 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "ceph: implement (optional) max read size\n\nThe \u0027rsize\u0027 mount option limits the maximum size of an individual\nread(ahead) operation that is sent off to an OSD.  This is distinct from\n\u0027rasize\u0027, which controls the size of the readahead window.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "83817e35cbd9b36db955a22418c9e30324353587",
      "tree": "bd2e52d560e74061310e27ef4028a4f2c75c9801",
      "parents": [
        "7c272194e66e91830b90f6202e61c69f8590f1eb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Aug 04 08:03:44 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "ceph: rename rsize -\u003e rasize\n\nIt controls readahead.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7c272194e66e91830b90f6202e61c69f8590f1eb",
      "tree": "9a899f357cbf005235fd80ab3b4a240e42498b54",
      "parents": [
        "c3b92c8787367a8bb53d57d9789b558f1295cc96"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Aug 03 09:58:09 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:14 2011 -0700"
      },
      "message": "ceph: make readpages fully async\n\nWhen we get a -\u003ereadpages() aop, submit async reads for all page ranges\nin the provided page list.  Lock the pages immediately, so that VFS/MM\nwill block until the reads complete.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0d20fbbe82dadc43f50a4ca5346e962de23cf950",
      "tree": "b3d63936aff013d6baa57c2cd9aaa3bade22d91c",
      "parents": [
        "0ec26fd0698285b31248e34bf1abb022c00f23d6",
        "aca420bc51f48b0701963ba3a6234442a0cabebd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 09 15:48:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 09 15:48:34 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://ceph.newdream.net/git/ceph-client\n\n* \u0027for-linus\u0027 of git://ceph.newdream.net/git/ceph-client:\n  libceph: fix leak of osd structs during shutdown\n  ceph: fix memory leak\n  ceph: fix encoding of ino only (not relative) paths\n  libceph: fix msgpool\n"
    },
    {
      "commit": "259a187ade45056fd44856654f78aa9e9f0f7c75",
      "tree": "9e402d904c854dc561526b80ad0f8977f42c5fbd",
      "parents": [
        "795858dbd253462a67e14272edeaae73c6074b17"
      ],
      "author": {
        "name": "Noah Watkins",
        "email": "noahwatkins@gmail.com",
        "time": "Mon Aug 22 13:49:41 2011 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Aug 22 13:06:59 2011 -0700"
      },
      "message": "ceph: fix memory leak\n\nkfree does not clean up indirect allocations in\nceph_fs_client and ceph_options (e.g. snapdir_name).\n\nSigned-off-by: Noah Watkins \u003cnoahwatkins@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "795858dbd253462a67e14272edeaae73c6074b17",
      "tree": "a9fb8a08682e6387d7d6c745633a6b7e2aec2679",
      "parents": [
        "5185352c163a72cf969b2fbbfb89801b398896fd"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Aug 15 13:02:37 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Aug 15 13:03:56 2011 -0700"
      },
      "message": "ceph: fix encoding of ino only (not relative) paths\n\nA \u0027path\u0027 consists of a starting ino and relative component.  Encode even\nwhen there is no relative component.  This is primarily needed by the\nNFS reexport code.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ba5b56cb3e3d2cab73d4fee9a022bb69462a8cd9",
      "tree": "eda7ea059a41ae5d68e2ad5a36a87069187ef22a",
      "parents": [
        "243dd2809a5edd2e0e3e62781083aa44049af37d",
        "d79698da32b317e96216236f265a9b72b78ae568"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 13:38:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 13:38:50 2011 -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: (23 commits)\n  ceph: document unlocked d_parent accesses\n  ceph: explicitly reference rename old_dentry parent dir in request\n  ceph: document locking for ceph_set_dentry_offset\n  ceph: avoid d_parent in ceph_dentry_hash; fix ceph_encode_fh() hashing bug\n  ceph: protect d_parent access in ceph_d_revalidate\n  ceph: protect access to d_parent\n  ceph: handle racing calls to ceph_init_dentry\n  ceph: set dir complete frag after adding capability\n  rbd: set blk_queue request sizes to object size\n  ceph: set up readahead size when rsize is not passed\n  rbd: cancel watch request when releasing the device\n  ceph: ignore lease mask\n  ceph: fix ceph_lookup_open intent usage\n  ceph: only link open operations to directory unsafe list if O_CREAT|O_TRUNC\n  ceph: fix bad parent_inode calc in ceph_lookup_open\n  ceph: avoid carrying Fw cap during write into page cache\n  libceph: don\u0027t time out osd requests that haven\u0027t been received\n  ceph: report f_bfree based on kb_avail rather than diffing.\n  ceph: only queue capsnap if caps are dirty\n  ceph: fix snap writeback when racing with writes\n  ...\n"
    },
    {
      "commit": "d79698da32b317e96216236f265a9b72b78ae568",
      "tree": "97f98e83c699794d6a5d979688587fbfdbba2ba7",
      "parents": [
        "41b02e1f9bb87b07d792b64aaeb7af3d00d69cd2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:26 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:26 2011 -0700"
      },
      "message": "ceph: document unlocked d_parent accesses\n\nFor the most part we don\u0027t care about racing with rename when directing\nMDS requests; either the old or new parent is fine.  Document that, and\ndo some minor cleanup.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "41b02e1f9bb87b07d792b64aaeb7af3d00d69cd2",
      "tree": "87c9524ff96cbff2ff29d659cbefd516b553ca1f",
      "parents": [
        "4f1772645296a230e04f5c53e79cfb6f841ce634"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:14 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:14 2011 -0700"
      },
      "message": "ceph: explicitly reference rename old_dentry parent dir in request\n\nWe carry a pin on the parent directory for the rename source and dest\ndentries.  For the source it\u0027s r_locked_dir; we need to explicitly\nreference the old_dentry parent as well, since the dentry\u0027s d_parent may\nchange between when the request was created and pinned and when it is\nfreed.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4f1772645296a230e04f5c53e79cfb6f841ce634",
      "tree": "b46dab3e88acef56a074c5d519a851dec5c1ade1",
      "parents": [
        "e5f86dc377e7ff2b4195831153a85a3e76fefff2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:08 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:08 2011 -0700"
      },
      "message": "ceph: document locking for ceph_set_dentry_offset\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e5f86dc377e7ff2b4195831153a85a3e76fefff2",
      "tree": "f15c11fc2c9b08e64555bbb601e582dc8f7325bd",
      "parents": [
        "bf1c6aca96c9d2f117dc7e590c2bc2304e7febe1"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:55 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:55 2011 -0700"
      },
      "message": "ceph: avoid d_parent in ceph_dentry_hash; fix ceph_encode_fh() hashing bug\n\nHave caller pass in a safely-obtained reference to the parent directory\nfor calculating a dentry\u0027s hash valud.\n\nWhile we\u0027re here, simpify the flow through ceph_encode_fh() so that there\nis a single exit point and cleanup.\n\nAlso fix a bug with the dentry hash calculation: calculate the hash for the\ndentry we were given, not its parent.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "bf1c6aca96c9d2f117dc7e590c2bc2304e7febe1",
      "tree": "1ecb6f35e572ba1e498390d1b09faf3c309bbaee",
      "parents": [
        "5f21c96dd5c615341963036ae8f5e4f5227a818d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:43 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:43 2011 -0700"
      },
      "message": "ceph: protect d_parent access in ceph_d_revalidate\n\nProtect d_parent with d_lock.  Carry a reference.  Simplify the flow so\nthat there is a single exit point and cleanup.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5f21c96dd5c615341963036ae8f5e4f5227a818d",
      "tree": "898c5781623b68527427d201e3f975827d08935c",
      "parents": [
        "48d0cbd1242aac969560ef8b90f26ee3b09a6a5c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:29 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:29 2011 -0700"
      },
      "message": "ceph: protect access to d_parent\n\nd_parent is protected by d_lock: use it when looking up a dentry\u0027s parent\ndirectory inode.  Also take a reference and drop it in the caller to avoid\na use-after-free.\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "48d0cbd1242aac969560ef8b90f26ee3b09a6a5c",
      "tree": "228a26f8ee7d555d67c6a00e5346f3b558a2e48c",
      "parents": [
        "dfabbed6fdd509dc2beb89c954bc36014a1bc7cb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:15 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:15 2011 -0700"
      },
      "message": "ceph: handle racing calls to ceph_init_dentry\n\nThe -\u003elookup() and prepopulate_readdir() callers are working with unhashed\ndentries, so we don\u0027t have to worry.  The export.c callers, though, need\nto initialize something they got back from d_obtain_alias() and are\npotentially racing with other callers.  Make sure we don\u0027t return unless\nthe dentry is properly initialized (by us or someone else).\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "dfabbed6fdd509dc2beb89c954bc36014a1bc7cb",
      "tree": "34186b6bba311438cccbd572f4f93d8165dce89b",
      "parents": [
        "029bcbd8b076fd19787b8c73e58dd0a6f2c0caf1"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:02 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:02 2011 -0700"
      },
      "message": "ceph: set dir complete frag after adding capability\n\nCurretly ceph_add_cap clears the complete bit if we are newly issued the\nFILE_SHARED cap, which is normally the case for a newly issue cap on a new\ndirectory.  That means we clear the just-set bit.  Move the check that sets\nthe flag to after the cap is added/updated.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e9852227431a0ed6ceda064f33e4218757acab6c",
      "tree": "e48c6a6ffb96780d562943dfc45c78a0a7edc0cd",
      "parents": [
        "79e3057c4c9d32b88e6745fd220d91b0a8b2030b"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Jul 22 11:12:28 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:29:14 2011 -0700"
      },
      "message": "ceph: set up readahead size when rsize is not passed\n\nThis should improve the default read performance, as without it\nreadahead is practically disabled.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "2f90b852e3ae73889d7f6de6ecf429b9b6a6b103",
      "tree": "584e53ef3a6919e68ee0d8804da8f3d63838a3fc",
      "parents": [
        "468640e32c7f6bfdaaa011095cc388786755d159"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:28:25 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:28:25 2011 -0700"
      },
      "message": "ceph: ignore lease mask\n\nThe lease mask is no longer used (and it changed a while back).  Instead,\nuse a non-zero duration to indicate that there is a lease being issued.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "468640e32c7f6bfdaaa011095cc388786755d159",
      "tree": "beb059d860c2ca39cda9ca3aa45603025655e1a6",
      "parents": [
        "9bae113a085b790de384bf86f09e15b42a65a985"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:28:11 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:28:11 2011 -0700"
      },
      "message": "ceph: fix ceph_lookup_open intent usage\n\nWe weren\u0027t properly calling lookup_instantiate_filp when setting up the\nlookup intent, which could lead to file leakage on errors.  So:\n\n - use separate helper for the hidden snapdir translation, immediately\n   following the mds request\n - use ceph_finish_lookup for the final dentry/return value dance in the\n   exit path\n - lookup_instantiate_filp on success\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9bae113a085b790de384bf86f09e15b42a65a985",
      "tree": "44d42141bf2d61a3098cedb381ec775cded8ac89",
      "parents": [
        "acda76578813ef893004ecad0e5ad2bb6039e5f7"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:59 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:59 2011 -0700"
      },
      "message": "ceph: only link open operations to directory unsafe list if O_CREAT|O_TRUNC\n\nWe only need to put these on the directory unsafe list if they have\nside effects that fsync(2) should flush out.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "acda76578813ef893004ecad0e5ad2bb6039e5f7",
      "tree": "d77d818eb8e783437e25d7590dd9864001a7e1b3",
      "parents": [
        "d8de9ab63a57326d21154c13c365f949f53ce8e1"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:48 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:48 2011 -0700"
      },
      "message": "ceph: fix bad parent_inode calc in ceph_lookup_open\n\nWe were always getting NULL here because the intent file f_dentry is always\nNULL at this point, which means we were always passing NULL to\nceph_mdsc_do_request.  In reality, this was fine, since this isn\u0027t\ncurrently ever a write operation that needs to get strung on the dir\u0027s\nunsafe list.\n\nUse the dir explicitly, and only pass it if this open has side-effects that\na dir fsync should flush.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d8de9ab63a57326d21154c13c365f949f53ce8e1",
      "tree": "283aac6bf2cc91a772d9cc04c97f46f60267e4c5",
      "parents": [
        "4cf9d544631c92809cb94ea680c71df56e9437aa"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:34 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:34 2011 -0700"
      },
      "message": "ceph: avoid carrying Fw cap during write into page cache\n\nThe generic_file_aio_write call may block on balance_dirty_pages while we\nflush data to the OSDs.  If we hold a reference to the FILE_WR cap during\nthat interval revocation by the MDS (e.g., to do a stat(2)) may be very\nslow.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8f04d42276048b3baff5a5d8fa769f433c62b63e",
      "tree": "dd9cdb99079d193ceab74f9b2f4b11d4b2fb7508",
      "parents": [
        "e77dc3e9c061e50c67e2e1a604d0a370f40db298"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregory.farnum@dreamhost.com",
        "time": "Tue Jul 26 11:26:54 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:06 2011 -0700"
      },
      "message": "ceph: report f_bfree based on kb_avail rather than diffing.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Greg Farnum \u003cgregory.farnum@dreamhost.com\u003e\n"
    },
    {
      "commit": "e77dc3e9c061e50c67e2e1a604d0a370f40db298",
      "tree": "8ed497994e3e1b9949c3d6907ed901ff502b1f5e",
      "parents": [
        "af0ed569d7019f1b49e9e51e77b47092e656b00e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:41 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:41 2011 -0700"
      },
      "message": "ceph: only queue capsnap if caps are dirty\n\nWe used to go into this branch if i_wrbuffer_ref_head was non-zero.  This\nwas an ancient check from before we were careful about dealing with all\nkinds of caps (and not just dirty pages).  It is cleaner to only queue a\ncapsnap if there is an actual dirty cap.  If we are racing with...\nsomething...we will end up here with ci-\u003ei_wrbuffer_refs but no dirty\ncaps.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "af0ed569d7019f1b49e9e51e77b47092e656b00e",
      "tree": "a8b0ad426b22548eec9e2d350c131426e13af989",
      "parents": [
        "9cfa1098dcfb34f71c5f3b7bcdbbb435a0cecab2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:31 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:31 2011 -0700"
      },
      "message": "ceph: fix snap writeback when racing with writes\n\nThere are two problems that come up when we try to queue a capsnap while a\nwrite is in progress:\n\n - The FILE_WR cap is held, but not yet dirty, so we may queue a capsnap\n   with dirty \u003d\u003d 0.  That will crash later in __ceph_flush_snaps().  Or\n   on the FILE_WR cap if a write is in progress.\n - We may not have i_head_snapc set, which causes problems pretty quickly.\n   Look to the snaprealm in this case.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9cfa1098dcfb34f71c5f3b7bcdbbb435a0cecab2",
      "tree": "cecff467984dd0d5e8fef2014e296b682c7a0267",
      "parents": [
        "4918b6d140c4822201ebbe2f070875332aff337b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:18 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:18 2011 -0700"
      },
      "message": "ceph: use flag bit for at_end readdir flag\n\nThis saves us a word of memory per file.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4918b6d140c4822201ebbe2f070875332aff337b",
      "tree": "0327a0a68acd2f8209893b4770ba3c9d9264041c",
      "parents": [
        "252c6728de604d6a897d85e212996811d5c8c46c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:07 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:07 2011 -0700"
      },
      "message": "ceph: add F_SYNC file flag to force sync (non-O_DIRECT) io\n\nThis allows us to force IO through the sync path which you normally only\nget when multiple clients are reading/writing to the same file or by\nmounting with -o sync.  Among other things, this lets test programs verify\ncorrectness with a single mount.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "252c6728de604d6a897d85e212996811d5c8c46c",
      "tree": "2b93fa141ca38789e00610dfa641dc7fefc3be72",
      "parents": [
        "02f8c6aee8df3cdc935e9bdd4f2d020306035dbe"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:25:27 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:25:27 2011 -0700"
      },
      "message": "ceph: add flags field to file_info\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "06222e491e663dac939f04b125c9dc52126a75c4",
      "tree": "99636fd666c8148a5bf58ea4844263d4b3a36310",
      "parents": [
        "c334b1138bd44bea578eab7971c59bd9212a1093"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:38 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:58 2011 -0400"
      },
      "message": "fs: handle SEEK_HOLE/SEEK_DATA properly in all fs\u0027s that define their own llseek\n\nThis converts everybody to handle SEEK_HOLE/SEEK_DATA properly.  In some cases\nwe just return -EINVAL, in others we do the normal generic thing, and in others\nwe\u0027re simply making sure that the properly due-dilligence is done.  For example\nin NFS/CIFS we need to make sure the file size is update properly for the\nSEEK_HOLE and SEEK_DATA case, but since it calls the generic llseek stuff itself\nthat is all we have to do.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b85fd6bdc99da917f5ae0f90f0c2d86ef9a766aa",
      "tree": "234aae960810ead4ad2811a31b0898afce7b46e1",
      "parents": [
        "2def9e4ec75e6771def66a07960dd516e119ab4c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 11:19:44 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:54 2011 -0400"
      },
      "message": "don\u0027t open-code parent_ino() in assorted -\u003ereaddir()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a127e0af59ab610e8b37ac2dfa4cdb2ec8c8f604",
      "tree": "9184b632a82441d8f4d8c19514dfad15072d1718",
      "parents": [
        "5c0f360b083fb33d05d1bff4b138b82d715eb419"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:43:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:59 2011 -0400"
      },
      "message": "ceph: LOOKUP_OPEN is set only when it\u0027s the last component\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8a5e929dd2e05ab4d3d89f58c5e8fca596af8f3a",
      "tree": "8cbed05fcd99d24e881e5ea12d8a954865e31085",
      "parents": [
        "554a8b9f54cd7ca2b89f5dc227df08be082fae0d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 19:15:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:52 2011 -0400"
      },
      "message": "don\u0027t transliterate lower bits of -\u003eintent.open.flags to FMODE_...\n\n-\u003ecreate() instances are much happier that way...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10556cb21a0d0b24d95f00ea6df16f599a3345b2",
      "tree": "3d7d8dfba807805a55c154f1850717bf3b49f343",
      "parents": [
        "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:28:19 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:24 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003epermission()\n\nnot used by the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890",
      "tree": "bbcebc14bffd000f1dfcbf37e64f56d2f49581ac",
      "parents": [
        "7e40145eb111a5192e6d819f764db9d6828d1abb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:16:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:22 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to generic_permission()\n\nredundant; all callers get it duplicated in mask \u0026 MAY_NOT_BLOCK and none of\nthem removes that bit.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "178ea73521d64ba41d7aa5488fb9f549c6d4507d",
      "tree": "7fb6bfb6483577752e307a5bb2e3905658d44294",
      "parents": [
        "07b8ce1ee87d291ff564c02cf878fae973317a52"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 11:31:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:16 2011 -0400"
      },
      "message": "kill check_acl callback of generic_permission()\n\nits value depends only on inode and does not change; we might as\nwell store it in -\u003ei_op-\u003echeck_acl and be done with that.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1b71fe2efa31cd18c865db474a4cd473b6ab5281",
      "tree": "ca2409c9ed9311a5ddc998f7428d71273e94f2e5",
      "parents": [
        "dc137bf553dbb6855bd7efc34fedcd03102455f7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 23:43:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 23:43:58 2011 -0400"
      },
      "message": "ceph analog of cifs build_path_from_dentry() race fix\n\n... unfortunately, cifs bug got copied.  Fix is essentially the same.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d7f124f129a6aea99938e0d4172c741b56fefeda",
      "tree": "25ee1b2b91de6e490ddd05b00d6a3f844a224987",
      "parents": [
        "9bb0ce2b0b734f3325ea5cd6b351856eeac94f78"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jun 13 16:22:18 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jun 13 16:26:22 2011 -0700"
      },
      "message": "ceph: fix sync and dio writes across stripe boundaries\n\nWe were iterating across stripe boundaries properly, but not moving the\nwrite buffer pointer forward.  This caused us to rewrite the same data\nafter the break.  Fix by adjusting the data pointer forward, and\nrecalculating the io and buffer alignment after the break.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "773e9b442693b250aa6c452cb0cf5a9343f51cef",
      "tree": "dbd2d9eacab7272c8ec8ba19a32ea92c559141bf",
      "parents": [
        "0c1f91f27140cf3b6e38dc4e892adac241c73a20"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 07 20:57:14 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Jun 13 16:26:10 2011 -0700"
      },
      "message": "ceph: fix page alignment corrections\n\n dd if\u003d/dev/urandom of\u003d/mnt/fs_depot/dd10 bs\u003d500 seek\u003d8388 count\u003d1\n dd if\u003d/mnt/fs_depot/dd10 of\u003d/root/dd10out bs\u003d500 skip\u003d8388 count\u003d1\n\nReported-by: Henry C Chang \u003chenry.cy.chang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0c1f91f27140cf3b6e38dc4e892adac241c73a20",
      "tree": "5058e4c66a16e2c1d808ce66317ef2c9fdb21590",
      "parents": [
        "0e98728fa32d338907631349a8cc2afa07c0cb9a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 25 14:56:12 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 07 21:36:45 2011 -0700"
      },
      "message": "ceph: unwind canceled flock state\n\nIf we request a lock and then abort (e.g., ^C), we need to send a matching\nunlock request to the MDS to unwind our lock attempt to avoid indefinitely\nblocking other clients.\n\nReported-by: Brian Chrisman \u003cbrchrisman@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0e98728fa32d338907631349a8cc2afa07c0cb9a",
      "tree": "589aaa9b8b973194a7185ff92d7a8a6fe9051edb",
      "parents": [
        "c3cd62839aaa2cdb2b99687c9e44f1b300a4aece"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 07 20:40:35 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 07 21:34:16 2011 -0700"
      },
      "message": "ceph: fix ENOENT logic in striped_read\n\nGetting ENOENT is equivalent to reading 0 bytes.  Make that correction\nbefore setting up the hit_stripe and was_short flags.\n\nFixes the following case:\n dd if\u003d/dev/zero of\u003d/mnt/fs_depot/dd3 bs\u003d1 seek\u003d1048576 count\u003d0\n dd if\u003d/mnt/fs_depot/dd3 of\u003d/root/ddout1 skip\u003d8 bs\u003d500 count\u003d2 iflag\u003ddirect\n\nReported-by: Henry C Chang \u003chenry.cy.chang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c3cd62839aaa2cdb2b99687c9e44f1b300a4aece",
      "tree": "fc7823426f29f44911c93394fb8a3e43d0c91846",
      "parents": [
        "2584547230ae49b8de91ab3bb5e0a81898905b45"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jun 01 16:08:44 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 07 21:34:14 2011 -0700"
      },
      "message": "ceph: fix short sync reads from the OSD\n\nIf we get a short read from the OSD because the object is small, we need to\nzero the remainder of the buffer.  For O_DIRECT reads, the attempted range\nis not trimmed to i_size by the VFS, so we were actually looping\nindefinitely.\n\nFix by trimming by i_size, and the unconditionally zeroing the trailing\nrange.\n\nReported-by: Jeff Wu \u003ccpwu@tnsoft.com.cn\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "70b666c3b4cb2b96098d80e6f515e4bc6d37db5a",
      "tree": "dd82036114adf9d0c28120500d58833cacfbc004",
      "parents": [
        "db3540522e955c1ebb391f4f5324dff4f20ecd09"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 27 09:24:26 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 07 21:34:11 2011 -0700"
      },
      "message": "ceph: use ihold when we already have an inode ref\n\nWe should use ihold whenever we already have a stable inode ref, even\nwhen we aren\u0027t holding i_lock.  This avoids adding new and unnecessary\nlocking dependencies.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "db3540522e955c1ebb391f4f5324dff4f20ecd09",
      "tree": "8c25b07caa8614345c71f09e8872e60b68af4c31",
      "parents": [
        "cd634fb6eec72ef8e6dd677546b8d0ffdd2501eb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 11:46:31 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 11:52:12 2011 -0700"
      },
      "message": "ceph: fix cap flush race reentrancy\n\nIn e9964c10 we change cap flushing to do a delicate dance because some\ninodes on the cap_dirty list could be in a migrating state (got EXPORT but\nnot IMPORT) in which we couldn\u0027t actually flush and move from\ndirty-\u003eflushing, breaking the while (!empty) { process first } loop\nstructure.  It worked for a single sync thread, but was not reentrant and\ntriggered infinite loops when multiple syncers came along.\n\nInstead, move inodes with dirty to a separate cap_dirty_migrating list\nwhen in the limbo export-but-no-import state, allowing us to go back to\nthe simple loop structure (which was reentrant).  This is cleaner and more\nrobust.\n\nAudited the cap_dirty users and this looks fine:\nlist_empty(\u0026ci-\u003ei_dirty_item) is still a reliable indicator of whether we\nhave dirty caps (which list we\u0027re on is irrelevant) and list_del_init()\ncalls still do the right thing.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "45e3d3eeb6578e523e100622266945ecd71723bb",
      "tree": "eb902b3b7ac75a93f739d15bf94c2b29bb3dbade",
      "parents": [
        "3c454cf21645bc96668e286f6352ac2c4c895fa2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Apr 06 09:35:00 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 11:52:06 2011 -0700"
      },
      "message": "ceph: avoid inode lookup on nfs fh reconnect\n\nIf we get the inode from the MDS, we have a reference in req; don\u0027t do a\nfresh lookup.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3c454cf21645bc96668e286f6352ac2c4c895fa2",
      "tree": "9ad5d408a07819d3e1155fb98df44c92f86a0eb5",
      "parents": [
        "aedfec59eed37d1ff7ce09b303b668234e9a7f8e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Apr 06 09:31:40 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 11:52:05 2011 -0700"
      },
      "message": "ceph: use LOOKUPINO to make unconnected nfs fh more reliable\n\nIf we are unable to locate an inode by ino, ask the MDS using the new\nLOOKUPINO command.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9d6fcb081a4770c3772c51c59c7251c22716d7bb",
      "tree": "8827d90aff9d7f463cb429aff1ecd22dde6a77a6",
      "parents": [
        "6b4a3b517a767c483d16a200730b2967e0e23b83"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 15:48:16 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:05 2011 -0700"
      },
      "message": "ceph: check return value for start_request in writepages\n\nSince we pass the nofail arg, we should never get an error; BUG if we do.\n(And fix the function to not return an error if __map_request fails.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6b4a3b517a767c483d16a200730b2967e0e23b83",
      "tree": "c5451454b53e93f2b51538b260e447b12fa9b73f",
      "parents": [
        "a2a79609c044d3ddb540671d5029a41c90c57251"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 15:43:48 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:05 2011 -0700"
      },
      "message": "ceph: remove useless check\n\nrc is only ever 0 or negative in this method.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "da39822c6565095a0151ccf9d6b95e2ae5612885",
      "tree": "7e69ca065c8ea5b4152e73f59347924f9edb02d8",
      "parents": [
        "31456665a02148353a83fec84d3182700e356588"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 15:28:11 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:04 2011 -0700"
      },
      "message": "ceph: fix broken comparison in readdir loop\n\nBoth off and fi-\u003eoffset are unsigned, so the difference is always \u003e\u003d 0.\nCompare them directly instead of the sign of the difference.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3540303f87115cbdae6ed2cab44ce6a7676d48d3",
      "tree": "eb1003ac91370488972e3e5b126771707cf98a88",
      "parents": [
        "12a2f643b0e6e791ba61485430d0003eeb3e373c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 15:13:23 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:03 2011 -0700"
      },
      "message": "ceph: fix rare potential cap leak\n\nIf we grab new_cap, retake the lock, and find we already have a cap now\nfor the given mds, release new_cap.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ae598083015e22d1802617c18d3408971b1bddc0",
      "tree": "3aba3bf823153f0e9fd8a8748b1acfdc5ab10e34",
      "parents": [
        "e8f54ce169125a2e59330fac25ad3c9ac0ce22a5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 14:28:05 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:25:02 2011 -0700"
      },
      "message": "ceph: use snprintf for dirstat content\n\nWe allocate a buffer for rstats if the dirstat option is enabled.  Use\nsnprintf.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1b36698577c1008dc1e63f0bf4b6f3d9deada94a",
      "tree": "167c49960e2f872592b20ea5db1c297f7b381d77",
      "parents": [
        "0da5d70369e87f80adf794080cfff1ca15a34198"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 12 14:14:51 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:24:17 2011 -0700"
      },
      "message": "libceph: remove unused variable\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3b663780347ce532b08be1c859b1df14f0eea4c8",
      "tree": "b78059196262209593e59ecdf0a005be6894514b",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 18 16:12:12 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu May 19 11:20:07 2011 -0700"
      },
      "message": "ceph: take reference on mds request r_unsafe_dir\n\nWe put ourselves on an inode list for the parent directory of metadata\noperations so that an fsync on the directory will wait for metadata updates\nto commit to disk.  We weren\u0027t holding a reference to that directory,\nhowever, and under certain workloads (fsstress in this case) the directory\ncan go away.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d3d0720d4a7a46e93e055e5b0f1a8bd612743ed6",
      "tree": "39d657139336012f05d7573116a0ba2405e85de7",
      "parents": [
        "a26a185d27b49e1656b335ef8ad1a32f7a0e7d7f"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry.cy.chang@gmail.com",
        "time": "Wed May 11 10:29:54 2011 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 11 10:44:48 2011 -0700"
      },
      "message": "ceph: do not use i_wrbuffer_ref as refcount for Fb cap\n\nWe increments i_wrbuffer_ref when taking the Fb cap. This breaks\nthe dirty page accounting and causes looping in\n__ceph_do_pending_vmtruncate, and ceph client hangs.\n\nThis bug can be reproduced occasionally by running blogbench.\n\nAdd a new field i_wb_ref to inode and dedicate it to Fb reference\ncounting.\n\nSigned-off-by: Henry C Chang \u003chenry.cy.chang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a26a185d27b49e1656b335ef8ad1a32f7a0e7d7f",
      "tree": "e3243ec1598355eee50887a2433d7cba1d9c43fc",
      "parents": [
        "7d8e18a69d9ebb8bf51748842929f8cc1ad61d49"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry.cy.chang@gmail.com",
        "time": "Wed May 11 10:29:53 2011 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 11 10:44:36 2011 -0700"
      },
      "message": "ceph: fix list_add in ceph_put_snap_realm\n\nSigned-off-by: Henry C Chang \u003chenry.cy.chang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7d8e18a69d9ebb8bf51748842929f8cc1ad61d49",
      "tree": "b4cc645a5ede559c7b91648150fca88e9c1c2b64",
      "parents": [
        "fca65b4ad72d28cbb43a029114d04b89f06faadb"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry.cy.chang@gmail.com",
        "time": "Wed May 11 10:29:52 2011 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 11 10:44:34 2011 -0700"
      },
      "message": "ceph: print debug message before put mds session\n\nThe mds session, s, could be freed during ceph_put_mds_session.\nMove dout before ceph_put_mds_session.\n\nSigned-off-by: Henry C Chang \u003chenry.cy.chang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "fca65b4ad72d28cbb43a029114d04b89f06faadb",
      "tree": "af7a0d64fa632c45a064d49f8d09f6874b1f7533",
      "parents": [
        "4ad12621e442b7a072e81270808f617cb65c5672"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 04 11:33:47 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 04 12:56:45 2011 -0700"
      },
      "message": "ceph: do not call __mark_dirty_inode under i_lock\n\nThe __mark_dirty_inode helper now takes i_lock as of 250df6ed.  Fix the\none ceph callers that held i_lock (__ceph_mark_dirty_caps) to return the\nflags value so that the callers can do it outside of i_lock.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8c71897be2ddfd84969412635ca42fa9e137f7b6",
      "tree": "7403c84c264f1fd0110869bad68405fcaf6c80ba",
      "parents": [
        "ca20892db7567c40e8ed0668f46cf0d085d7db6d"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry.cy.chang@gmail.com",
        "time": "Tue May 03 09:45:16 2011 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 03 09:28:12 2011 -0700"
      },
      "message": "ceph: handle ceph_osdc_new_request failure in ceph_writepages_start\n\nWe should unlock the page and return -ENOMEM if ceph_osdc_new_request\nfailed.\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3772d26d87efc2d91b2e4247e0001c89ed09a980",
      "tree": "940dc54f9daeef06185bcab96e2fc01c54a13355",
      "parents": [
        "a1b49cb7e2a7961ec3aa8b64860bf480d4ec9077"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 03 09:28:08 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 03 09:28:08 2011 -0700"
      },
      "message": "ceph: use ihold() when i_lock is held\n\nSee 0444d76ae64fffc7851797fc1b6ebdbb44ac504a.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "42933bac11e811f02200c944d8562a15f8ec4ff0",
      "tree": "fcdd9afe56eb0e746565ddd1f92f22d36678b843",
      "parents": [
        "2b9accbee563f535046ff2cd382d0acaa92e130c",
        "25985edcedea6396277003854657b5f3cb31a628"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6\n\n* \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6:\n  Fix common misspellings\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "50f3515828024582402044bcced6804c070c491c",
      "tree": "f9cf25bee56d0ca54acf4d571536268774dc56ed",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067",
        "4b2a58abd1e17c0ee53c8dded879e015917cca67"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 09:46:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 09:46:09 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  libceph: Create a new key type \"ceph\".\n  libceph: Get secret from the kernel keys api when mounting with key\u003dNAME.\n  ceph: Move secret key parsing earlier.\n  libceph: fix null dereference when unregistering linger requests\n  ceph: unlock on error in ceph_osdc_start_request()\n  ceph: fix possible NULL pointer dereference\n  ceph: flush msgr_wq during mds_client shutdown\n"
    },
    {
      "commit": "8323c3aa74cd92465350294567142d12ffdcc963",
      "tree": "052e7374393994eea8d534f98ee1bc7acea4c2d9",
      "parents": [
        "fbdb9190482fd83a3eb20cdeb0da454759f479d7"
      ],
      "author": {
        "name": "Tommi Virtanen",
        "email": "tommi.virtanen@dreamhost.com",
        "time": "Fri Mar 25 16:32:57 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 29 12:11:16 2011 -0700"
      },
      "message": "ceph: Move secret key parsing earlier.\n\nThis makes the base64 logic be contained in mount option parsing,\nand prepares us for replacing the homebew key management with the\nkernel key retention service.\n\nSigned-off-by: Tommi Virtanen \u003ctommi.virtanen@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0444d76ae64fffc7851797fc1b6ebdbb44ac504a",
      "tree": "d0678f0f8c82f3c2b2c66a6b47242eef1b323142",
      "parents": [
        "cb1817b37313b4b6c7f8f93c730553dd3cb6ac57"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 29 18:08:50 2011 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 29 07:50:34 2011 -0700"
      },
      "message": "fs: don\u0027t use igrab() while holding i_lock\n\nFix the incorrect use of igrab() inside the i_lock in NFS and Ceph‥\n\nIf we are already holding the i_lock, we have a reference to the\ninode so we can safely use ihold() to gain an extra reference. This\navoids hangs due to lock recursion on the i_lock now that the\ninode_lock is gone and igrab() uses the i_lock itself.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: linux-fsdevel@vger.kernel.org\nCc: Ryan Mallon \u003cryan@bluewatersys.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef550f6f4f6c9345a27ec85d98f4f7de1adce79c",
      "tree": "dafd71f3e7fe46ed685b5ab3fd62c2bb7d3cb679",
      "parents": [
        "59c2be1e4d42c0d4949cecdeef3f37070a1fbc13"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 25 13:27:48 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 25 13:27:48 2011 -0700"
      },
      "message": "ceph: flush msgr_wq during mds_client shutdown\n\nThe release method for mds connections uses a backpointer to the\nmds_client, so we need to flush the workqueue of any pending work (and\nceph_connection references) prior to freeing the mds_client.  This fixes\nan oops easily triggered under UML by\n\n while true ; do mount ... ; umount ... ; done\n\nAlso fix an outdated comment: the flush in ceph_destroy_client only flushes\nOSD connections out.  This bug is basically an artifact of the ceph -\u003e\nceph+libceph conversion.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    }
  ],
  "next": "147851d2dc4d2be2f60d40276d12d7ef82f8a7ce"
}
