)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "147851d2dc4d2be2f60d40276d12d7ef82f8a7ce",
      "tree": "e7b112fab505f6f97694fee5f2d6c509e8dd6289",
      "parents": [
        "49bcb93236ce1c60d9b7eb21a0aea1999f4d8709"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 15 14:57:41 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 21 12:24:26 2011 -0700"
      },
      "message": "ceph: rename dentry_release -\u003e d_release, fix comment\n\nJust for consistency\u0027s sake.  Fix obsolete comment too.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "49bcb93236ce1c60d9b7eb21a0aea1999f4d8709",
      "tree": "e8dc94cf5c106fc1067411bc38e16e43ab15318e",
      "parents": [
        "78a255654fa7f01945dea0dcedcf5113b3ad9f93"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry.cy.chang@gmail.com",
        "time": "Tue Mar 15 09:18:02 2011 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 21 12:24:25 2011 -0700"
      },
      "message": "ceph: add request to the tail of unsafe write list\n\nIn sync_write_wait(), we assume that the newest request is at the\ntail of unsafe write list. We should maintain the semantics here.\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "78a255654fa7f01945dea0dcedcf5113b3ad9f93",
      "tree": "87664950f3c8d68ba56e53034c6e9bcdf3a03699",
      "parents": [
        "80456f8672f7e69d05c01627da03587dc1ea1603"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry.cy.chang@gmail.com",
        "time": "Tue Mar 15 09:18:01 2011 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 21 12:24:24 2011 -0700"
      },
      "message": "ceph: remove request from unsafe list if it is canceled/timed out\n\nThis fixes the list corruption warning like this:\n\n------------[ cut here ]------------\nWARNING: at lib/list_debug.c:30 __list_add+0x68/0x81()\nHardware name: X8DTU\nlist_add corruption. prev-\u003enext should be next (ffff880618931250), but was (null). (prev\u003dffff880c188b9130).\nModules linked in: nfsd lockd nfs_acl auth_rpcgss exportfs ceph libceph libcrc32c sunrpc ipv6 fuse igb i2c_i801 ioatdma i2c_core iTCO_wdt iTCO_vendor_support joydev dca serio_raw usb_storage [last unloaded: scsi_wait_scan]\nPid: 10977, comm: smbd Tainted: G        W  2.6.32.23-170.Elaster.xendom0.fc12.x86_64 #1\nCall Trace:\n[\u003cffffffff8105753c\u003e] warn_slowpath_common+0x7c/0x94\n[\u003cffffffff810575ab\u003e] warn_slowpath_fmt+0x41/0x43\n[\u003cffffffff812351a3\u003e] __list_add+0x68/0x81\n[\u003cffffffffa014799d\u003e] ceph_aio_write+0x614/0x8a2 [ceph]\n[\u003cffffffff8111d2a0\u003e] do_sync_write+0xe8/0x125\n[\u003cffffffff81075a1f\u003e] ? autoremove_wake_function+0x0/0x39\n[\u003cffffffff811f21ec\u003e] ? selinux_file_permission+0x5c/0xb3\n[\u003cffffffff811e8521\u003e] ? security_file_permission+0x16/0x18\n[\u003cffffffff8111d864\u003e] vfs_write+0xae/0x10b\n[\u003cffffffff8111d91b\u003e] sys_pwrite64+0x5a/0x76\n[\u003cffffffff81012d32\u003e] system_call_fastpath+0x16/0x1b\n---[ end trace 08573eb9f07ff6f4 ]---\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "80456f8672f7e69d05c01627da03587dc1ea1603",
      "tree": "8351eb6c340a54357fc38df32335a87afefd875f",
      "parents": [
        "ad1fee96cbaf873520064252c5dc3212c9844861"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 10 13:33:26 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 21 12:24:23 2011 -0700"
      },
      "message": "ceph: move readahead default to fs/ceph from libceph\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ad1fee96cbaf873520064252c5dc3212c9844861",
      "tree": "bce9fcd824af836279a6dd10007430cc3872cb3a",
      "parents": [
        "483fac71485e5063ff4033b6dc7d91567f1b6ff1"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Jan 21 16:44:03 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 21 12:24:22 2011 -0700"
      },
      "message": "ceph: add ino32 mount option\n\nThe ino32 mount option forces the ceph fs to report 32 bit\nino values.  This is useful for 64 bit kernels with 32 bit userspace.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "21f3b5f1bbc3c27e82a8c9fc9861fa20bcb31f26",
      "tree": "faf7ebdf7c50918ded6946ede0dfb8a6c9a603d7",
      "parents": [
        "6f6c7006755b667f9f6c1f3b6f08cd65f75cc471"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 19 09:45:22 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 21 12:24:20 2011 -0700"
      },
      "message": "ceph: remove debugfs debug cruft\n\nWhoops!\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "09adc80c611bb8902daa8ccfe34dbbc009d6befe",
      "tree": "56d6096d2c4983a47acd7bb0a0f5d6e9c7fae331",
      "parents": [
        "b09734b1f4abd86e046777f0f268215b4ef1b523"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 04 21:38:47 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 15 09:14:03 2011 -0700"
      },
      "message": "ceph: preserve I_COMPLETE across rename\n\nd_move puts the renamed dentry at the end of d_subdirs, screwing with our\ncached dentry directory offsets.  We were just clearing I_COMPLETE to avoid\nany possibility of trouble.  However, assigning the renamed dentry an\noffset at the end of the directory (to match it\u0027s new d_subdirs position)\nis sufficient to maintain correct behavior and hold onto I_COMPLETE.\n\nThis is especially important for workloads like rsync, which renames files\ninto place.  Before, we would lose I_COMPLETE and do MDS lookups for each\nfile.  With this patch we only talk to the MDS on create and rename.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0eb980e31770cfeff6e27760b4692d595b8dbf28",
      "tree": "62ce6d994beb41f1276169de643ebc9e343daeaa",
      "parents": [
        "c78f4cc5e7d642c7009089817c12d8984e7ba872"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 10 03:44:05 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 10 03:44:05 2011 -0500"
      },
      "message": "ceph: fix d_revalidate oopsen on NFS exports\n\ncan\u0027t blindly check nd-\u003eflags in -\u003ed_revalidate()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "455cec0abff563574cca432ced49f734117ca113",
      "tree": "594e8dd5ac6c48a97836e5ca1e6ce451e157f2a2",
      "parents": [
        "e00de341fdb76c955703b4438100f9933c452b7f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 03 13:44:35 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 04 12:25:09 2011 -0800"
      },
      "message": "ceph: no .snap inside of snapped namespace\n\nOtherwise you can do things like\n\n# mkdir .snap/foo\n# cd .snap/foo/.snap\n# ls\n\u003cbadness\u003e\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "16a8b70a5a757db513f036bbcc73309f6c507d81",
      "tree": "e075716a8e58149894fcad3fa36ebf6ea16cfc6e",
      "parents": [
        "b545cc1505eb49247071ce9f4092665de788ca00"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 28 12:49:15 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 03 10:09:52 2011 -0800"
      },
      "message": "ceph: do not clear I_COMPLETE from d_release\n\nFirst, this was racy anyway: d_release isn\u0027t called until well after the\ndentry is unhashed.  Second, this runs afoul of the recent dcache change\nthat clears d_parent prior to calling d_release (949854d0), causing a NULL\npointer dereference.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b545cc1505eb49247071ce9f4092665de788ca00",
      "tree": "25bfbae54c086a1fdd0801efdd07aa4bdfdac951",
      "parents": [
        "9bde178d052418af0b8e0f12932cf02ab4764c9d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 28 12:46:46 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 03 10:09:51 2011 -0800"
      },
      "message": "ceph: do not set I_COMPLETE\n\nDo not set the I_COMPLETE flag on directories until we resolve races with\ndcache pruning.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9bde178d052418af0b8e0f12932cf02ab4764c9d",
      "tree": "e70cf12b6687ce93005ca97937e5b79da42e09a1",
      "parents": [
        "f5412be599602124d2bdd49947b231dd77c0bf99"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 28 09:47:37 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 03 10:09:50 2011 -0800"
      },
      "message": "Revert \"ceph: keep reference to parent inode on ceph_dentry\"\n\nThis reverts commit 97d79b403ef03f729883246208ef5d8a2ebc4d68.\n\nThis fails to account for d_parent changes due to rename or disconnected\ndentries due to submounts or NFS reexports.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8bd89ca22010847e85de37b77d9f19f16b1962ad",
      "tree": "0bcee2ae6a85443177a6d95ed960301e0f4c9d57",
      "parents": [
        "b08b69a110bd981909c248f89997dcdcdfd5a39c",
        "97d79b403ef03f729883246208ef5d8a2ebc4d68"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 21 15:01:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 21 15:01:38 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: keep reference to parent inode on ceph_dentry\n  ceph: queue cap_snaps once per realm\n  libceph: fix socket write error handling\n  libceph: fix socket read error handling\n"
    },
    {
      "commit": "97d79b403ef03f729883246208ef5d8a2ebc4d68",
      "tree": "6badfd07e1ae880bd30f99dfb55227d3210b6e3a",
      "parents": [
        "e8e1ba96b207deba1339b09983f8b29f92cb1497"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Jan 18 13:37:28 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Feb 19 19:59:14 2011 -0800"
      },
      "message": "ceph: keep reference to parent inode on ceph_dentry\n\nWhen creating a new dentry we now hold a reference to the parent\ninode in the ceph_dentry.  This is required due to the new RCU\nchanges from 949854d0, which set dentry-\u003ed_parent to NULL in d_kill before\ncalling the -\u003erelease() callback.  If/when that behavior is changed, we can\nrevert this hack.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e8e1ba96b207deba1339b09983f8b29f92cb1497",
      "tree": "281f255e549ec247699d9860117c3b684c472997",
      "parents": [
        "42961d2333a1855c649fa3790e258ab4f0fa66a4"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 04 20:45:58 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 04 20:45:58 2011 -0800"
      },
      "message": "ceph: queue cap_snaps once per realm\n\nWe were forming a dirty list, and then queueing cap_snaps for each realm\n_and_ its children, regardless of whether the children were already in the\ndirty list.  This meant we did it twice for some realms.  Which in turn\nmeant we corrupted mdsc-\u003esnap_flush_list when the cap_snap was re-added to\nthe list it was already on, and could trigger an infinite loop.\n\nWe were also using recursion to do reach all the children, a no-no when\nstack is limited.\n\nInstead, (re)queue any children on the dirty list, avoiding processing\nanything twice and avoiding any recursion.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b12ece7d852efbc8db45371c068900fcc62002d4",
      "tree": "6344b69d72415224f784ac3c0d855ae334a612d2",
      "parents": [
        "363aab29eb89b46d14d44e4a44a5fff57e30bcfc",
        "d66bbd441c08fe00ed2add1cf70cb243ebc2b27e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 28 12:12:58 2011 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 28 12:12:58 2011 +1000"
      },
      "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: avoid picking MDS that is not active\n  ceph: avoid immediate cap check after import\n  ceph: fix flushing of caps vs cap import\n  ceph: fix erroneous cap flush to non-auth mds\n  ceph: fix cap_wanted_delay_{min,max} mount option initialization\n  ceph: fix xattr rbtree search\n  ceph: fix getattr on directory when using norbytes\n"
    },
    {
      "commit": "d66bbd441c08fe00ed2add1cf70cb243ebc2b27e",
      "tree": "bde3d1bf8d6a665b14e2b86e82506c8c7b3b0657",
      "parents": [
        "7e57b81c7688c762bc9e775bc83f9fc17946f527"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Jan 21 21:16:46 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 25 08:16:37 2011 -0800"
      },
      "message": "ceph: avoid picking MDS that is not active\n\nIgnore replication or auth frag data if it indicates an MDS that is not\nactive.  This can happen if the MDS shuts down and the client has stale\ndata about the namespace distribution across the MDS cluster.  If that\u0027s\nthe case, fall back to directing the request based on the auth cap (which\nshould always be accurate).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7e57b81c7688c762bc9e775bc83f9fc17946f527",
      "tree": "d50dada5f348a9e9137a631e525c63f57e0cb796",
      "parents": [
        "088b3f5e9ee2649f5cfc2f08d8ce654e3eeba310"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 18 09:00:01 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 19 09:23:26 2011 -0800"
      },
      "message": "ceph: avoid immediate cap check after import\n\nThe NODELAY flag avoids the heuristics that delay cap (issued/wanted)\nrelease.  There\u0027s no reason for that after we import a cap, and it kills\nwhatever benefit we get from those delays.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "088b3f5e9ee2649f5cfc2f08d8ce654e3eeba310",
      "tree": "ca61373ee6eccd99a2af9a58ef492e099bacce3d",
      "parents": [
        "24be0c481067560b11441e794e27f166a3568863"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 18 08:56:01 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 19 09:23:25 2011 -0800"
      },
      "message": "ceph: fix flushing of caps vs cap import\n\nIf we are mid-flush and a cap is migrated to another node, we need to\nresend the cap flush message to the new MDS, and do so with the original\nflush_seq to avoid leaking across a sync boundary.  Previously we didn\u0027t\nredo the flush (we only flushed newly dirty data), which would cause a\nlater sync to hang forever.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "24be0c481067560b11441e794e27f166a3568863",
      "tree": "e91a8f77b8ecdacf747e5418c30a1c18dbdc38a3",
      "parents": [
        "50aac4fec503960380ab594a93a6fbfdf3f8915f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 18 08:48:06 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 19 09:23:24 2011 -0800"
      },
      "message": "ceph: fix erroneous cap flush to non-auth mds\n\nThe int flushing is global and not clear on each iteration of the loop,\nwhich can cause a second flush of caps to any MDSs with ids greater than\nthe auth.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "50aac4fec503960380ab594a93a6fbfdf3f8915f",
      "tree": "31a4cc787284ce14bc06548e750bc045e0aa2c8b",
      "parents": [
        "17db143fc091238c43ab9f373974ca2224a4c3f8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 18 07:59:40 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 19 09:23:22 2011 -0800"
      },
      "message": "ceph: fix cap_wanted_delay_{min,max} mount option initialization\n\nThese were initialized to 0 instead of the default, fallout from the RBD\nrefactor in 3d14c5d2b6e15c21d8e5467dc62d33127c23a644.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "17db143fc091238c43ab9f373974ca2224a4c3f8",
      "tree": "d72df7c0d88e6e9176292a560e9e9fcac12848aa",
      "parents": [
        "1c1266bb916e6a6b362d3be95f2cc7f3c41277a6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 13 15:27:29 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 13 15:50:11 2011 -0800"
      },
      "message": "ceph: fix xattr rbtree search\n\nFix xattr name comparison in rbtree search for strings that share a prefix.\nThe *name argument is null terminated, but the xattr name is not, so we\nneed to use strncmp, but that means adjusting for the case where name is\na prefix of xattr-\u003ename.\n\nThe corresponding case in __set_xattr() already handles this properly\n(although in that case *name is also not null terminated).\n\nReported-by: Sergiy Kibrik \u003csakib@meta.ua\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1c1266bb916e6a6b362d3be95f2cc7f3c41277a6",
      "tree": "8c70982d3a5ef6e3e810f92e0a20710f42dc4ef2",
      "parents": [
        "766fc43973b16f9becb6b7402b3e052dbb84adee"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Wed Jan 12 16:53:27 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 13 15:50:06 2011 -0800"
      },
      "message": "ceph: fix getattr on directory when using norbytes\n\nThe norbytes mount option was broken, and when doing getattr\non a directory it return the rbytes instead of the number of\nentities. This commit fixes it.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a1703154200c390ab03c10224c586e815d3e31e8",
      "tree": "df90865eed3cfdf7af8664b5453a90e09d17480a",
      "parents": [
        "67b5ad9a63caa2ce56ddd2b22b802dae00d72c13",
        "766fc43973b16f9becb6b7402b3e052dbb84adee"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:24 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  rbd: fix cleanup when trying to mount inexistent image\n  net/ceph: make ceph_msgr_wq non-reentrant\n  ceph: fsc-\u003e*_wq\u0027s aren\u0027t used in memory reclaim path\n  ceph: Always free allocated memory in osdmap_decode()\n  ceph: Makefile: Remove unnessary code\n  ceph: associate requests with opening sessions\n  ceph: drop redundant r_mds field\n  ceph: implement DIRLAYOUTHASH feature to get dir layout from MDS\n  ceph: add dir_layout to inode\n"
    },
    {
      "commit": "01e6acc4ea4c284c44bfb3d46c76f4ae580c6435",
      "tree": "d5b5c2c82827eae7f23ac6141feb4adfbb781920",
      "parents": [
        "b0aee3516d84c05240065a53f238ba7a718f56b9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 03 14:49:45 2011 +0100"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:14 2011 -0800"
      },
      "message": "ceph: fsc-\u003e*_wq\u0027s aren\u0027t used in memory reclaim path\n\nfsc-\u003e*_wq\u0027s aren\u0027t depended upon during memory reclaim.  Convert to\nalloc_workqueue() w/o WQ_MEM_RECLAIM.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: ceph-devel@vger.kernel.org\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "582c86e69045f37da8be445c265f72a7a73b18c6",
      "tree": "4c6661ffd8b5b331ce6f1316e9556c1bda079dfb",
      "parents": [
        "dc69e2e9fcd7c613eb744ea3b9c4ee9ca554e822"
      ],
      "author": {
        "name": "Tracey Dent",
        "email": "tdent48227@gmail.com",
        "time": "Tue Dec 14 19:32:37 2010 -0500"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:13 2011 -0800"
      },
      "message": "ceph: Makefile: Remove unnessary code\n\nRemove the if and else conditional because the code is in mainline and there\nis no need in it being there.\n\nAlso, Changed Makefile to use \u003cmodules\u003e-y instead of \u003cmodules\u003e-objs\nbecause -objs is deprecated and not mentioned in\n Documentation/kbuild/makefiles.txt.\n\nSigned-off-by: Tracey Dent \u003ctdent48227@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "dc69e2e9fcd7c613eb744ea3b9c4ee9ca554e822",
      "tree": "4b981b9ded0e08c2ab517b48367040a7b9902ed9",
      "parents": [
        "4af25fdda6943f311a63034f80933e4d6d6e3a19"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 02 13:49:00 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:13 2011 -0800"
      },
      "message": "ceph: associate requests with opening sessions\n\nAssociate request with sessions that aren\u0027t yep open.  This makes the\ndebugfs mdsc request list more informative.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4af25fdda6943f311a63034f80933e4d6d6e3a19",
      "tree": "8d0be03aedc4d3ea09ba0b8d3f1b63df4ef302e1",
      "parents": [
        "14303d20f3ae3e6ab626c77a4aac202b3bafd377"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 02 13:41:47 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:13 2011 -0800"
      },
      "message": "ceph: drop redundant r_mds field\n\nThe r_mds field is redundant, since we can find the same information at\nr_session-\u003es_mds, and when r_session is NULL then r_mds is meaningless.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "14303d20f3ae3e6ab626c77a4aac202b3bafd377",
      "tree": "ee93c0de758571721f594c35f556ca79468e684f",
      "parents": [
        "6c0f3af72cb1622a66962a1180c36ef8c41be8e2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 14 17:37:52 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:13 2011 -0800"
      },
      "message": "ceph: implement DIRLAYOUTHASH feature to get dir layout from MDS\n\nThis implements the DIRLAYOUTHASH protocol feature, which passes the dir\nlayout over the wire from the MDS.  This gives the client knowledge\nof the correct hash function to use for mapping dentries among dir\nfragments.\n\nNote that if this feature is _not_ present on the client but is on the\nMDS, the client may misdirect requests.  This will result in a forward\nand degrade performance.  It may also result in inaccurate NFS filehandle\ngeneration, which will prevent fh resolution when the inode is not present\nin the client cache and the parent directories have been fragmented.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6c0f3af72cb1622a66962a1180c36ef8c41be8e2",
      "tree": "66e415bf31ea31a3e9360c0ce624fd20b6050c89",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 16 11:14:34 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 12 15:15:12 2011 -0800"
      },
      "message": "ceph: add dir_layout to inode\n\nAdd a ceph_dir_layout to the inode, and calculate dentry hash values based\non the parent directory\u0027s specified dir_hash function.  This is needed\nbecause the old default Linux dcache hash function is extremely week and\nleads to a poor distribution of files among dir fragments.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee",
      "tree": "7a2c299a180713e21d5cb653cb933121adf53c31",
      "parents": [
        "949854d02455080d20cd3e1db28a3a18daf7599d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:38 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache remove dcache_lock\n\ndcache_lock no longer protects anything. remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "2fd6b7f50797f2e993eea59e0a0b8c6399c811dc",
      "tree": "ce33b94b34844c09103836cf4cfa4364b742f217",
      "parents": [
        "da5029563a0a026c64821b09e8e7b4fd81d3fe1b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:34 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale subdirs\n\nProtect d_subdirs and d_child with d_lock, except in filesystems that aren\u0027t\nusing dcache_lock for these anyway (eg. using i_mutex).\n\nNote: if we change the locking rule in future so that -\u003ed_child protection is\nprovided only with -\u003ed_parent-\u003ed_lock, it may allow us to reduce some locking.\nBut it would be an exception to an otherwise regular locking scheme, so we\u0027d\nhave to see some good results. Probably not worthwhile.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "da5029563a0a026c64821b09e8e7b4fd81d3fe1b",
      "tree": "5d5618e0cb382390073377b1be7d0aa76879ac54",
      "parents": [
        "b7ab39f631f505edc2bbdb86620d5493f995c9da"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:33 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale d_unhashed\n\nProtect d_unhashed(dentry) condition with d_lock. This means keeping\nDCACHE_UNHASHED bit in synch with hash manipulations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b7ab39f631f505edc2bbdb86620d5493f995c9da",
      "tree": "62be97ebc7fc69ceb601f23312d335ebb8038ee7",
      "parents": [
        "2304450783dfde7b0b94ae234edd0dbffa865073"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:32 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale dentry refcount\n\nMake d_count non-atomic and protect it with d_lock. This allows us to ensure a\n0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when\nwe start protecting many other dentry members with d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b6aa5901c7a2bd90d0b6b9866300d2648b2568f3",
      "tree": "1161ed9dbacb7ace73c5d48fc9acd1db0d7815d5",
      "parents": [
        "92cf765237e2787eb168096305c448caf25ac7f8"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry_c_chang@tcloudcomputing.com",
        "time": "Wed Dec 15 20:45:41 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 17 09:54:40 2010 -0800"
      },
      "message": "ceph: mark user pages dirty on direct-io reads\n\nFor read operation, we have to set the argument _write_ of get_user_pages\nto 1 since we will write data to pages. Also, we need to SetPageDirty before\nreleasing these pages.\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "92cf765237e2787eb168096305c448caf25ac7f8",
      "tree": "089f6d5a0f979ca858295cbf616ee2e85a62680f",
      "parents": [
        "ab226e21ad34f6ef52e00d2ab399d2364b4cdfee"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 17 09:53:41 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 17 09:53:48 2010 -0800"
      },
      "message": "ceph: fix null pointer dereference in ceph_init_dentry for nfs reexport\n\nThe fh_to_dentry etc. methods use ceph_init_dentry(), which assumes that\nd_parent is defined.  It isn\u0027t for those callers, so check!\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ab226e21ad34f6ef52e00d2ab399d2364b4cdfee",
      "tree": "95b9683b601a0602d9f813f7e6786e9a0e6da118",
      "parents": [
        "d96c9043d1588f04c7f467167f653c07d83232d5"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry_c_chang@tcloudcomputing.com",
        "time": "Wed Dec 15 20:41:54 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 15 20:46:16 2010 -0800"
      },
      "message": "ceph: fix direct-io on non-page-aligned buffers\n\nThe user buffer may be 512-byte aligned, not page-aligned.  We were\nassuming the buffer was page-aligned and only accounting for\nnon-page-aligned io offsets.\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1cd275f609ba46c8cae3ee77e499c54a0d13a983",
      "tree": "8530a763f57fc2dd02b34c4036c689ae603df3b6",
      "parents": [
        "a5b10629edfa521071ccdb3b1e0e7fb350a044db"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 06 09:45:22 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Dec 06 09:45:22 2010 -0800"
      },
      "message": "ceph: fix ioctl magic\n\nThe ioctl magic was inadvertently changed in 571dba52.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a5b10629edfa521071ccdb3b1e0e7fb350a044db",
      "tree": "c852f7a214c30fe1923579ec031b37fc8f326523",
      "parents": [
        "637ae8d547390df75bad42a7e9cb65e625119767"
      ],
      "author": {
        "name": "Herb Shiu",
        "email": "herb_shiu@tcloudcomputing.com",
        "time": "Tue Nov 23 13:58:29 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 01 14:22:34 2010 -0800"
      },
      "message": "ceph: Behave better when handling file lock replies.\n\nFill in the local lock with response data if appropriate,\nand don\u0027t call posix_lock_file when reading locks.\n\nSigned-off-by: Herb Shiu \u003cherb_shiu@tcloudcomputing.com\u003e\nAcked-by: Greg Farnum \u003cgregf@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "637ae8d547390df75bad42a7e9cb65e625119767",
      "tree": "311b5e454928e8954aee522d8c1a943954c9ea7e",
      "parents": [
        "25933abdd8c562182ca6dc9f8c4c2cc8265c3a80"
      ],
      "author": {
        "name": "Herb Shiu",
        "email": "herb_shiu@tcloudcomputing.com",
        "time": "Tue Nov 23 13:42:23 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 01 14:22:34 2010 -0800"
      },
      "message": "ceph: pass lock information by struct file_lock instead of as individual params.\n\nSigned-off-by: Herb Shiu \u003cherb_shiu@tcloudcomputing.com\u003e\nAcked-by: Greg Farnum \u003cgregf@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "25933abdd8c562182ca6dc9f8c4c2cc8265c3a80",
      "tree": "213db691c7a2d115f2f9ec5d586c1b769dfdb6fc",
      "parents": [
        "884ea892763d4dfba509743f65961c782c0442db"
      ],
      "author": {
        "name": "Herb Shiu",
        "email": "herb_shiu@tcloudcomputing.com",
        "time": "Wed Dec 01 14:14:38 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 01 14:22:27 2010 -0800"
      },
      "message": "ceph: Handle file locks in replies from the MDS.\n\nPreviously the kernel client incorrectly assumed everything was a directory.\n\nSigned-off-by: Herb Shiu \u003cherb_shiu@tcloudcomputing.com\u003e\nAcked-by: Greg Farnum \u003cgregf@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "884ea892763d4dfba509743f65961c782c0442db",
      "tree": "92a7f5b67aa06cf32457ccb2b69c28c528a48c15",
      "parents": [
        "3561d43fd289f590fdae672e5eb831b8d5cf0bf6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 22 22:58:06 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 01 14:15:31 2010 -0800"
      },
      "message": "ceph: avoid possible null deref in readdir after dir llseek\n\nlast may be NULL, but we dereference it in the else branch without\nchecking.  Normally it doesn\u0027t trigger because last \u003d\u003d NULL when fpos \u003d\u003d 2,\nbut it could happen on a newly opened dir if the user seeks forward.\n\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "76db8ac45fc738f7d7664fe9b56d15c594a45228",
      "tree": "eca23feab074d505b375e27714473f4ad337bd85",
      "parents": [
        "caf8394524fdc039b090cd3af99157e9e76f4f06",
        "3105c19c450ac7c18ab28c19d364b588767261b3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 19 15:32:22 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 19 15:32:22 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: fix readdir EOVERFLOW on 32-bit archs\n  ceph: fix frag offset for non-leftmost frags\n  ceph: fix dangling pointer\n  ceph: explicitly specify page alignment in network messages\n  ceph: make page alignment explicit in osd interface\n  ceph: fix comment, remove extraneous args\n  ceph: fix update of ctime from MDS\n  ceph: fix version check on racing inode updates\n  ceph: fix uid/gid on resent mds requests\n  ceph: fix rdcache_gen usage and invalidate\n  ceph: re-request max_size if cap auth changes\n  ceph: only let auth caps update max_size\n  ceph: fix open for write on clustered mds\n  ceph: fix bad pointer dereference in ceph_fill_trace\n  ceph: fix small seq message skipping\n  Revert \"ceph: update issue_seq on cap grant\"\n"
    },
    {
      "commit": "3105c19c450ac7c18ab28c19d364b588767261b3",
      "tree": "2b306fb3b8536f5f92f085993bbd966d9eb3929a",
      "parents": [
        "7b88dadc13e0004947de52df128dbd5b0754ed0a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 18 09:15:07 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 18 09:15:07 2010 -0800"
      },
      "message": "ceph: fix readdir EOVERFLOW on 32-bit archs\n\nOne of the readdir filldir_t callers was passing the raw ceph 64-bit ino\ninstead of the hashed 32-bit one, producing an EOVERFLOW in the filler\ncallback.  Fix this by calling the ceph_vino_to_ino() helper to do the\nconversion.\n\nReported-by: Jan Smets \u003cjan.smets@alcatel-lucent.com\u003e\nTested-by: Jan Smets \u003cjan.smets@alcatel-lucent.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "451a3c24b0135bce54542009b5fde43846c7cf67",
      "tree": "f0fbbcc155aef2a1ffcb8aa593fe7a966d0e6900",
      "parents": [
        "55f6561c6941713ab5ae9180525b026dd40b7d14"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 17 16:26:55 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 17 08:59:32 2010 -0800"
      },
      "message": "BKL: remove extraneous #include \u003csmp_lock.h\u003e\n\nThe big kernel lock has been removed from all these files at some point,\nleaving only the #include.\n\nRemove this too as a cleanup.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b88dadc13e0004947de52df128dbd5b0754ed0a",
      "tree": "9a2fd203b382b5922dfd1be5cb3adf055ff50c2d",
      "parents": [
        "a1629c3b24f26ec1b0f534874af674a6b4c1540b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 11 16:48:59 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 11 16:48:59 2010 -0800"
      },
      "message": "ceph: fix frag offset for non-leftmost frags\n\nWe start at offset 2 for the leftmost frag, and 0 for subsequent frags.\nWhen we reach the end (rightmost), we go back to 2.  This fixes readdir on\nfragmented (large) directories.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a1629c3b24f26ec1b0f534874af674a6b4c1540b",
      "tree": "7b40b54486f68189cde9753aca31d8e3d8af61a2",
      "parents": [
        "c5c6b19d4b8f5431fca05f28ae9e141045022149"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 11 15:24:06 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 11 15:24:06 2010 -0800"
      },
      "message": "ceph: fix dangling pointer\n\nClear fi-\u003elast_name when it\u0027s freed.  The only caller is rewinddir() (or\nequivalent lseek).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b7495fc2ff941db6a118a93ab8d61149e3f4cef8",
      "tree": "231c339d74760e2fa13e5e6f41c10bc28cea51b3",
      "parents": [
        "e98b6fed84d0f0155d7b398e0dfeac74c792f2d0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:43:12 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:43:12 2010 -0800"
      },
      "message": "ceph: make page alignment explicit in osd interface\n\nWe used to infer alignment of IOs within a page based on the file offset,\nwhich assumed they matched.  This broke with direct IO that was not aligned\nto pages (e.g., 512-byte aligned IO).  We were also trusting the alignment\nspecified in the OSD reply, which could have been adjusted by the server.\n\nExplicitly specify the page alignment when setting up OSD IO requests.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e98b6fed84d0f0155d7b398e0dfeac74c792f2d0",
      "tree": "0762cba398c39329dc5f056ddfccebf6768d2555",
      "parents": [
        "d8672d64b88cdb7aa8139fb6d218f40b8cbf60af"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:24:53 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Nov 09 12:24:53 2010 -0800"
      },
      "message": "ceph: fix comment, remove extraneous args\n\nThe offset/length arguments aren\u0027t used.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d8672d64b88cdb7aa8139fb6d218f40b8cbf60af",
      "tree": "71d955bc89b33df3f838f8e1e8c0cbcd3f2bfc62",
      "parents": [
        "8bd59e0188c04f6540f00e13f633f22e4804ce06"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 09:24:34 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 09:24:34 2010 -0800"
      },
      "message": "ceph: fix update of ctime from MDS\n\nThe client can have a newer ctime than the MDS due to AUTH_EXCL and\nXATTR_EXCL caps as well; update the check in ceph_fill_file_time\nappropriately.\n\nThis fixes cases where ctime/mtime goes backward under the right sequence\nof local updates (e.g. chmod) and mds replies (e.g. subsequent stat that\ngoes to the MDS).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8bd59e0188c04f6540f00e13f633f22e4804ce06",
      "tree": "7f311b4fc75dea4fcd71aedbfa85ce7b6cfd712d",
      "parents": [
        "cb4276cca4695670916a82e359f2e3776f0a9138"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 09:23:12 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 09:23:12 2010 -0800"
      },
      "message": "ceph: fix version check on racing inode updates\n\nWe may get updates on the same inode from multiple MDSs; generally we only\npay attention if the update is newer than what we already have.  The\nexception is when an MDS sense unstable information, in which case we\nalways update.\n\nThe old \u003e check got this wrong when our version was odd (e.g. 3) and the\nreply version was even (e.g. 2): the older stale (v2) info would be\napplied.  Fixed and clarified the comment.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cb4276cca4695670916a82e359f2e3776f0a9138",
      "tree": "09695ba622771c933e045bafe63c1da1139266f3",
      "parents": [
        "cd045cb42a266882ac24bc21a3a8d03683c72954"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 07:28:52 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 07:29:05 2010 -0800"
      },
      "message": "ceph: fix uid/gid on resent mds requests\n\nMDS requests can be rebuilt and resent in non-process context, but were\nfilling in uid/gid from current_fsuid/gid.  Put that information in the\nrequest struct on request setup.\n\nThis fixes incorrect (and root) uid/gid getting set for requests that\nare forwarded between MDSs, usually due to metadata migrations.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cd045cb42a266882ac24bc21a3a8d03683c72954",
      "tree": "2938560e8362804e829cc9feb23ef746d354140b",
      "parents": [
        "feb4cc9bb433bf1491ac5ffbba133f3258dacf06"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 04 11:05:05 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Nov 08 07:29:05 2010 -0800"
      },
      "message": "ceph: fix rdcache_gen usage and invalidate\n\nWe used to use rdcache_gen to indicate whether we \"might\" have cached\npages.  Now we just look at the mapping to determine that.  However, some\nold behavior remains from that transition.\n\nFirst, rdcache_gen \u003d\u003d 0 no longer means we have no pages.  That can happen\nat any time (presumably when we carry FILE_CACHE).  We should not reset it\nto zero, and we should not check that it is zero.\n\nThat means that the only purpose for rdcache_revoking is to resolve races\nbetween new issues of FILE_CACHE and an async invalidate.  If they are\nequal, we should invalidate.  On success, we decrement rdcache_revoking,\nso that it is no longer equal to rdcache_gen.  Similarly, if we success\nin doing a sync invalidate, set revoking \u003d gen - 1.  (This is a small\noptimization to avoid doing unnecessary invalidate work and does not\naffect correctness.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "feb4cc9bb433bf1491ac5ffbba133f3258dacf06",
      "tree": "6339043d3fd867683459d9dc33f146b2f7e37d75",
      "parents": [
        "912a9b0319a8eb9e0834b19a25e01013ab2d6a9f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:39:00 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:39:23 2010 -0800"
      },
      "message": "ceph: re-request max_size if cap auth changes\n\nIf the auth cap migrates to another MDS, clear requested_max_size so that\nwe resend any pending max_size increase requests.  This fixes potential\nhangs on writes that extend a file and race with an cap migration between\nMDSs.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "912a9b0319a8eb9e0834b19a25e01013ab2d6a9f",
      "tree": "7b04fca1669f006c1a1f35da8d986ca8ad11161c",
      "parents": [
        "7421ab8041d98363edfb85955fa3b9849ffae366"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:37:25 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:39:21 2010 -0800"
      },
      "message": "ceph: only let auth caps update max_size\n\nOnly the auth MDS has a meaningful max_size value for us, so only update it\nin fill_inode if we\u0027re being issued an auth cap.  Otherwise, a random\nstat result from a non-auth MDS can clobber a meaningful max_size, get\nthe client\u003c-\u003emds cap state out of sync, and make writes hang.\n\nSpecifically, even if the client re-requests a larger max_size (which it\nwill), the MDS won\u0027t respond because as far as it knows we already have a\nsufficiently large value.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7421ab8041d98363edfb85955fa3b9849ffae366",
      "tree": "d1ae0dbaf56ed8f56849f4199626a303ec86b03d",
      "parents": [
        "d8b16b3d1c9d8d9124d647d05797383d35e2d645"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:07:15 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 09:07:15 2010 -0800"
      },
      "message": "ceph: fix open for write on clustered mds\n\nNormally when we open a file we already have a cap, and simply update the\nwanted set.  However, if we open a file for write, but don\u0027t have an auth\ncap, that doesn\u0027t work; we need to open a new cap with the auth MDS.  Only\nreuse existing caps if we are opening for read or the existing cap is auth.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d8b16b3d1c9d8d9124d647d05797383d35e2d645",
      "tree": "29bd57396f016572b5535c17a198b24062e2c79d",
      "parents": [
        "df9f86faf3ee610527ed02031fe7dd3c8b752e44"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 06 12:41:16 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Nov 07 08:40:43 2010 -0800"
      },
      "message": "ceph: fix bad pointer dereference in ceph_fill_trace\n\nWe dereference *in a few lines down, but only set it on rename.  It is\napparently pretty rare for this to trigger, but I have been hitting it\nwith a clustered MDSs.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a7f9fb205a88ab9af675a68fc554cf51dafc8b60",
      "tree": "0aaa2ad1b345f46fc96d3e00592f9d106a269836",
      "parents": [
        "8bcbbf0009dd467afd6bed1fedfcb1d2463f55a7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 26 16:17:55 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:17:18 2010 -0400"
      },
      "message": "convert ceph\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2f56f56ad991edd51ffd0baf1182245ee1277a04",
      "tree": "e4062e2bb1a92b487609cded256d5ede1a6eda90",
      "parents": [
        "efa4c1206eaff047c474af2136748a58eb8cc33b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 27 20:59:49 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 27 21:05:54 2010 -0700"
      },
      "message": "Revert \"ceph: update issue_seq on cap grant\"\n\nThis reverts commit d91f2438d881514e4a923fd786dbd94b764a9440.\n\nThe intent of issue_seq is to distinguish between mds-\u003eclient messages that\n(re)create the cap and those that do not, which means we should _only_ be\nupdating that value in the create paths.  By updating it in handle_cap_grant,\nwe reset it to zero, which then breaks release.\n\nThe larger question is what workload/problem made me think it should be\nupdated here...\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1b430beee5e388605dfb092b214ef0320f752cf6",
      "tree": "c1b1ece282aab771fd1386a3fe0c6e82cb5c5bfe",
      "parents": [
        "d19d5476f4b9f91d2de92b91588bb118beba6c0d"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Oct 26 14:21:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "writeback: remove nonblocking/encountered_congestion references\n\nThis removes more dead code that was somehow missed by commit 0d99519efef\n(writeback: remove unused nonblocking and congestion checks).  There are\nno behavior change except for the removal of two entries from one of the\next4 tracing interface.\n\nThe nonblocking checks in -\u003ewritepages are no longer used because the\nflusher now prefer to block on get_request_wait() than to skip inodes on\nIO congestion.  The latter will lead to more seeky IO.\n\nThe nonblocking checks in -\u003ewritepage are no longer used because it\u0027s\nredundant with the WB_SYNC_NONE check.\n\nWe no long set -\u003enonblocking in VM page out and page migration, because\na) it\u0027s effectively redundant with WB_SYNC_NONE in current code\nb) it\u0027s old semantic of \"Don\u0027t get stuck on request queues\" is mis-behavior:\n   that would skip some dirty inodes on congestion and page out others, which\n   is unfair in terms of LRU age.\n\nInspired by Christoph Hellwig. Thanks!\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efa4c1206eaff047c474af2136748a58eb8cc33b",
      "tree": "61f8957ed7735c01a6d6900a3c4c2c45d084c3a7",
      "parents": [
        "61413c2f594e6b63db2b14c70c2e7d8cf02f9c00"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Oct 18 14:04:31 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:27 2010 -0700"
      },
      "message": "ceph: do not carry i_lock for readdir from dcache\n\nWe were taking dcache_lock inside of i_lock, which introduces a dependency\nnot found elsewhere in the kernel, complicationg the vfs locking\nscalability work.  Since we don\u0027t actually need it here anyway, remove\nit.\n\nWe only need i_lock to test for the I_COMPLETE flag, so be careful to do\nso without dcache_lock held.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "61413c2f594e6b63db2b14c70c2e7d8cf02f9c00",
      "tree": "2201b24eafc589067890a681a5e4e3431f8decdc",
      "parents": [
        "85b5aaa624aac568b8a3a88dbe4de6628c7cc527"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sun Oct 17 21:55:21 2010 +0200"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:26 2010 -0700"
      },
      "message": "fs/ceph/xattr.c: Use kmemdup\n\nConvert a sequence of kmalloc and memcpy to use kmemdup.\n\nThe semantic patch that performs this transformation is:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression a,flag,len;\nexpression arg,e1,e2;\nstatement S;\n@@\n\n  a \u003d\n-  \\(kmalloc\\|kzalloc\\)(len,flag)\n+  kmemdup(arg,len,flag)\n  \u003c... when !\u003d a\n  if (a \u003d\u003d NULL || ...) S\n  ...\u003e\n- memcpy(a,arg,len+1);\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": "571dba52a34015a5a7aa5d480a86936878444a6f",
      "tree": "358000d91b2960555835e7e194660f45d189953b",
      "parents": [
        "010e3b48fca57920557d2b80b83f8b2899fb5d1e"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregf@hq.newdream.net",
        "time": "Fri Sep 24 14:56:40 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:23 2010 -0700"
      },
      "message": "ceph: add CEPH_MDS_OP_SETDIRLAYOUT and associated ioctl.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6f453ed6c07dbed83b368269c9c0fb170866ee71",
      "tree": "f43e0bfd108aad49e8bbab9be395c74f97da5109",
      "parents": [
        "f4cf3deef4c474381e8fee2e6099d49edd9105cb"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Sep 28 09:53:10 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:21 2010 -0700"
      },
      "message": "ceph: fix debugfs warnings\n\nInclude \"super.h\" outside of CONFIG_DEBUG_FS to eliminate a compiler warning:\n\nfs/ceph/debugfs.c:266: warning: \u0027struct ceph_fs_client\u0027 declared inside parameter list\nfs/ceph/debugfs.c:266: warning: its scope is only this definition or declaration, which is probably not what you want\nfs/ceph/debugfs.c:271: warning: \u0027struct ceph_fs_client\u0027 declared inside parameter list\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "496e59553c51ce18acc836de070106b583926b87",
      "tree": "a171b2ec236fd021d4f17ea9d5df7312e93c1645",
      "parents": [
        "fca4451acfdcf894154e4809529ca28a09db88ff"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Sep 22 19:57:10 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:18 2010 -0700"
      },
      "message": "ceph: switch from BKL to lock_flocks()\n\nSwitch from using the BKL explicitly to the new lock_flocks() interface.\nEventually this will turn into a spinlock.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "fca4451acfdcf894154e4809529ca28a09db88ff",
      "tree": "446381c8e8c7b592b47c2e50c32b1e40817fcfe1",
      "parents": [
        "ac0b74d8a1ced8ea86147467daf06b15b130dd94"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregf@hq.newdream.net",
        "time": "Fri Sep 17 10:24:02 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:17 2010 -0700"
      },
      "message": "ceph: preallocate flock state without locks held\n\nWhen the lock_kernel() turns into lock_flocks() and a spinlock, we won\u0027t\nbe able to do allocations with the lock held.  Preallocate space without\nthe lock, and retry if the lock state changes out from underneath us.\n\nSigned-off-by: Greg Farnum \u003cgregf@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "18a38193efcaac1fb3c94ad8fa04bb117850a3c2",
      "tree": "096877dc2a039a991262d9f05fa0a2c2f684cfa8",
      "parents": [
        "93afd449aa3c0430ef409c13e1cb2b3f0458fc10"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Sep 17 10:46:44 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:15 2010 -0700"
      },
      "message": "ceph: use mapping-\u003enrpages to determine if mapping is empty\n\nThis is simpler and faster.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "93afd449aa3c0430ef409c13e1cb2b3f0458fc10",
      "tree": "dd9ab308735c2414260539e33605197a5f90f069",
      "parents": [
        "4c32f5dda5ffe23687a55da1538b7cc426710d1a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Sep 17 08:38:25 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:15 2010 -0700"
      },
      "message": "ceph: only invalidate on check_caps if we actually have pages\n\nThe i_rdcache_gen value only implies we MAY have cached pages; actually\ncheck the mapping to see if it\u0027s worth bothering with an invalidate.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4c32f5dda5ffe23687a55da1538b7cc426710d1a",
      "tree": "d0048f2310cdf1809ac13d4c8d59c75f96f67280",
      "parents": [
        "602adf400201636e95c3fed9f31fba54a3d7e844"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Aug 24 16:27:36 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:38:14 2010 -0700"
      },
      "message": "ceph: do not hide .snap in root directory\n\nSnaps in the root directory are now supported by the MDS, and harmless on\nolder versions.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3d14c5d2b6e15c21d8e5467dc62d33127c23a644",
      "tree": "7d123c47847df9d1e865b6b78dc7da3fe739b704",
      "parents": [
        "ae1533b62b3369e6ae32338f4a77d64d0e88f676"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Apr 06 15:14:15 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:37:28 2010 -0700"
      },
      "message": "ceph: factor out libceph from Ceph file system\n\nThis factors out protocol and low-level storage parts of ceph into a\nseparate libceph module living in net/ceph and include/linux/ceph.  This\nis mostly a matter of moving files around.  However, a few key pieces\nof the interface change as well:\n\n - ceph_client becomes ceph_fs_client and ceph_client, where the latter\n   captures the mon and osd clients, and the fs_client gets the mds client\n   and file system specific pieces.\n - Mount option parsing and debugfs setup is correspondingly broken into\n   two pieces.\n - The mon client gets a generic handler callback for otherwise unknown\n   messages (mds map, in this case).\n - The basic supported/required feature bits can be expanded (and are by\n   ceph_fs_client).\n\nNo functional change, aside from some subtle error handling cases that got\ncleaned up in the refactoring process.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    }
  ],
  "next": "ae1533b62b3369e6ae32338f4a77d64d0e88f676"
}
