)]}'
{
  "log": [
    {
      "commit": "be655596b3de5873f994ddbe205751a5ffb4de39",
      "tree": "cf6e53c6344f87a47ac68d6a6ff4d7dac6e5c25e",
      "parents": [
        "51703306b3b9ea7c05728040998521e47358147b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 30 09:47:09 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 07 10:46:44 2011 -0800"
      },
      "message": "ceph: use i_ceph_lock instead of i_lock\n\nWe have been using i_lock to protect all kinds of data structures in the\nceph_inode_info struct, including lists of inodes that we need to iterate\nover while avoiding races with inode destruction.  That requires grabbing\na reference to the inode with the list lock protected, but igrab() now\ntakes i_lock to check the inode flags.\n\nChanging the list lock ordering would be a painful process.\n\nHowever, using a ceph-specific i_ceph_lock in the ceph inode instead of\ni_lock is a simple mechanical change and avoids the ordering constraints\nimposed by igrab().\n\nReported-by: Amon Ott \u003ca.ott@m-privacy.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a35eca958aa1c7d0b5f993db1a3ded45ae16d59b",
      "tree": "4d496b38cdd39d3363aaf23888f1932422ce5682",
      "parents": [
        "83eaea22bdfc9e1cec88f81be5b64f30f6c37e8b"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregory.farnum@dreamhost.com",
        "time": "Thu Aug 25 12:43:06 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:16 2011 -0700"
      },
      "message": "ceph: let the set_layout ioctl set single traits\n\nPreviously we were validating the passed-in stripe unit, object size,\nand stripe count against each other (and not testing most other stuff).\nInstead, make sure that the composed previous layout and new values are valid,\nand only send the new values to the MDS. This lets users change the\npool without setting the whole layout, for instance.\n\nSigned-off-by: Greg Farnum \u003cgregory.farnum@dreamhost.com\u003e\n"
    },
    {
      "commit": "5f21c96dd5c615341963036ae8f5e4f5227a818d",
      "tree": "898c5781623b68527427d201e3f975827d08935c",
      "parents": [
        "48d0cbd1242aac969560ef8b90f26ee3b09a6a5c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:29 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:29 2011 -0700"
      },
      "message": "ceph: protect access to d_parent\n\nd_parent is protected by d_lock: use it when looking up a dentry\u0027s parent\ndirectory inode.  Also take a reference and drop it in the caller to avoid\na use-after-free.\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4918b6d140c4822201ebbe2f070875332aff337b",
      "tree": "0327a0a68acd2f8209893b4770ba3c9d9264041c",
      "parents": [
        "252c6728de604d6a897d85e212996811d5c8c46c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:07 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:07 2011 -0700"
      },
      "message": "ceph: add F_SYNC file flag to force sync (non-O_DIRECT) io\n\nThis allows us to force IO through the sync path which you normally only\nget when multiple clients are reading/writing to the same file or by\nmounting with -o sync.  Among other things, this lets test programs verify\ncorrectness with a single mount.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "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": "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": "3d14c5d2b6e15c21d8e5467dc62d33127c23a644",
      "tree": "7d123c47847df9d1e865b6b78dc7da3fe739b704",
      "parents": [
        "ae1533b62b3369e6ae32338f4a77d64d0e88f676"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Apr 06 15:14:15 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Oct 20 15:37:28 2010 -0700"
      },
      "message": "ceph: factor out libceph from Ceph file system\n\nThis factors out protocol and low-level storage parts of ceph into a\nseparate libceph module living in net/ceph and include/linux/ceph.  This\nis mostly a matter of moving files around.  However, a few key pieces\nof the interface change as well:\n\n - ceph_client becomes ceph_fs_client and ceph_client, where the latter\n   captures the mon and osd clients, and the fs_client gets the mds client\n   and file system specific pieces.\n - Mount option parsing and debugfs setup is correspondingly broken into\n   two pieces.\n - The mon client gets a generic handler callback for otherwise unknown\n   messages (mds map, in this case).\n - The basic supported/required feature bits can be expanded (and are by\n   ceph_fs_client).\n\nNo functional change, aside from some subtle error handling cases that got\ncleaned up in the refactoring process.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8c6e9229fc1989cf263a6fcd4ff406d7f473f966",
      "tree": "6402204aae50b0590df39289ed1e533472ee6ca1",
      "parents": [
        "84d9509234c46481aded977193fcf23f892d715f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 16 09:53:43 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 01 20:11:39 2010 -0700"
      },
      "message": "ceph: add LAZYIO ioctl to mark a file description for lazy consistency\n\nAllow an application to mark a file descriptor for lazy file consistency\nsemantics, allowing buffered reads and writes when multiple clients are\naccessing the same file.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "640ef79d27c81b7a3265a344ec1d25644dd463ad",
      "tree": "f5632a0b2a2f6cef7c6f3a513bbb6020d6ac694a",
      "parents": [
        "2d06eeb877581a7f53209af1582c5f66c799f0bd"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Mar 26 17:40:33 2010 +0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 17 15:25:17 2010 -0700"
      },
      "message": "ceph: use ceph_sb_to_client instead of ceph_client\n\nceph_sb_to_client and ceph_client are really identical, we need to dump\none; while function ceph_client is confusing with \"struct ceph_client\",\nceph_sb_to_client\u0027s definition is more clear; so we\u0027d better switch all\ncall to ceph_sb_to_client.\n\n  -static inline struct ceph_client *ceph_client(struct super_block *sb)\n  -{\n  -\treturn sb-\u003es_fs_info;\n  -}\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "33d4909ccc094b8262667bccdd52e01458bee0df",
      "tree": "1943b9d2f1796566c827e317958c3bfa8c7dc14f",
      "parents": [
        "1d1de9160e0d8aff0d67a21137b62e63ffd6f184"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 02 14:42:39 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 03 14:59:48 2009 -0800"
      },
      "message": "ceph: allow preferred osd to be get/set via layout ioctl\n\nThere is certainly no reason not to report this.\n\nThe only real downside to allowing the user to set it is that you don\u0027t\nget default values by zeroing the layout struct (the default is -1).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "51042122d4f85e0f8ee577a4230f172fcc57c456",
      "tree": "d5ccf5f84d362b6542a86eab6b6f50112111434b",
      "parents": [
        "63f2d211954b790fea0a9caeae605c7956535af6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 04 11:39:12 2009 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 04 16:36:07 2009 -0800"
      },
      "message": "ceph: fix endian conversions for ceph_pg\n\nThe endian conversions don\u0027t quite work with the old union ceph_pg.  Just\nmake it a regular struct, and make each field __le.  This is simpler and it\nhas the added bonus of actually working.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8f4e91dee2a245e4be6942f4a8d83a769e13a47d",
      "tree": "6bbb4ea1a42186a0d371dd5c1a1fd03e55f39dbf",
      "parents": [
        "a8e63b7d51cce4557ee7bcd8f51be5cae8547d20"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 06 11:31:14 2009 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 06 11:31:14 2009 -0700"
      },
      "message": "ceph: ioctls\n\nA few Ceph ioctls for getting and setting file layout (striping)\nparameters, and learning the identity and network address of the OSD a\ngiven region of a file is stored on.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    }
  ]
}
