)]}'
{
  "log": [
    {
      "commit": "40889e8d9fc6355980cf2bc94ef4356c10dec4ec",
      "tree": "c03f4e218477052c665cd9b01352f83e32c4a593",
      "parents": [
        "1ca22254b32657d65315af261ae0e699b8427fb7",
        "c3e946ce7276faf0b302acd25c7b874edbeba661"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 20 14:00:13 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 20 14:00:13 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull Ceph update from Sage Weil:\n \"There are a few different groups of commits here.  The largest is\n  Alex\u0027s ongoing work to enable the coming RBD features (cloning,\n  striping).  There is some cleanup in libceph that goes along with it.\n\n  Cyril and David have fixed some problems with NFS reexport (leaking\n  dentries and page locks), and there is a batch of patches from Yan\n  fixing problems with the fs client when running against a clustered\n  MDS.  There are a few bug fixes mixed in for good measure, many of\n  which will be going to the stable trees once they\u0027re upstream.\n\n  My apologies for the late pull.  There is still a gremlin in the rbd\n  map/unmap code and I was hoping to include the fix for that as well,\n  but we haven\u0027t been able to confirm the fix is correct yet; I\u0027ll send\n  that in a separate pull once it\u0027s nailed down.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (68 commits)\n  rbd: get rid of rbd_{get,put}_dev()\n  libceph: register request before unregister linger\n  libceph: don\u0027t use rb_init_node() in ceph_osdc_alloc_request()\n  libceph: init event-\u003enode in ceph_osdc_create_event()\n  libceph: init osd-\u003eo_node in create_osd()\n  libceph: report connection fault with warning\n  libceph: socket can close in any connection state\n  rbd: don\u0027t use ENOTSUPP\n  rbd: remove linger unconditionally\n  rbd: get rid of RBD_MAX_SEG_NAME_LEN\n  libceph: avoid using freed osd in __kick_osd_requests()\n  ceph: don\u0027t reference req after put\n  rbd: do not allow remove of mounted-on image\n  libceph: Unlock unprocessed pages in start_read() error path\n  ceph: call handle_cap_grant() for cap import message\n  ceph: Fix __ceph_do_pending_vmtruncate\n  ceph: Don\u0027t add dirty inode to dirty list if caps is in migration\n  ceph: Fix infinite loop in __wake_requests\n  ceph: Don\u0027t update i_max_size when handling non-auth cap\n  bdi_register: add __printf verification, fix arg mismatch\n  ...\n"
    },
    {
      "commit": "f6af75dac3978d0b4d83939cb5d244b2a844820e",
      "tree": "5d73ddf996763783ad8e65d6754cfba0cd478af6",
      "parents": [
        "88d67ee3ec52d19e52ae58ef4303464720215d3a"
      ],
      "author": {
        "name": "Cyril Roelandt",
        "email": "tipecaml@gmail.com",
        "time": "Tue Dec 18 14:21:23 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:11 2012 -0800"
      },
      "message": "ceph: fix dentry reference leak in ceph_encode_fh()\n\ndput() was not called in the error path.\n\nSigned-off-by: Cyril Roelandt \u003ctipecaml@gmail.com\u003e\nCc: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "965c8e59cfcf845ecde2265a1d1bfee5f011d302",
      "tree": "22758a99b4ecb475750966d5202200dc0e89876c",
      "parents": [
        "c0f041602c33bae10b8e321c49024490d03ced3d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Dec 17 15:59:39 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:12 2012 -0800"
      },
      "message": "lseek: the \"whence\" argument is called \"whence\"\n\nBut the kernel decided to call it \"origin\" instead.  Fix most of the\nsites.\n\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8884d53dd63b1d9315b343564fcbe1ede004a99e",
      "tree": "9826a8ce6cac8b7c1b0fe27ca50a81572d69c59c",
      "parents": [
        "0e5e1774a92e6fe9c511585de8f078b4c4c68dbb"
      ],
      "author": {
        "name": "David Zafman",
        "email": "david.zafman@inktank.com",
        "time": "Mon Dec 03 19:14:05 2012 -0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Dec 13 08:13:09 2012 -0600"
      },
      "message": "libceph: Unlock unprocessed pages in start_read() error path\n\nFunction start_read() can get an error before processing all pages.\nIt must not only release the remaining pages, but unlock them too.\n\nThis fixes http://tracker.newdream.net/issues/3370\n\nSigned-off-by: David Zafman \u003cdavid.zafman@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "0e5e1774a92e6fe9c511585de8f078b4c4c68dbb",
      "tree": "afae65bdcf42f8eddbd906c4038c6c67249b626b",
      "parents": [
        "a85f50b6ef93fbbb2ae932ce9b2376509d172796"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Mon Nov 19 10:49:09 2012 +0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Dec 13 08:13:08 2012 -0600"
      },
      "message": "ceph: call handle_cap_grant() for cap import message\n\nIf client sends cap message that requests new max size during\nexporting caps, the exporting MDS will drop the message quietly.\nSo the client may wait for the reply that updates the max size\nforever. call handle_cap_grant() for cap import message can\navoid this issue.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "a85f50b6ef93fbbb2ae932ce9b2376509d172796",
      "tree": "eaf774cd7757f1187a8e8201e28fdf8f2e183170",
      "parents": [
        "0685235ffd9dbdb9ccbda587f8a3c83ad1d5a921"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Mon Nov 19 10:49:08 2012 +0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Dec 13 08:13:08 2012 -0600"
      },
      "message": "ceph: Fix __ceph_do_pending_vmtruncate\n\nwe should set i_truncate_pending to 0 after page cache is truncated\nto i_truncate_size\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "0685235ffd9dbdb9ccbda587f8a3c83ad1d5a921",
      "tree": "3a8e52d05e8e2f6ef5a270369c460588452a8f33",
      "parents": [
        "ed75ec2cd19b47efcd292b6e23f58e56f4c5bc34"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Mon Nov 19 10:49:07 2012 +0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Dec 13 08:13:08 2012 -0600"
      },
      "message": "ceph: Don\u0027t add dirty inode to dirty list if caps is in migration\n\nAdd dirty inode to cap_dirty_migrating list instead, this can avoid\nceph_flush_dirty_caps() entering infinite loop.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "ed75ec2cd19b47efcd292b6e23f58e56f4c5bc34",
      "tree": "570f74b490afdbe623785124ec3186ae5a012d53",
      "parents": [
        "5e62ad30157d0da04cf40c6d1a2f4bc840948b9c"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Mon Nov 19 10:49:06 2012 +0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Dec 13 08:13:07 2012 -0600"
      },
      "message": "ceph: Fix infinite loop in __wake_requests\n\n__wake_requests() will enter infinite loop if we use it to wake\nrequests in the session-\u003es_waiting list. __wake_requests() deletes\nrequests from the list and __do_request() adds requests back to\nthe list.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "5e62ad30157d0da04cf40c6d1a2f4bc840948b9c",
      "tree": "4df421054149b1b90f844e4d39efd56e2ed9671a",
      "parents": [
        "d2cc4dde9206aa2c7fb237aa689d3277cc070547"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Mon Nov 19 10:49:04 2012 +0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Dec 13 08:13:07 2012 -0600"
      },
      "message": "ceph: Don\u0027t update i_max_size when handling non-auth cap\n\nThe cap from non-auth mds doesn\u0027t have a meaningful max_size value.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "d2cc4dde9206aa2c7fb237aa689d3277cc070547",
      "tree": "8e0c48be01ac4bd07c19a526a08fbb30c6bac11b",
      "parents": [
        "83aff95eb9d60aff5497e9f44a2ae906b86d8e88"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Thu Nov 29 08:37:03 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Dec 13 08:13:07 2012 -0600"
      },
      "message": "bdi_register: add __printf verification, fix arg mismatch\n\n__printf is useful to verify format and arguments.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "83aff95eb9d60aff5497e9f44a2ae906b86d8e88",
      "tree": "b191a3640990e4b7cc13b2db423449b90086f71b",
      "parents": [
        "cfc84c9f73ab8a6933bd4f36efac1196cddad581"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Nov 28 12:28:24 2012 -0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Dec 13 08:13:06 2012 -0600"
      },
      "message": "libceph: remove \u0027osdtimeout\u0027 option\n\nThis would reset a connection with any OSD that had an outstanding\nrequest that was taking more than N seconds.  The idea was that if the\nOSD was buggy, the client could compensate by resending the request.\n\nIn reality, this only served to hide server bugs, and we haven\u0027t\nactually seen such a bug in quite a while.  Moreover, the userspace\nclient code never did this.\n\nMore importantly, often the request is taking a long time because the\nOSD is trying to recover, or overloaded, and killing the connection\nand retrying would only make the situation worse by giving the OSD\nmore work to do.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "cfc84c9f73ab8a6933bd4f36efac1196cddad581",
      "tree": "94992a63a3abcf3a04eb2340d895470fb402d663",
      "parents": [
        "22cddde104d715600a4c218bf9224923208afe90"
      ],
      "author": {
        "name": "Cyril Roelandt",
        "email": "tipecaml@gmail.com",
        "time": "Tue Nov 20 10:23:07 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Dec 13 08:13:06 2012 -0600"
      },
      "message": "ceph: fix dentry reference leak in ceph_encode_fh().\n\ndput() was not called in the error path.\n\nSigned-off-by: Cyril Roelandt \u003ctipecaml@gmail.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "22cddde104d715600a4c218bf9224923208afe90",
      "tree": "82fc93d9c89ef41145e52ace63484047e600f866",
      "parents": [
        "4d1d0534f53863108fdea496288cb3310f88118d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Nov 05 11:07:23 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Nov 05 11:07:23 2012 -0800"
      },
      "message": "ceph: Fix i_size update race\n\nceph_aio_write() has an optimization that marks cap EPH_CAP_FILE_WR\ndirty before data is copied to page cache and inode size is updated.\nIf ceph_check_caps() flushes the dirty cap before the inode size is\nupdated, MDS can miss the new inode size. The fix is move\nceph_{get,put}_cap_refs() into ceph_write_{begin,end}() and call\n__ceph_mark_dirty_caps() after inode size is updated.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "4d1d0534f53863108fdea496288cb3310f88118d",
      "tree": "121d1743f106900abb416d73c0bdc4c28bc94dcc",
      "parents": [
        "9e15b77d9af3b63dfbff14e695336dfca88c22b2"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Sat Nov 03 10:32:37 2012 +0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Sun Nov 04 03:08:24 2012 -0800"
      },
      "message": "ceph: Hold caps_list_lock when adjusting caps_{use, total}_count\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "35fd3dc58da675d659513384221349ef90749a01",
      "tree": "2ee64e48f39c0c14d454d57a8af022af9e977dd4",
      "parents": [
        "6b0cb4eef7bdaa27b8021ea81813fba330a2d94d",
        "52eb5a900a9863a8b77a895f770e5d825c8e02c6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 29 08:49:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 29 08:49:25 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull Ceph fixes form Sage Weil:\n \"There are two fixes in the messenger code, one that can trigger a NULL\n  dereference, and one that error in refcounting (extra put).  There is\n  also a trivial fix that in the fs client code that is triggered by NFS\n  reexport.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: fix dentry reference leak in encode_fh()\n  libceph: avoid NULL kref_put when osd reset races with alloc_msg\n  rbd: reset BACKOFF if unable to re-queue\n"
    },
    {
      "commit": "52eb5a900a9863a8b77a895f770e5d825c8e02c6",
      "tree": "91e120e6a3625b6bb8db3cc71af8c622d9a94b7b",
      "parents": [
        "9bd952615a42d7e2ce3fa2c632e808e804637a1a"
      ],
      "author": {
        "name": "David Zafman",
        "email": "david.zafman@inktank.com",
        "time": "Thu Oct 18 14:01:43 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Oct 29 08:17:10 2012 -0700"
      },
      "message": "ceph: fix dentry reference leak in encode_fh()\n\nCall to d_find_alias() needs a corresponding dput()\n\nThis fixes http://tracker.newdream.net/issues/3271\n\nSigned-off-by: David Zafman \u003cdavid.zafman@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "b000056a5a8d3f5a4a9fb80184a7ec14f86a43d4",
      "tree": "90129038f11ab2c0e35e670d7682ff8bac2aebea",
      "parents": [
        "7246240c7c186542f73af4fadc744d66440f616f"
      ],
      "author": {
        "name": "David Zafman",
        "email": "david.zafman@inktank.com",
        "time": "Thu Oct 25 10:23:46 2012 -0700"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Oct 26 16:35:07 2012 -0500"
      },
      "message": "ceph: Fix NULL ptr crash in strlen()\n\nset_request_path_attr() checks for NULL ptr before calling strlen()\n\nThis fixes http://tracker.newdream.net/issues/3404\n\nSigned-off-by: David Zafman \u003cdavid.zafman@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "0f9831a89310cebba52d3f526e6cc5c2e403e6f1",
      "tree": "0352d9dbe02f87b77c7c8d8dbde0557ee022c016",
      "parents": [
        "35152979e6181b1fbb4b61c3ff641c14df53ad66"
      ],
      "author": {
        "name": "David Zafman",
        "email": "david.zafman@inktank.com",
        "time": "Thu Oct 18 14:01:43 2012 -0700"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Oct 26 16:34:53 2012 -0500"
      },
      "message": "ceph: fix dentry reference leak in encode_fh()\n\nCall to d_find_alias() needs a corresponding dput()\n\nThis fixes http://tracker.newdream.net/issues/3271\n\nSigned-off-by: David Zafman \u003cdavid.zafman@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "35c2a7f4908d404c9124c2efc6ada4640ca4d5d5",
      "tree": "4ef3fa1953b939fb4bfff935b3d351f76d97252b",
      "parents": [
        "8e22cc88d68ca1a46d7d582938f979eb640ed30f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Sun Oct 07 20:32:51 2012 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:55 2012 -0400"
      },
      "message": "tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking\n\nFuzzing with trinity oopsed on the 1st instruction of shmem_fh_to_dentry(),\n\tu64 inum \u003d fid-\u003eraw[2];\nwhich is unhelpfully reported as at the end of shmem_alloc_inode():\n\nBUG: unable to handle kernel paging request at ffff880061cd3000\nIP: [\u003cffffffff812190d0\u003e] shmem_alloc_inode+0x40/0x40\nOops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC\nCall Trace:\n [\u003cffffffff81488649\u003e] ? exportfs_decode_fh+0x79/0x2d0\n [\u003cffffffff812d77c3\u003e] do_handle_open+0x163/0x2c0\n [\u003cffffffff812d792c\u003e] sys_open_by_handle_at+0xc/0x10\n [\u003cffffffff83a5f3f8\u003e] tracesys+0xe1/0xe6\n\nRight, tmpfs is being stupid to access fid-\u003eraw[2] before validating that\nfh_len includes it: the buffer kmalloc\u0027ed by do_sys_name_to_handle() may\nfall at the end of a page, and the next page not be present.\n\nBut some other filesystems (ceph, gfs2, isofs, reiserfs, xfs) are being\ncareless about fh_len too, in fh_to_dentry() and/or fh_to_parent(), and\ncould oops in the same way: add the missing fh_len checks to those.\n\nReported-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Sage Weil \u003csage@inktank.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0b173bc4daa8f8ec03a85abf5e47b23502ff80af",
      "tree": "173d0523555e02a077e0af4563bd4cadea46cb23",
      "parents": [
        "4b6e1e37026ec7dae9b23d78ffcebdd5ddb1bfa1"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Mon Oct 08 16:28:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:17 2012 +0900"
      },
      "message": "mm: kill vma flag VM_CAN_NONLINEAR\n\nMove actual pte filling for non-linear file mappings into the new special\nvma operation: -\u003eremap_pages().\n\nFilesystems must implement this method to get non-linear mapping support,\nif it uses filemap_fault() then generic_file_remap_pages() can be used.\n\nNow device drivers can implement this method and obtain nonlinear vma support.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\t#arch/tile\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: James Morris \u003cjames.l.morris@oracle.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Kentaro Takeda \u003ctakedakn@nttdata.co.jp\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Venkatesh Pallipadi \u003cvenki@google.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7035cdf36d5c4d913f68ff97e1c2e5603500d946",
      "tree": "eee5680c16771cb23bc6d3a47bc7b6f350171b22",
      "parents": [
        "6432f2128414edbea5fd4f6c4fa4c28d0e1c6151",
        "6285bc231277419255f3498d3eb5ddc9f8e7fe79"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 08 06:38:18 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 08 06:38:18 2012 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull ceph updates from Sage Weil:\n \"The bulk of this pull is a series from Alex that refactors and cleans\n  up the RBD code to lay the groundwork for supporting the new image\n  format and evolving feature set.  There are also some cleanups in\n  libceph, and for ceph there\u0027s fixed validation of file striping\n  layouts and a bugfix in the code handling a shrinking MDS cluster.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (71 commits)\n  ceph: avoid 32-bit page index overflow\n  ceph: return EIO on invalid layout on GET_DATALOC ioctl\n  rbd: BUG on invalid layout\n  ceph: propagate layout error on osd request creation\n  libceph: check for invalid mapping\n  ceph: convert to use le32_add_cpu()\n  ceph: Fix oops when handling mdsmap that decreases max_mds\n  rbd: update remaining header fields for v2\n  rbd: get snapshot name for a v2 image\n  rbd: get the snapshot context for a v2 image\n  rbd: get image features for a v2 image\n  rbd: get the object prefix for a v2 rbd image\n  rbd: add code to get the size of a v2 rbd image\n  rbd: lay out header probe infrastructure\n  rbd: encapsulate code that gets snapshot info\n  rbd: add an rbd features field\n  rbd: don\u0027t use index in __rbd_add_snap_dev()\n  rbd: kill create_snap sysfs entry\n  rbd: define rbd_dev_image_id()\n  rbd: define some new format constants\n  ...\n"
    },
    {
      "commit": "6285bc231277419255f3498d3eb5ddc9f8e7fe79",
      "tree": "cfed533859b1e07896aea7d199716ef4d2704ad4",
      "parents": [
        "457712a0bc5389b75d2c93840a684fd77df2aabb"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Oct 02 10:25:51 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Oct 03 10:51:18 2012 -0500"
      },
      "message": "ceph: avoid 32-bit page index overflow\n\nA pgoff_t is defined (by default) to have type (unsigned long).  On\narchitectures such as i686 that\u0027s a 32-bit type.  The ceph address\nspace code was attempting to produce 64 bit offsets by shifting a\npage\u0027s index by PAGE_CACHE_SHIFT, but the result was not what was\ndesired because the shift occurred before the result got promoted\nto 64 bits.\n\nFix this by converting all uses of page-\u003eindex used in this way to\nuse the page_offset() macro, which ensures the 64-bit result has the\nintended value.\n\nThis fixes http://tracker.newdream.net/issues/3112\n\nReported-by:  Mohamed Pakkeer \u003cpakkeer.mohideen@realimage.com\u003e\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "457712a0bc5389b75d2c93840a684fd77df2aabb",
      "tree": "465703170a567b747a1e642a6a80332e0bdbf1f1",
      "parents": [
        "6cae3717cddaf8e5e96e304733dca66e40d56f89"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Sep 24 21:04:57 2012 -0700"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Oct 03 10:51:17 2012 -0500"
      },
      "message": "ceph: return EIO on invalid layout on GET_DATALOC ioctl\n\nIf the user calls GET_DATALOC on a file with an invalid (e.g.,\nzeroed) layout, return EIO to userland.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "8c0a85377048b64c880e76ec7368904fe46d0b94",
      "tree": "12e075f4159e88b09a89e35866017f82f80bcc7d",
      "parents": [
        "99621b44aa194eab594e1f17217231c02b519211"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill.shutemov@linux.intel.com",
        "time": "Wed Sep 26 11:33:07 2012 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 02 21:35:55 2012 -0400"
      },
      "message": "fs: push rcu_barrier() from deactivate_locked_super() to filesystems\n\nThere\u0027s no reason to call rcu_barrier() on every\ndeactivate_locked_super().  We only need to make sure that all delayed rcu\nfree inodes are flushed before we destroy related cache.\n\nRemoving rcu_barrier() from deactivate_locked_super() affects some fast\npaths.  E.g.  on my machine exit_group() of a last process in IPC\nnamespace takes 0.07538s.  rcu_barrier() takes 0.05188s of that time.\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6816282dab3a72efe8c0d182c1bc2960d87f4322",
      "tree": "c36cea753185ad22b073d41a1e5e5dbe56a928a1",
      "parents": [
        "d63b77f4c552cc3a20506871046ab0fcbc332609"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Sep 24 21:01:02 2012 -0700"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Oct 01 17:20:00 2012 -0500"
      },
      "message": "ceph: propagate layout error on osd request creation\n\nIf we are creating an osd request and get an invalid layout, return\nan EINVAL to the caller.  We switch up the return to have an error\ncode instead of NULL implying -ENOMEM.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "b905a7f8b7a61c192927d0324f2ea6c998f451ba",
      "tree": "6a3345523a8c96dc150987fa5c3826339d37c9e2",
      "parents": [
        "3e8f43a089f06279c5f76a9ccd42578eebf7bfa5"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Fri Sep 28 12:59:16 2012 +0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Oct 01 14:30:54 2012 -0500"
      },
      "message": "ceph: convert to use le32_add_cpu()\n\nConvert cpu_to_le32(le32_to_cpu(E1) + E2) to use le32_add_cpu().\n\ndpatch engine is used to auto generate this patch.\n(https://github.com/weiyj/dpatch)\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "3e8f43a089f06279c5f76a9ccd42578eebf7bfa5",
      "tree": "5b208f18d8a3031b21ed379bca471dbf2fdb0e47",
      "parents": [
        "6e14b1a6c3b8d7e48ece68733d2dac0464611ee4"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Thu Sep 20 17:42:25 2012 +0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Oct 01 14:30:54 2012 -0500"
      },
      "message": "ceph: Fix oops when handling mdsmap that decreases max_mds\n\nWhen i \u003e\u003d newmap-\u003em_max_mds, ceph_mdsmap_get_addr(newmap, i) return\nNULL. Passing NULL to memcmp() triggers oops.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "c98f533c9497e285109a047bfb955d683f33f7e4",
      "tree": "2f47418cd404a20351beedadb1b2712302bbd6fc",
      "parents": [
        "4156d998409be065aa8141b6bd2c6f18be1b21e9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Aug 09 10:33:26 2012 -0700"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Oct 01 14:30:49 2012 -0500"
      },
      "message": "ceph: let path portion of mount \"device\" be optional\n\nA recent change to /sbin/mountall causes any trailing \u0027/\u0027 character\nin the \"device\" (or fs_spec) field in /etc/fstab to be stripped.  As\na result, an entry for a ceph mount that intends to mount the root\nof the name space ends up with now path portion, and the ceph mount\noption processing code rejects this.\n\nThat is, an entry in /etc/fstab like:\n    cephserver:port:/ /mnt ceph defaults 0 0\nprovides to the ceph code just \"cephserver:port:\" as the \"device,\"\nand that gets rejected.\n\nAlthough this is a bug in /sbin/mountall, we can have the ceph mount\ncode support an empty/nonexistent path, interpreting it to mean the\nroot of the name space.\n\nRFC 5952 offers recommendations for how to express IPv6 addresses,\nand recommends the usage found in RFC 3986 (which specifies the\nformat for URI\u0027s) for representing both IPv4 and IPv6 addresses that\ninclude port numbers.  (See in particular the definition of\n\"authority\" found in the Appendix of RFC 3986.)\n\nAccording to those standards, no host specification will ever\ncontain a \u0027/\u0027 character.  As a result, it is sufficient to scan a\nprovided \"device\" from an /etc/fstab entry for the first \u0027/\u0027\ncharacter, and if it\u0027s found, treat that as the beginning of the\npath.  If no \u0027/\u0027 character is present, we can treat the entire\nstring as the monitor host specification(s), and assume the path\nto be the root of the name space.  We\u0027ll still require a \u0027:\u0027 to\nseparate the host portion from the (possibly empty) path portion.\n\nThis means that we can more formally define how ceph will interpret\nthe \"device\" it\u0027s provided when processing a mount request:\n\n    \"device\" will look like:\n        \u003cserver_spec\u003e[,\u003cserver_spec\u003e...]:[\u003cpath\u003e]\n    where\n        \u003cserver_spec\u003e is \u003cip\u003e[:\u003cport\u003e]\n        \u003cpath\u003e is optional, but if present must begin with \u0027/\u0027\n\nThis addresses http://tracker.newdream.net/issues/2919\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Dan Mick \u003cdan.mick@inktank.com\u003e\n"
    },
    {
      "commit": "2744c171dbaa0b1ec7639e7d0ff817fba9461a38",
      "tree": "7bf6b1da5b98cd7bd4e95554d442eff52937cabf",
      "parents": [
        "3a8ca1b6bf7069338e266082479f2f632c29afb3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:41:05 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 22:20:20 2012 -0400"
      },
      "message": "ceph: don\u0027t abuse d_delete() on failure exits\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "45f2e081f573526977abfa781a12728f83e9641f",
      "tree": "0335f7ad27ed8506504201a5e558126b2ede058f",
      "parents": [
        "6d4221b53707486dfad3f5bfe568d2ce7f4c9863"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Tue Aug 21 12:11:51 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Tue Aug 21 15:55:28 2012 -0700"
      },
      "message": "ceph: avoid divide by zero in __validate_layout()\n\nIf \"l-\u003estripe_unit\" is zero the the mod on the next line will cause a\ndivide by zero bug.  This comes from the copy_from_user() in\nceph_ioctl_set_layout_policy().  Passing 0 is valid, though (it means\n\"do not change\") so avoid the % check in that case.\n\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "6c5e50fa614fea5325a2973be06f7ec6f1055316",
      "tree": "8732b96150e315ab711bfcccbaeef8b087af6e62",
      "parents": [
        "d1c338a509cea5378df59629ad47382810c38623"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Tue Aug 21 15:55:25 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Tue Aug 21 15:55:25 2012 -0700"
      },
      "message": "ceph: tolerate (and warn on) extraneous dentry from mds\n\nIf the MDS gives us a dentry and we weren\u0027t prepared to handle it,\nWARN_ON_ONCE instead of crashing.\n\nReported-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "d1c338a509cea5378df59629ad47382810c38623",
      "tree": "da12e11b8ae0df8ae424d1cef0d98eac095e2268",
      "parents": [
        "6dab7ede9390d4d937cb89feca932e4fd575d2da"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Sun Aug 19 12:29:16 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Aug 20 10:03:15 2012 -0700"
      },
      "message": "libceph: delay debugfs initialization until we learn global_id\n\nThe debugfs directory includes the cluster fsid and our unique global_id.\nWe need to delay the initialization of the debug entry until we have\nlearned both the fsid and our global_id from the monitor or else the\nsecond client can\u0027t create its debugfs entry and will fail (and multiple\nclient instances aren\u0027t properly reflected in debugfs).\n\nReported by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\n"
    },
    {
      "commit": "5ef50c3bec20060bc114f62d6503c5d86d70bdd7",
      "tree": "0777f7c9bef358fe7778e11874a6a750e0d2ceab",
      "parents": [
        "1a9b4993b70fb1884716902774dc9025b457760d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Tue Jul 31 11:27:36 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Thu Aug 02 09:11:19 2012 -0700"
      },
      "message": "ceph: simplify+fix atomic_open\n\nThe initial -\u003eatomic_open op was carried over from the old intent code,\nwhich was incomplete and didn\u0027t really work.  Replace it with a fresh\nmethod.  In particular:\n\n * always attempt to do an atomic open+lookup, both for the create case\n   and for lookups of existing files.\n * fix symlink handling by returning 1 to the VFS so that we can follow\n   the link to its destination. This fixes a longstanding ceph bug (#2392).\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "a0e881b7c189fa2bd76c024dbff91e79511c971d",
      "tree": "0c801918565b08921d21aceee5b326f64d998f5f",
      "parents": [
        "eff0d13f3823f35d70228cd151d2a2c89288ff32",
        "dbc6e0222d79e78925fe20733844a796a4b72cf9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 10:26:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 10:26:23 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull second vfs pile from Al Viro:\n \"The stuff in there: fsfreeze deadlock fixes by Jan (essentially, the\n  deadlock reproduced by xfstests 068), symlink and hardlink restriction\n  patches, plus assorted cleanups and fixes.\n\n  Note that another fsfreeze deadlock (emergency thaw one) is *not*\n  dealt with - the series by Fernando conflicts a lot with Jan\u0027s, breaks\n  userland ABI (FIFREEZE semantics gets changed) and trades the deadlock\n  for massive vfsmount leak; this is going to be handled next cycle.\n  There probably will be another pull request, but that stuff won\u0027t be\n  in it.\"\n\nFix up trivial conflicts due to unrelated changes next to each other in\ndrivers/{staging/gdm72xx/usb_boot.c, usb/gadget/storage_common.c}\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (54 commits)\n  delousing target_core_file a bit\n  Documentation: Correct s_umount state for freeze_fs/unfreeze_fs\n  fs: Remove old freezing mechanism\n  ext2: Implement freezing\n  btrfs: Convert to new freezing mechanism\n  nilfs2: Convert to new freezing mechanism\n  ntfs: Convert to new freezing mechanism\n  fuse: Convert to new freezing mechanism\n  gfs2: Convert to new freezing mechanism\n  ocfs2: Convert to new freezing mechanism\n  xfs: Convert to new freezing code\n  ext4: Convert to new freezing mechanism\n  fs: Protect write paths by sb_start_write - sb_end_write\n  fs: Skip atime update on frozen filesystem\n  fs: Add freezing handling to mnt_want_write() / mnt_drop_write()\n  fs: Improve filesystem freezing handling\n  switch the protection of percpu_counter list to spinlock\n  nfsd: Push mnt_want_write() outside of i_mutex\n  btrfs: Push mnt_want_write() outside of i_mutex\n  fat: Push mnt_want_write() outside of i_mutex\n  ...\n"
    },
    {
      "commit": "cc8362b1f6d724e46f515121d442779924b19fec",
      "tree": "86fb5c3767e538ec9ded57dd7b3ce5d69dcde691",
      "parents": [
        "2e3ee613480563a6d5c01b57d342e65cc58c06df",
        "1fe5e9932156f6122c3b1ff6ba7541c27c86718c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 14:35:28 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 14:35:28 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull Ceph changes from Sage Weil:\n \"Lots of stuff this time around:\n\n   - lots of cleanup and refactoring in the libceph messenger code, and\n     many hard to hit races and bugs closed as a result.\n   - lots of cleanup and refactoring in the rbd code from Alex Elder,\n     mostly in preparation for the layering functionality that will be\n     coming in 3.7.\n   - some misc rbd cleanups from Josh Durgin that are finally going\n     upstream\n   - support for CRUSH tunables (used by newer clusters to improve the\n     data placement)\n   - some cleanup in our use of d_parent that Al brought up a while back\n   - a random collection of fixes across the tree\n\n  There is another patch coming that fixes up our -\u003eatomic_open()\n  behavior, but I\u0027m going to hammer on it a bit more before sending it.\"\n\nFix up conflicts due to commits that were already committed earlier in\ndrivers/block/rbd.c, net/ceph/{messenger.c, osd_client.c}\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (132 commits)\n  rbd: create rbd_refresh_helper()\n  rbd: return obj version in __rbd_refresh_header()\n  rbd: fixes in rbd_header_from_disk()\n  rbd: always pass ops array to rbd_req_sync_op()\n  rbd: pass null version pointer in add_snap()\n  rbd: make rbd_create_rw_ops() return a pointer\n  rbd: have __rbd_add_snap_dev() return a pointer\n  libceph: recheck con state after allocating incoming message\n  libceph: change ceph_con_in_msg_alloc convention to be less weird\n  libceph: avoid dropping con mutex before fault\n  libceph: verify state after retaking con lock after dispatch\n  libceph: revoke mon_client messages on session restart\n  libceph: fix handling of immediate socket connect failure\n  ceph: update MAINTAINERS file\n  libceph: be less chatty about stray replies\n  libceph: clear all flags on con_close\n  libceph: clean up con flags\n  libceph: replace connection state bits with states\n  libceph: drop unnecessary CLOSED check in socket state change callback\n  libceph: close socket directly from ceph_con_close()\n  ...\n"
    },
    {
      "commit": "aa711ee3402ad10ffd5b70ce0417fadc9a95cccf",
      "tree": "2400f84b9bc87fbd989844c4e2462809f69e9a96",
      "parents": [
        "bd919d45aa61c19d9ed82548d6deb06bcae31153"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jul 13 20:35:11 2012 -0500"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 18:15:47 2012 -0700"
      },
      "message": "ceph: define snap counts as u32 everywhere\n\nThere are two structures in which a count of snapshots are\nmaintained:\n\n    struct ceph_snap_context {\n\t...\n        u32 num_snaps;\n\t...\n    }\nand\n    struct ceph_snap_realm {\n\t...\n        u32 num_prior_parent_snaps;   /*  had prior to parent_since */\n\t...\n        u32 num_snaps;\n\t...\n    }\n\nThese fields never take on negative values (e.g., to hold special\nmeaning), and so are really inherently unsigned.  Furthermore they\ntake their value from over-the-wire or on-disk formatted 32-bit\nvalues.\n\nSo change their definition to have type u32, and change some spots\nelsewhere in the code to account for this change.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "21ec6ffa46719a4ed45531b5b01014c26f0416c4",
      "tree": "cbdfa66b0b8c6dbe7911eab10e94ba0c21a50abd",
      "parents": [
        "85effe183dd45854d1ad1a370b88cddb403c4c91"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@linux.intel.com",
        "time": "Fri Jul 20 08:18:36 2012 -0500"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 18:15:35 2012 -0700"
      },
      "message": "ceph: fix potential double free\n\nWe re-run the loop but we don\u0027t re-set the attrs pointer back to NULL.\n\nSigned-off-by: Alan Cox \u003calan@linux.intel.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "a53aab645c82f0146e35684b34692c69b5118121",
      "tree": "c066e9d7a670af46a2282d88c4a8a51912a98c7c",
      "parents": [
        "a4107026976f06c9a6ce8cc84a763564ee39d901"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 16:21:17 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 18:15:32 2012 -0700"
      },
      "message": "ceph: close old con before reopening on mds reconnect\n\nWhen we detect a mds session reset, close the old ceph_connection before\nreopening it.  This ensures we clean up the old socket properly and keep\nthe ceph_connection state correct.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\n"
    },
    {
      "commit": "1fe60e51a3744528f3939b1b1167ca909133d9ae",
      "tree": "06ca8731f1be425ffbd6ffcdfd9e94b89b05ceec",
      "parents": [
        "d1f57ea66369b5c34bd42f104b8070db409447f9"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 16:23:22 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 16:23:22 2012 -0700"
      },
      "message": "libceph: move feature bits to separate header\n\nThis is simply cleanup that will keep things more closely synced with the\nuserland code.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\n"
    },
    {
      "commit": "3ca9c3bd8a55956bee291cda5b224f737b0d0cfe",
      "tree": "ae2779a8443715566dfe990b17225b37555afc0d",
      "parents": [
        "5e8830dc85d0a6258132977381430b327cf553f2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 12 16:20:24 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 31 01:02:45 2012 +0400"
      },
      "message": "ceph: Push file_update_time() into ceph_page_mkwrite()\n\nCC: Sage Weil \u003csage@newdream.net\u003e\nCC: ceph-devel@vger.kernel.org\nAcked-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8842b3be96c376f174ae0d4f282d14728ad5febf",
      "tree": "aa7b7380285d7806c4e2a6a1080a169e379505d3",
      "parents": [
        "a2a3258417eb6a1799cf893350771428875a8287"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Thu Jun 07 13:43:35 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Jul 30 09:29:54 2012 -0700"
      },
      "message": "ceph: clean up useless d_parent checks\n\nd_parent is never NULL, and IS_ROOT() is the proper way to check for a\n(non-self-referential) parent.\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "9249e17fe094d853d1ef7475dd559a2cc7e23d42",
      "tree": "fa80a6044c14b38994d232c0e05cb7365800adf2",
      "parents": [
        "f015f1267b23d3530d3f874243fb83cb5f443005"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jun 25 12:55:37 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:38:34 2012 +0400"
      },
      "message": "VFS: Pass mount flags to sget()\n\nPass mount flags to sget() so that it can use them in initialising a new\nsuperblock before the set function is called.  They could also be passed to the\ncompare function.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebfc3b49a7ac25920cb5be5445f602e51d2ea559",
      "tree": "c3241f875dd04ab9f63b4e7ded7ed206e4df1b9f",
      "parents": [
        "72bd866a01fc62ccbc466f3eb7599b14c937e96b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 18:05:36 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:47 2012 +0400"
      },
      "message": "don\u0027t pass nameidata to -\u003ecreate()\n\nboolean \"does it have to be exclusive?\" flag is passed instead;\nLocal filesystem should just ignore it - the object is guaranteed\nnot to be there yet.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b",
      "tree": "d44be476ced0317ae79f28853734ebe2210ad38e",
      "parents": [
        "201f956e43d4542723514e024d948011dd766d43"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 17:13:09 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:32 2012 +0400"
      },
      "message": "stop passing nameidata to -\u003elookup()\n\nJust the flags; only NFS cares even about that, but there are\nlegitimate uses for such argument.  And getting rid of that\ncompletely would require splitting -\u003elookup() into a couple\nof methods (at least), so let\u0027s leave that alone for now...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0b728e1911cbe6e24020727c3870628b9653f32a",
      "tree": "cd975921b28300d62f3aca2fc37eef28af89b959",
      "parents": [
        "fa3c56bbda6c2ac2a57d96ba501dbe85cccd312b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 16:03:43 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:14 2012 +0400"
      },
      "message": "stop passing nameidata * to -\u003ed_revalidate()\n\nJust the lookup flags.  Die, bastard, die...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e45198a6ac24bd2c4ad4a43b670c2f1a23dd2df3",
      "tree": "d44f4217a8a556ac9ebb11cfc41c0e148fb1084c",
      "parents": [
        "2675a4eb6a9f1240098721c8a84ede28abd9d7b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 06:48:09 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:45 2012 +0400"
      },
      "message": "make finish_no_open() return int\n\nnamely, 1 ;-)  That\u0027s what we want to return from -\u003eatomic_open()\ninstances after finish_no_open().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "30d904947459cca2beb69e0110716f5248b31f2a",
      "tree": "024e2a913266377d234147b14b7eb37017546173",
      "parents": [
        "a4a3bdd778715999ddfeefdc52ab76254580fa76"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:40:19 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:39 2012 +0400"
      },
      "message": "kill struct opendata\n\nJust pass struct file *.  Methods are happier that way...\nThere\u0027s no need to return struct file * from finish_open() now,\nso let it return int.  Next: saner prototypes for parts in\nnamei.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d95852777bc8ba6b3ad3397d495c5f9dd8ca8383",
      "tree": "96e9d8b1d33c4f6f7b5ba5be0fa4fd8f77c7a67f",
      "parents": [
        "3d8a00d2099ebc6d5a6e95fadaf861709d9919a8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:39:14 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:35 2012 +0400"
      },
      "message": "make -\u003eatomic_open() return int\n\nChange of calling conventions:\nold\t\tnew\nNULL\t\t1\nfile\t\t0\nERR_PTR(-ve)\t-ve\n\nCaller *knows* that struct file *; no need to return it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "47237687d73cbeae1dd7a133c3fc3d7239094568",
      "tree": "1d267d03246f0a16cbff3c8221ee69dd1521f835",
      "parents": [
        "a8277b9baa6268de386529a33061775bc716198b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 05:01:45 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:31 2012 +0400"
      },
      "message": "-\u003eatomic_open() prototype change - pass int * instead of bool *\n\n... and let finish_open() report having opened the file via that sucker.\nNext step: don\u0027t modify od-\u003efilp at all.\n\n[AV: FILE_CREATE was already used by cifs; Miklos\u0027 fix folded]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2d83bde9a16e18eafdc73a3a1f4a8eb110e49672",
      "tree": "04e2277dba94d252f4b74cf1acb728880b606c2e",
      "parents": [
        "3819219b592159725069eb16a7a46f58e4ecef32"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:25 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:16 2012 +0400"
      },
      "message": "ceph: implement i_op-\u003eatomic_open()\n\nAdd an -\u003eatomic_open implementation which replaces the atomic lookup+open+create\noperation implemented via -\u003elookup and -\u003ecreate operations.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3819219b592159725069eb16a7a46f58e4ecef32",
      "tree": "607b9fa882ab1f1220aa6576b1436b5bc545c41e",
      "parents": [
        "d2c127197dfc0b2bae62a52e1e0d3e3ff493919e"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:24 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:16 2012 +0400"
      },
      "message": "ceph: remove unused arg from ceph_lookup_open()\n\nWhat was the purpose of this?\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b7a9e5dd40f17a48a72f249b8bbc989b63bae5fd",
      "tree": "f4951e53776e2ec45f9b539b786be67c8a7f42a2",
      "parents": [
        "261030215d970c62f799e6e508e3c68fc7ec2aa9"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Jun 27 12:24:08 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Thu Jul 05 21:14:35 2012 -0700"
      },
      "message": "libceph: set peer name on con_open, not init\n\nThe peer name may change on each open attempt, even when the connection is\nreused.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "61600ef8483924039dcdec8b4717ca32bd3353c6",
      "tree": "3bb61de61e148b7adcae79b978c8b644a2582691",
      "parents": [
        "f40759e7041498577235192727322186b43aa216"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Mon May 28 14:44:30 2012 +0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jun 20 07:43:48 2012 -0500"
      },
      "message": "ceph: check PG_Private flag before accessing page-\u003eprivate\n\nI got lots of NULL pointer dereference Oops when compiling kernel on ceph.\nThe bug is because the kernel page migration routine replaces some pages\nin the page cache with new pages, these new pages\u0027 private can be non-zero.\n\nSigned-off-by: Zheng Yan \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n(cherry picked from commit 28c0254ede13ab575d2df5c6585ed3d4817c3e6b)\n"
    },
    {
      "commit": "9a64e8e0ace51b309fdcff4b4754b3649250382a",
      "tree": "1f0d75c196c5ab0408c55ed6cf3a152f1f921e15",
      "parents": [
        "f3dea7edd3d449fe7a6d402c1ce56a294b985261",
        "f8f5701bdaf9134b1f90e5044a82c66324d2073f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jun 15 12:32:04 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Fri Jun 15 12:32:04 2012 -0700"
      },
      "message": "Merge tag \u0027v3.5-rc1\u0027\n\nLinux 3.5-rc1\n\nConflicts:\n\tnet/ceph/messenger.c\n"
    },
    {
      "commit": "1bfd89f4e6e1adc6a782d94aa5d4c53be1e404d7",
      "tree": "32bbe82e2817619bf16516d8531a2e5b79e2528c",
      "parents": [
        "20581c1faf7b15ae1f8b80c0ec757877b0b53151"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sat May 26 23:26:43 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jun 06 09:23:54 2012 -0500"
      },
      "message": "libceph: fully initialize connection in con_init()\n\nMove the initialization of a ceph connection\u0027s private pointer,\noperations vector pointer, and peer name information into\nceph_con_init().  Rearrange the arguments so the connection pointer\nis first.  Hide the byte-swapping of the peer entity number inside\nceph_con_init()\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "1193755ac6328ad240ba987e6ec41d5e8baf0680",
      "tree": "40bf847d7e3ebaa57b107151d14e6cd1d280cc6d",
      "parents": [
        "4edebed86690eb8db9af3ab85baf4a34e73266cc",
        "0ef97dcfce4179a2eba046b855ee2f91d6f1b414"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs changes from Al Viro.\n \"A lot of misc stuff.  The obvious groups:\n   * Miklos\u0027 atomic_open series; kills the damn abuse of\n     -\u003ed_revalidate() by NFS, which was the major stumbling block for\n     all work in that area.\n   * ripping security_file_mmap() and dealing with deadlocks in the\n     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in\n     general.\n   * -\u003eencode_fh() switched to saner API; insane fake dentry in\n     mm/cleancache.c gone.\n   * assorted annotations in fs (endianness, __user)\n   * parts of Artem\u0027s -\u003es_dirty work (jff2 and reiserfs parts)\n   * -\u003eupdate_time() work from Josef.\n   * other bits and pieces all over the place.\n\n  Normally it would\u0027ve been in two or three pull requests, but\n  signal.git stuff had eaten a lot of time during this cycle ;-/\"\n\nFix up trivial conflicts in Documentation/filesystems/vfs.txt (the\n\u0027truncate_range\u0027 inode method was removed by the VM changes, the VFS\nupdate adds an \u0027update_time()\u0027 method), and in fs/btrfs/ulist.[ch] (due\nto sparse fix added twice, with other changes nearby).\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)\n  nfs: don\u0027t open in -\u003ed_revalidate\n  vfs: retry last component if opening stale dentry\n  vfs: nameidata_to_filp(): don\u0027t throw away file on error\n  vfs: nameidata_to_filp(): inline __dentry_open()\n  vfs: do_dentry_open(): don\u0027t put filp\n  vfs: split __dentry_open()\n  vfs: do_last() common post lookup\n  vfs: do_last(): add audit_inode before open\n  vfs: do_last(): only return EISDIR for O_CREAT\n  vfs: do_last(): check LOOKUP_DIRECTORY\n  vfs: do_last(): make ENOENT exit RCU safe\n  vfs: make follow_link check RCU safe\n  vfs: do_last(): use inode variable\n  vfs: do_last(): inline walk_component()\n  vfs: do_last(): make exit RCU safe\n  vfs: split do_lookup()\n  Btrfs: move over to use -\u003eupdate_time\n  fs: introduce inode operation -\u003eupdate_time\n  reiserfs: get rid of resierfs_sync_super\n  reiserfs: mark the superblock as dirty a bit later\n  ...\n"
    },
    {
      "commit": "15d9882c336db2db73ccf9871ae2398e452f694c",
      "tree": "cfa0c726a69b68f51b344d50114a2961019c1231",
      "parents": [
        "e22004235a900213625acd6583ac913d5a30c155"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sat May 26 23:26:43 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Fri Jun 01 08:37:56 2012 -0500"
      },
      "message": "libceph: embed ceph messenger structure in ceph_client\n\nA ceph client has a pointer to a ceph messenger structure in it.\nThere is always exactly one ceph messenger for a ceph client, so\nthere is no need to allocate it separate from the ceph client\nstructure.\n\nSwitch the ceph_client structure to embed its ceph_messenger\nstructure.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "28c0254ede13ab575d2df5c6585ed3d4817c3e6b",
      "tree": "ec4ea075748189c9be942fb41c70691d21b4d2df",
      "parents": [
        "6bd9adbdf9ca6a052b0b7455ac67b925eb38cfad"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Mon May 28 14:44:30 2012 +0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Fri Jun 01 08:06:29 2012 -0500"
      },
      "message": "ceph: check PG_Private flag before accessing page-\u003eprivate\n\nI got lots of NULL pointer dereference Oops when compiling kernel on ceph.\nThe bug is because the kernel page migration routine replaces some pages\nin the page cache with new pages, these new pages\u0027 private can be non-zero.\n\nSigned-off-by: Zheng Yan \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "08615d7d85e5aa02c05bf6c4dde87d940e7f85f6",
      "tree": "18906149d313d25914160aca21cedf54b3a7e818",
      "parents": [
        "9fdadb2cbaf4b482dfd6086e8bd3d2db071a1702",
        "0a4dd35c67b144d8ef9432120105f1aab9293ee9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:10:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:10:18 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge misc patches from Andrew Morton:\n\n - the \"misc\" tree - stuff from all over the map\n\n - checkpatch updates\n\n - fatfs\n\n - kmod changes\n\n - procfs\n\n - cpumask\n\n - UML\n\n - kexec\n\n - mqueue\n\n - rapidio\n\n - pidns\n\n - some checkpoint-restore feature work.  Reluctantly.  Most of it\n   delayed a release.  I\u0027m still rather worried that we don\u0027t have a\n   clear roadmap to completion for this work.\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (78 patches)\n  kconfig: update compression algorithm info\n  c/r: prctl: add ability to set new mm_struct::exe_file\n  c/r: prctl: extend PR_SET_MM to set up more mm_struct entries\n  c/r: procfs: add arg_start/end, env_start/end and exit_code members to /proc/$pid/stat\n  syscalls, x86: add __NR_kcmp syscall\n  fs, proc: introduce /proc/\u003cpid\u003e/task/\u003ctid\u003e/children entry\n  sysctl: make kernel.ns_last_pid control dependent on CHECKPOINT_RESTORE\n  aio/vfs: cleanup of rw_copy_check_uvector() and compat_rw_copy_check_uvector()\n  eventfd: change int to __u64 in eventfd_signal()\n  fs/nls: add Apple NLS\n  pidns: make killed children autoreap\n  pidns: use task_active_pid_ns in do_notify_parent\n  rapidio/tsi721: add DMA engine support\n  rapidio: add DMA engine support for RIO data transfers\n  ipc/mqueue: add rbtree node caching support\n  tools/selftests: add mq_perf_tests\n  ipc/mqueue: strengthen checks on mqueue creation\n  ipc/mqueue: correct mq_attr_ok test\n  ipc/mqueue: improve performance of send/recv\n  selftests: add mq_open_tests\n  ...\n"
    },
    {
      "commit": "a3860c1c5dd1137db23d7786d284939c5761d517",
      "tree": "48d688c6c391ef45f79bdd60815450ca06c5cc1a",
      "parents": [
        "15837294d4ce717f69942f7366e99d4d1d3d9923"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Thu May 31 16:26:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:26 2012 -0700"
      },
      "message": "introduce SIZE_MAX\n\nULONG_MAX is often used to check for integer overflow when calculating\nallocation size.  While ULONG_MAX happens to work on most systems, there\nis no guarantee that `size_t\u0027 must be the same size as `long\u0027.\n\nThis patch introduces SIZE_MAX, the maximum value of `size_t\u0027, to improve\nportability and readability for allocation size validation.\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nAcked-by: Alex Elder \u003celder@dreamhost.com\u003e\nCc: David Airlie \u003cairlied@linux.ie\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af56e0aa35f3ae2a4c1a6d1000702df1dd78cb76",
      "tree": "304bd85e5db2d07efa2913aa7c6313b918cfbfdb",
      "parents": [
        "65a50c951a38e9827dd9655b6e686bde912e799b",
        "6bd9adbdf9ca6a052b0b7455ac67b925eb38cfad"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 30 11:17:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 30 11:17:19 2012 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull ceph updates from Sage Weil:\n \"There are some updates and cleanups to the CRUSH placement code, a bug\n  fix with incremental maps, several cleanups and fixes from Josh Durgin\n  in the RBD block device code, a series of cleanups and bug fixes from\n  Alex Elder in the messenger code, and some miscellaneous bounds\n  checking and gfp cleanups/fixes.\"\n\nFix up trivial conflicts in net/ceph/{messenger.c,osdmap.c} due to the\nnetworking people preferring \"unsigned int\" over just \"unsigned\".\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (45 commits)\n  libceph: fix pg_temp updates\n  libceph: avoid unregistering osd request when not registered\n  ceph: add auth buf in prepare_write_connect()\n  ceph: rename prepare_connect_authorizer()\n  ceph: return pointer from prepare_connect_authorizer()\n  ceph: use info returned by get_authorizer\n  ceph: have get_authorizer methods return pointers\n  ceph: ensure auth ops are defined before use\n  ceph: messenger: reduce args to create_authorizer\n  ceph: define ceph_auth_handshake type\n  ceph: messenger: check return from get_authorizer\n  ceph: messenger: rework prepare_connect_authorizer()\n  ceph: messenger: check prepare_write_connect() result\n  ceph: don\u0027t set WRITE_PENDING too early\n  ceph: drop msgr argument from prepare_write_connect()\n  ceph: messenger: send banner in process_connect()\n  ceph: messenger: reset connection kvec caller\n  libceph: don\u0027t reset kvec in prepare_write_banner()\n  ceph: ignore preferred_osd field\n  ceph: fully initialize new layout\n  ...\n"
    },
    {
      "commit": "c862868bb455694704c255481369c40d7185eb25",
      "tree": "6b0f0c0a9b252e1f526742bf7cb777b47320e49a",
      "parents": [
        "b0b0382bb4904965a9e9fca77ad87514dfda0d1c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 05 12:07:36 2012 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 29 23:28:33 2012 -0400"
      },
      "message": "ceph: move encode_fh to new API\n\nUse parent_inode has a flag for whether nfsd wants a connectable fh, but\ngenerate one opportunistically so that we can take advantage of the\nadditional info in there.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0b0382bb4904965a9e9fca77ad87514dfda0d1c",
      "tree": "dc46873fa74e0d194e4a2571b16f0767e1919ae8",
      "parents": [
        "6d42e7e9f6d86ed4dfacde75a6cf515068f9749c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 02 14:34:06 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 29 23:28:33 2012 -0400"
      },
      "message": "-\u003eencode_fh() API change\n\npass inode + parent\u0027s inode or NULL instead of dentry + bool saying\nwhether we want the parent or not.\n\nNOTE: that needs ceph fix folded in.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8f43fb53894079bf0caab6e348ceaffe7adc651a",
      "tree": "248ffc7366b569d13049a31e2cb1c88750d45ead",
      "parents": [
        "a3530df33eb91d787d08c7383a0a9982690e42d0"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:13 2012 -0500"
      },
      "message": "ceph: use info returned by get_authorizer\n\nRather than passing a bunch of arguments to be filled in with the\ncontent of the ceph_auth_handshake buffer now returned by the\nget_authorizer method, just use the returned information in the\ncaller, and drop the unnecessary arguments.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "a3530df33eb91d787d08c7383a0a9982690e42d0",
      "tree": "3022fc82ea661654bfca48fae32a7a1584dba1e8",
      "parents": [
        "a255651d4cad89f1a606edd36135af892ada4f20"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:13 2012 -0500"
      },
      "message": "ceph: have get_authorizer methods return pointers\n\nHave the get_authorizer auth_client method return a ceph_auth\npointer rather than an integer, pointer-encoding any returned\nerror value.  This is to pave the way for making use of the\nreturned value in an upcoming patch.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "a255651d4cad89f1a606edd36135af892ada4f20",
      "tree": "6d2c694b336f948272349e5de24be70460a94826",
      "parents": [
        "74f1869f76d043bad12ec03b4d5f04a8c3d1f157"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:13 2012 -0500"
      },
      "message": "ceph: ensure auth ops are defined before use\n\nIn the create_authorizer method for both the mds and osd clients,\nthe auth_client-\u003eops pointer is blindly dereferenced.  There is no\nobvious guarantee that this pointer has been assigned.  And\nfurthermore, even if the ops pointer is non-null there is definitely\nno guarantee that the create_authorizer or destroy_authorizer\nmethods are defined.\n\nAdd checks in both routines to make sure they are defined (non-null)\nbefore use.  Add similar checks in a few other spots in these files\nwhile we\u0027re at it.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "74f1869f76d043bad12ec03b4d5f04a8c3d1f157",
      "tree": "fcce410d255e2660fc82532c70de1b2f60a956c6",
      "parents": [
        "6c4a19158b96ea1fb8acbe0c1d5493d9dcd2f147"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:12 2012 -0500"
      },
      "message": "ceph: messenger: reduce args to create_authorizer\n\nMake use of the new ceph_auth_handshake structure in order to reduce\nthe number of arguments passed to the create_authorizor method in\nceph_auth_client_ops.  Use a local variable of that type as a\nshorthand in the get_authorizer method definitions.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "6c4a19158b96ea1fb8acbe0c1d5493d9dcd2f147",
      "tree": "5fe6418eb57bf4e84f1eda9606a4a045ff08dcba",
      "parents": [
        "ed96af646011412c2bf1ffe860db170db355fae5"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:12 2012 -0500"
      },
      "message": "ceph: define ceph_auth_handshake type\n\nThe definitions for the ceph_mds_session and ceph_osd both contain\nfive fields related only to \"authorizers.\"  Encapsulate those fields\ninto their own struct type, allowing for better isolation in some\nupcoming patches.\n\nFix the #includes in \"linux/ceph/osd_client.h\" to lay out their more\ncomplete canonical path.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "c047be09349752b8a4dac27bc9f130bf4d592f11",
      "tree": "4303e2a712387350031aa9eb91a9ce8f54aef811",
      "parents": [
        "702aeb1f88e707241d76e1e2a1a02dd81e6c2d77"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 14 12:34:50 2012 -0700"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed May 16 14:28:28 2012 -0500"
      },
      "message": "ceph: ignore preferred_osd field\n\nOld users may not expect EINVAL, and there is no clear user-visibile\nbehavior change now that we ignore it.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "702aeb1f88e707241d76e1e2a1a02dd81e6c2d77",
      "tree": "1d605a2109700d5ba4cc6c95f253e6ee3e10a120",
      "parents": [
        "fd51653f78cf40a0516e521b6de22f329c5bad8d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 14 12:34:38 2012 -0700"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed May 16 14:28:27 2012 -0500"
      },
      "message": "ceph: fully initialize new layout\n\nWhen we are setting a new layout, fully initialize the structure:\n - zero it out\n - always set preferred_osd to -1\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "e49bf4c51cbe27439c00516d4297193d45dd4097",
      "tree": "5be5727f0828f74719e7f0783fb1fba829658b47",
      "parents": [
        "3469ac1aa3a2f1e2586a412923c414779a0af854"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:34:35 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:34:35 2012 -0700"
      },
      "message": "ceph: refactor SETLAYOUT and SETDIRLAYOUT ioctl checks into common helper\n\nBoth of these methods perform similar checks; move that code to a helper\nso that we can ensure the checks are consistent.\n\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "3469ac1aa3a2f1e2586a412923c414779a0af854",
      "tree": "b271456518130622e6d394cf50939c132f1a1d0d",
      "parents": [
        "cd9d9f5df6098c50726200d4185e9e8da32785b3"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:33:36 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:33:36 2012 -0700"
      },
      "message": "ceph: drop support for preferred_osd pgs\n\nThis was an ill-conceived feature that has been removed from Ceph.  Do\nthis gracefully:\n\n - reject attempts to specify a preferred_osd via the ioctl\n - stop exposing this information via virtual xattrs\n - always fill in -1 for requests, in case we talk to an older server\n - don\u0027t calculate preferred_osd placements/pgids\n\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "56b59b429b4c26e5e730bc8c3d837de9f7d0a966",
      "tree": "191bf87e438a3985ccb7e3c5382fab8d31f94edb",
      "parents": [
        "9a7259d5c8978bbeb5fdcf64b168f8470d8208a6",
        "c666601a935b94cc0f3310339411b6940de751ba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:01:29 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:01:29 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull Ceph updates for 3.4-rc1 from Sage Weil:\n \"Alex has been busy.  There are a range of rbd and libceph cleanups,\n  especially surrounding device setup and teardown, and a few critical\n  fixes in that code.  There are more cleanups in the messenger code,\n  virtual xattrs, a fix for CRC calculation/checks, and lots of other\n  miscellaneous stuff.\n\n  There\u0027s a patch from Amon Ott to make inos behave a bit better on\n  32-bit boxes, some decode check fixes from Xi Wang, and network\n  throttling fix from Jim Schutt, and a couple RBD fixes from Josh\n  Durgin.\n\n  No new functionality, just a lot of cleanup and bug fixing.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (65 commits)\n  rbd: move snap_rwsem to the device, rename to header_rwsem\n  ceph: fix three bugs, two in ceph_vxattrcb_file_layout()\n  libceph: isolate kmap() call in write_partial_msg_pages()\n  libceph: rename \"page_shift\" variable to something sensible\n  libceph: get rid of zero_page_address\n  libceph: only call kernel_sendpage() via helper\n  libceph: use kernel_sendpage() for sending zeroes\n  libceph: fix inverted crc option logic\n  libceph: some simple changes\n  libceph: small refactor in write_partial_kvec()\n  libceph: do crc calculations outside loop\n  libceph: separate CRC calculation from byte swapping\n  libceph: use \"do\" in CRC-related Boolean variables\n  ceph: ensure Boolean options support both senses\n  libceph: a few small changes\n  libceph: make ceph_tcp_connect() return int\n  libceph: encapsulate some messenger cleanup code\n  libceph: make ceph_msgr_wq private\n  libceph: encapsulate connection kvec operations\n  libceph: move prepare_write_banner()\n  ...\n"
    },
    {
      "commit": "3489b42a72a41d477665ab37f196ae9257180abb",
      "tree": "f90c349a10cb7ca6c1c2da5d141324c636817d33",
      "parents": [
        "8d63e318c4eb1bea6f7e3cb4b77849eaa167bfec"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 08 16:50:09 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:52 2012 -0500"
      },
      "message": "ceph: fix three bugs, two in ceph_vxattrcb_file_layout()\n\nIn ceph_vxattrcb_file_layout(), there is a check to determine\nwhether a preferred PG should be formatted into the output buffer.\nThat check assumes that a preferred PG number of 0 indicates \"no\npreference,\" but that is wrong.  No preference is indicated by a\nnegative (specifically, -1) PG number.\n\nIn addition, if that condition yields true, the preferred value\nis formatted into a sized buffer, but the size consumed by the\nearlier snprintf() call is not accounted for, opening up the\npossibilty of a buffer overrun.\n\nFinally, in ceph_vxattrcb_dir_rctime() where the nanoseconds part of\nthe time displayed did not include leading 0\u0027s, which led to\nerroneous (sub-second portion of) time values being shown.\n\nThis fixes these three issues:\n    http://tracker.newdream.net/issues/2155\n    http://tracker.newdream.net/issues/2156\n    http://tracker.newdream.net/issues/2157\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cffaba15cd95d4a16eb5a6aa5c22a79f67d555ab",
      "tree": "d752174022e8444c70afb27e798e032163f89ac9",
      "parents": [
        "d3002b974cefbb7c1e325cc296966f768ff76b06"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Feb 15 07:43:54 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:51 2012 -0500"
      },
      "message": "ceph: ensure Boolean options support both senses\n\nMany ceph-related Boolean options offer the ability to both enable\nand disable a feature.  For all those that don\u0027t offer this, add\na new option so that they do.\n\nNote that ceph_show_options()--which reports mount options currently\nin effect--only reports the option if it is different from the\ndefault value.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ee57741c5209154b8ef124bcaa2496da1b69a988",
      "tree": "248a6e7bf259bb849f885f1ff4a82be74ab4913b",
      "parents": [
        "2107978668de13da484f7abc3f03516494c7fca9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Tue Jan 24 10:08:36 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:47 2012 -0500"
      },
      "message": "rbd: make ceph_parse_options() return a pointer\n\nceph_parse_options() takes the address of a pointer as an argument\nand uses it to return the address of an allocated structure if\nsuccessful.  With this interface is not evident at call sites that\nthe pointer is always initialized.  Change the interface to return\nthe address instead (or a pointer-coded error code) to make the\nvalidity of the returned pointer obvious.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "18fa8b3feaac772925263b04b1429d80e2dfd779",
      "tree": "e9f6070faf16baf17bec93caa476afffeaa903b7",
      "parents": [
        "3ce6cd1233046eb97d6d2bd5d80c1cd40528ea2f"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: make ceph_setxattr() and ceph_removexattr() more alike\n\nThis patch just rearranges a few bits of code to make more\nportions of ceph_setxattr() and ceph_removexattr() identical.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3ce6cd1233046eb97d6d2bd5d80c1cd40528ea2f",
      "tree": "43025c030db1741222b96156931b6aa2c8b85e51",
      "parents": [
        "aa4066ed7ba60421423c35f66b789bb3dd21d89e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: avoid repeatedly computing the size of constant vxattr names\n\nAll names defined in the directory and file virtual extended\nattribute tables are constant, and the size of each is known at\ncompile time.  So there\u0027s no need to compute their length every\ntime any file\u0027s attribute is listed.\n\nRecord the length of each string and use it when needed to determine\nthe space need to represent them.  In addition, compute the\naggregate size of strings in each table just once at initialization\ntime.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "aa4066ed7ba60421423c35f66b789bb3dd21d89e",
      "tree": "3b3a805fd5acad82a5e4febb9770e939d9e533e3",
      "parents": [
        "881a5fa20092d221a7c4b365742c959ef4b297ec"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: encode type in vxattr callback routines\n\nThe names of the callback functions used for virtual extended\nattributes are based only on the last component of the attribute\nname.  Because of the way these are defined, this precludes allowing\na single (lowest) attribute name for different callbacks, dependent\non the type of file being operated on.  (For example, it might be\nnice to support both \"ceph.dir.layout\" and \"ceph.file.layout\".)\n\nJust change the callback names to avoid this problem.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "881a5fa20092d221a7c4b365742c959ef4b297ec",
      "tree": "3a983dfa715e1cf5594798bf48aa4668ba6de815",
      "parents": [
        "eb78808446aeed8e25b080c66bf823c1f188236d"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: drop \"_cb\" from name of struct ceph_vxattr_cb\n\nA struct ceph_vxattr_cb does not represent a callback at all, but\nrather a virtual extended attribute itself.  Drop the \"_cb\" suffix\nfrom its name to reflect that.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "eb78808446aeed8e25b080c66bf823c1f188236d",
      "tree": "d6d907a1028ead5286721f7d165c8cd20a6f4632",
      "parents": [
        "22891907193e005923a14384d82d702f6af4f0cf"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: use macros to normalize vxattr table definitions\n\nEntries in the ceph virtual extended attribute tables all follow a\ndistinct pattern in their definition.  Enforce this pattern through\nthe use of a macro.\n\nAlso, a null name field signals the end of the table, so make that\nbe the first field in the ceph_vxattr_cb structure.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "22891907193e005923a14384d82d702f6af4f0cf",
      "tree": "b41d7d2360f6fa013cc4a8b3732571f5d74afa1a",
      "parents": [
        "06476a69d8954f36a15ff5ddbfd47bdfcff22791"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: use a symbolic name for \"ceph.\" extended attribute namespace\n\nUse symbolic constants to define the top-level prefix for \"ceph.\"\nextended attribute names.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "06476a69d8954f36a15ff5ddbfd47bdfcff22791",
      "tree": "3fc48b0e9610b498b41eacbd1b23cce40ab456ec",
      "parents": [
        "b829c1954dbeb42a1277a8cb05943050ee70be94"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:27 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: pass inode rather than table to ceph_match_vxattr()\n\nAll callers of ceph_match_vxattr() determine what to pass as the\nfirst argument by calling ceph_inode_vxattrs(inode).  Just do that\ninside ceph_match_vxattr() itself, changing it to take an inode\nrather than the vxattr pointer as its first argument.\n\nAlso ensure the function works correctly for an empty table (i.e.,\ncontaining only a terminating null entry).\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b829c1954dbeb42a1277a8cb05943050ee70be94",
      "tree": "661cb42188119da359b1850117a36a1fcf319063",
      "parents": [
        "99f0f3b2c4be15784bb4ede33b5f2c3f7861dba7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:27 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: don\u0027t null-terminate xattr values\n\nFor some reason, ceph_setxattr() allocates an extra byte in which a\n\u0027\\0\u0027 is stored past the end of an extended attribute value.  This is\nnot needed, and is potentially misleading, so get rid of it.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "80834312a4da1405a9bc788313c67643de6fcb4c",
      "tree": "46fdff81b144f9307a4361f943b7f0fa4d7f1341",
      "parents": [
        "64486697771cbe219fffcb5c8e2ed9ca4fdf086c"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Thu Feb 16 11:56:29 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:45 2012 -0500"
      },
      "message": "ceph: fix overflow check in build_snap_context()\n\nThe overflow check for a + n * b should be (n \u003e (ULONG_MAX - a) / b),\nrather than (n \u003e ULONG_MAX / b - a).\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "810339ec2fae5cbd0164b8acde7fb65652755864",
      "tree": "4a7ea72b1af2201d2bc521afc5e34ed6f6a8ca41",
      "parents": [
        "a661fc561190c0ee2d7cfabcfa92204e2b3aa349"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Fri Feb 03 09:55:36 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:45 2012 -0500"
      },
      "message": "ceph: avoid panic with mismatched symlink sizes in fill_inode()\n\nReturn -EINVAL rather than panic if iinfo-\u003esymlink_len and inode-\u003ei_size\ndo not match.\n\nAlso use kstrndup rather than kmalloc/memcpy.\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nReviewed-by: Alex Elder \u003celder@dreamhost.com\u003e\n"
    },
    {
      "commit": "a661fc561190c0ee2d7cfabcfa92204e2b3aa349",
      "tree": "792088d4d245645d5c91fbb97fd4ee2a43188bd1",
      "parents": [
        "1ce208a6ce030ea6ccd4b13c8cec0a84c0c7a1e9"
      ],
      "author": {
        "name": "Amon Ott",
        "email": "ao@m-privacy.de",
        "time": "Mon Jan 23 09:25:23 2012 -0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:45 2012 -0500"
      },
      "message": "ceph: use 2 instead of 1 as fallback for 32-bit inode number\n\nThe root directory of the Ceph mount has inode number 1, so falling back\nto 1 always creates a collision. 2 is unused on my test systems and seems\nless likely to collide.\n\nSigned-off-by: Amon Ott \u003cao@m-privacy.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1ce208a6ce030ea6ccd4b13c8cec0a84c0c7a1e9",
      "tree": "2957ff4c5c853464fdd174a431a55a66924d6f79",
      "parents": [
        "182fac2689b769a96e7fc9defcd560c5cca92b1e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Jan 12 17:48:11 2012 -0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:45 2012 -0500"
      },
      "message": "ceph: don\u0027t reset s_cap_ttl to zero\n\nAvoid the need to check for a special zero s_cap_ttl value by just\nusing (jiffies - 1) as the value assigned to indicate \"sometime in\nthe past.\"\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6c073a7ee250118b8be3a2379c96fd7f78382b06",
      "tree": "b398bd9cad821a3543df835e5a0110f270acafb9",
      "parents": [
        "ff05f603c3238010769787f3ba54c48c290ed3e5",
        "d23a4b3fd6ef70b80411b39b8c8bc548a219ce70"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 02 15:47:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 02 15:47:33 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  rbd: fix safety of rbd_put_client()\n  rbd: fix a memory leak in rbd_get_client()\n  ceph: create a new session lock to avoid lock inversion\n  ceph: fix length validation in parse_reply_info()\n  ceph: initialize client debugfs outside of monc-\u003emutex\n  ceph: change \"ceph.layout\" xattr to be \"ceph.file.layout\"\n"
    },
    {
      "commit": "d8fb02abdc39f92a1066313e2b17047876afa8f9",
      "tree": "32f8126683dd185411b701b79d23900cf6c02035",
      "parents": [
        "32852a81bccd9e3d1953b894966393d1b546576d"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Jan 12 17:48:10 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 02 12:49:19 2012 -0800"
      },
      "message": "ceph: create a new session lock to avoid lock inversion\n\nLockdep was reporting a possible circular lock dependency in\ndentry_lease_is_valid().  That function needs to sample the\nsession\u0027s s_cap_gen and and s_cap_ttl fields coherently, but needs\nto do so while holding a dentry lock.  The s_cap_lock field was\nbeing used to protect the two fields, but that can\u0027t be taken while\nholding a lock on a dentry within the session.\n\nIn most cases, the s_cap_gen and s_cap_ttl fields only get operated\non separately.  But in three cases they need to be updated together.\nImplement a new lock to protect the spots updating both fields\natomically is required.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "32852a81bccd9e3d1953b894966393d1b546576d",
      "tree": "8c21ce9f1a1e6ecfbeafdcc8552b77b3587bca5b",
      "parents": [
        "ab434b60ab07f8c44246b6fb0cddee436687a09a"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Sat Jan 14 22:20:59 2012 -0500"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 02 12:49:11 2012 -0800"
      },
      "message": "ceph: fix length validation in parse_reply_info()\n\n\"len\" is read from network and thus needs validation.  Otherwise, given\na bogus \"len\" value, p+len could be an out-of-bounds pointer, which is\nused in further parsing.\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "114fc47492e23d93653e4a16664833e98d62a563",
      "tree": "c5ff822c89193cc6cad952cf24a06cd4a1f706eb",
      "parents": [
        "805a6af8dba5dfdd35ec35dc52ec0122400b2610"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jan 11 17:41:01 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 02 12:48:52 2012 -0800"
      },
      "message": "ceph: change \"ceph.layout\" xattr to be \"ceph.file.layout\"\n\nThe virtual extended attribute named \"ceph.layout\" is meaningful\nonly for regular files.  Change its name to be \"ceph.file.layout\" to\nmore directly reflect that in the ceph xattr namespace.  Preserve\nthe old \"ceph.layout\" name for the time being (until we decide it\u0027s\nsafe to get rid of it entirely).\n\nAdd a missing initializer for \"readonly\" in the terminating entry.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1a52bb0b686844021597d190e562ab55d1210104",
      "tree": "7edf13509869a6a7f1f488a679f15ff6c3057c54",
      "parents": [
        "8638094e956a47dbb9a25166705a91e9a0981d52",
        "83eb26af0db71f2dfe551405c55d982288fa6178"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:29:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:29:21 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: ensure prealloc_blob is in place when removing xattr\n  rbd: initialize snap_rwsem in rbd_add()\n  ceph: enable/disable dentry complete flags via mount option\n  vfs: export symbol d_find_any_alias()\n  ceph: always initialize the dentry in open_root_dentry()\n  libceph: remove useless return value for osd_client __send_request()\n  ceph: avoid iput() while holding spinlock in ceph_dir_fsync\n  ceph: avoid useless dget/dput in encode_fh\n  ceph: dereference pointer after checking for NULL\n  crush: fix force for non-root TAKE\n  ceph: remove unnecessary d_fsdata conditional checks\n  ceph: Use kmemdup rather than duplicating its implementation\n\nFix up conflicts in fs/ceph/super.c (d_alloc_root() failure handling vs\nalways initialize the dentry in open_root_dentry)\n"
    },
    {
      "commit": "83eb26af0db71f2dfe551405c55d982288fa6178",
      "tree": "c7bc62a810483e328cbe2b931416e58ec655ab9b",
      "parents": [
        "0e805a1d857799352e51e8697c0b1a30aec16913"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jan 11 17:41:01 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 12 11:00:51 2012 -0800"
      },
      "message": "ceph: ensure prealloc_blob is in place when removing xattr\n\nIn __ceph_build_xattrs_blob(), if a ceph inode\u0027s extended attributes\nare marked dirty, all attributes recorded in its rb_tree index are\nformatted into a \"blob\" buffer.  The target buffer is recorded in\nceph_inode-\u003ei_xattrs.prealloc_blob, and it is expected to exist and\nbe of sufficient size to hold the attributes.\n\nThe extended attributes are marked dirty in two cases: when a new\nattribute is added to the inode; or when one is removed.  In the\nformer case work is done to ensure the prealloc_blob buffer is\nproperly set up, but in the latter it is not.\n\nChange the logic in ceph_removexattr() so it matches what is\ndone in ceph_setxattr().  Note that this is done in a way that\nkeeps the two blocks of code nearly identical, in anticipation\nof a subsequent patch that encapsulates some of this logic into\none or more helper routines.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a40dc6cc2e121abcbd1b22583ef5447763df510c",
      "tree": "1c747cfabf33c6c9ad56811fabd22285816fc27a",
      "parents": [
        "46f72b349290d2bd7aecea38f02609d814332df6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 09:12:55 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 12 11:00:40 2012 -0800"
      },
      "message": "ceph: enable/disable dentry complete flags via mount option\n\nEnable/disable use of the dentry dir \u0027complete\u0027 flag via a mount option.\nThis lets the admin control whether ceph uses the dcache to satisfy\nnegative lookups or readdir when it has the entire directory contents in\nits cache.\n\nThis is purely a performance optimization; correctness is guaranteed\nwhether it is enabled or not.\n\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d46cfba5363a163851dc768f717f34185527a472",
      "tree": "18aaa9ab40b91b618ab206670de7a965f17589d1",
      "parents": [
        "56e925b677c5293e5aac73dac09e93b23259f907"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jan 04 16:30:15 2012 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 11 16:28:25 2012 -0800"
      },
      "message": "ceph: always initialize the dentry in open_root_dentry()\n\nWhen open_root_dentry() gets a dentry via d_obtain_alias() it does\nnot get initialized.  If the dentry obtained came from the cache,\nthis is OK.  But if not, the result is an improperly initialized\ndentry.\n\nTo fix this, call ceph_init_dentry() regardless of which path\nproduced the dentry.  That function returns immediately for a dentry\nthat is already initialized, it is safe to use either way.\n\n(Credit to Sage, who suggested this fix.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2ff179e650e95c2b21841b21dc46dc2edefd04cd",
      "tree": "9b15ba73039053111d73da96227e1589b3f11ff2",
      "parents": [
        "ee6b1baf67591b6d7ce1a6a07544343433d5ec9e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 03 10:09:07 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:57:02 2012 -0800"
      },
      "message": "ceph: avoid iput() while holding spinlock in ceph_dir_fsync\n\nceph_mdsc_put_request() can call iput(), which can sleep.  Don\u0027t do that.\n\nFixes: #1812\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ee6b1baf67591b6d7ce1a6a07544343433d5ec9e",
      "tree": "8aac5a6a2172d84d4188fe97bf3fe84aa558dc75",
      "parents": [
        "b8cd952b51034ad9f20ca147507ee68dc641c98c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 03 08:20:40 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:57:00 2012 -0800"
      },
      "message": "ceph: avoid useless dget/dput in encode_fh\n\nNothing we do here sleeps, so just do it under d_lock and avoid the dget/\ndput entirely.\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b8cd952b51034ad9f20ca147507ee68dc641c98c",
      "tree": "78fe2114ab9859eecc780206cc5d423b675b7e09",
      "parents": [
        "e11b05d31f21f0ea39ea288af667887cd6c21c80"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Dec 13 09:56:30 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:56:59 2012 -0800"
      },
      "message": "ceph: dereference pointer after checking for NULL\n\nmoved dereference after BUG_ON\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    }
  ],
  "next": "3d8eb7a94e8f25a33362f708974ac7daae9e84f8"
}
