)]}'
{
  "log": [
    {
      "commit": "e84346b726ea90a8ed470bc81c4136a7b8710ea5",
      "tree": "99a90ef86d38a51e39ed69af318e6cfe32023879",
      "parents": [
        "f818a73674c5d197f66b636a46d7d578d7258129"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 21:20:38 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 21:20:38 2010 -0700"
      },
      "message": "ceph: preserve seq # on requeued messages after transient transport errors\n\nIf the tcp connection drops and we reconnect to reestablish a stateful\nsession (with the mds), we need to resend previously sent (and possibly\nreceived) messages with the _same_ seq # so that they can be dropped on\nthe other end if needed.  Only assign a new seq once after the message is\nqueued.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "f818a73674c5d197f66b636a46d7d578d7258129",
      "tree": "90c485b5ca0a211b84ad8feddfce4f301de3d5c9",
      "parents": [
        "45c6ceb547ad2d98215351974a4686bf8cb13e14"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 20:56:31 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 20:56:31 2010 -0700"
      },
      "message": "ceph: fix cap removal races\n\nThe iterate_session_caps helper traverses the session caps list and tries\nto grab an inode reference.  However, the __ceph_remove_cap was clearing\nthe inode backpointer _before_ removing itself from the session list,\ncausing a null pointer dereference.\n\nClear cap-\u003eci under protection of s_cap_lock to avoid the race, and to\ntightly couple the list and backpointer state.  Use a local flag to\nindicate whether we are releasing the cap, as cap-\u003esession may be modified\nby a racing thread in iterate_session_caps.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "45c6ceb547ad2d98215351974a4686bf8cb13e14",
      "tree": "f7d5dc6b7900faebef1a29a5e0af5ac263a64337",
      "parents": [
        "9abf82b8bc93dd904738a71ca69aa5df356d4d24"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 15:01:51 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 15:17:40 2010 -0700"
      },
      "message": "ceph: zero unused message header, footer fields\n\nWe shouldn\u0027t leak any prior memory contents to other parties.  And random\ndata, particularly in the \u0027version\u0027 field, can cause problems down the\nline.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9abf82b8bc93dd904738a71ca69aa5df356d4d24",
      "tree": "208c5112173832092f93b8d91b8e8ec6f36209aa",
      "parents": [
        "d85b705663905b3dae30007f824355bdcfcf3f00"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 10 21:58:38 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:57 2010 -0700"
      },
      "message": "ceph: fix locking for waking session requests after reconnect\n\nThe session-\u003es_waiting list is protected by mdsc-\u003emutex, not s_mutex.  This\nwas causing (rare) s_waiting list corruption.\n\nFix errors paths too, while we\u0027re here.  A more thorough cleanup of this\nfunction is coming soon.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d85b705663905b3dae30007f824355bdcfcf3f00",
      "tree": "e47262683ed704786be3f0dae62bc4c57bd50ad7",
      "parents": [
        "04d000eb358919043da538f197d63f2a5924a525"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 10 10:24:48 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:56 2010 -0700"
      },
      "message": "ceph: resubmit requests on pg mapping change (not just primary change)\n\nOSD requests need to be resubmitted on any pg mapping change, not just when\nthe pg primary changes.  Resending only when the primary changes results in\noccasional \u0027hung\u0027 requests during osd cluster recovery or rebalancing.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "04d000eb358919043da538f197d63f2a5924a525",
      "tree": "725f4031c083323b63664f03b4d0d7ce9c183b21",
      "parents": [
        "0ceed5db321ac0f9782e77dda476ebe28a8e2199"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 07 11:26:34 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:55 2010 -0700"
      },
      "message": "ceph: fix open file counting on snapped inodes when mds returns no caps\n\nIt\u0027s possible the MDS will not issue caps on a snapped inode, in which case\nan open request may not __ceph_get_fmode(), botching the open file\ncounting.  (This is actually a server bug, but the client shouldn\u0027t BUG out\nin this case.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0ceed5db321ac0f9782e77dda476ebe28a8e2199",
      "tree": "356f6a3f2dc26ba04589e9abd603139c62094730",
      "parents": [
        "54ad023ba8108d0163acc931ed4b5e4a8a3a7327"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:18 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:18 2010 -0700"
      },
      "message": "ceph: unregister osd request on failure\n\nThe osd request wasn\u0027t being unregistered when the osd returned a failure\ncode, even though the result was returned to the caller.  This would cause\nit to eventually time out, and then crash the kernel when it tried to\nresend the request using a stale page vector.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "54ad023ba8108d0163acc931ed4b5e4a8a3a7327",
      "tree": "93edeaba0b8f851c9b5a18c6e42c92b2237480c5",
      "parents": [
        "5dfc589a8467470226feccdc50f1b32713318e7b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 05 21:30:35 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 05 21:31:40 2010 -0700"
      },
      "message": "ceph: don\u0027t use writeback_control in writepages completion\n\nThe -\u003ewritepages writeback_control is not still valid in the writepages\ncompletion.  We were touching it solely to adjust pages_skipped when there\nwas a writeback error (EIO, ENOSPC, EPERM due to bad osd credentials),\ncausing an oops in the writeback code shortly thereafter.  Updating\npages_skipped on error isn\u0027t correct anyway, so let\u0027s just rip out this\n(clearly broken) code to pass the wbc to the completion.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5dfc589a8467470226feccdc50f1b32713318e7b",
      "tree": "82998c57555055cf3763e9a4fc757d5de0628c21",
      "parents": [
        "b0930f8d38c6ab76dc8222a5a910a21392d38208"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 04 16:14:46 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 04 16:14:46 2010 -0700"
      },
      "message": "ceph: unregister bdi before kill_anon_super releases device name\n\nUnregister and destroy the bdi in put_super, after mount is r/o, but before\nput_anon_super releases the device name.\n\nFor symmetry, bdi_destroy in destroy_client (we bdi_init in create_client).\n\nOnly set s_bdi if bdi_register succeeds, since we use it to decide whether\nto bdi_unregister.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b0930f8d38c6ab76dc8222a5a910a21392d38208",
      "tree": "0aad65459eaa8fd5fdf8b621eb9b851e7864ae6e",
      "parents": [
        "7ff899da02cb674211858fcd919f8b4511a4423f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 29 13:26:53 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:25 2010 -0700"
      },
      "message": "ceph: remove bad auth_x kmem_cache\n\nIt\u0027s useless, since our allocations are already a power of 2.  And it was\nallocated per-instance (not globally), which caused a name collision when\nwe tried to mount a second file system with auth_x enabled.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7ff899da02cb674211858fcd919f8b4511a4423f",
      "tree": "a200faf72a5ff982a03287c65809d0c78ef11bfd",
      "parents": [
        "ea1409f96197c1bffe5d7d5bc967b3445edcc1fa"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 23 10:25:33 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:25 2010 -0700"
      },
      "message": "ceph: fix lockless caps check\n\nThe __ variant requires caller to hold i_lock.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ea1409f96197c1bffe5d7d5bc967b3445edcc1fa",
      "tree": "cbbd8ed4cca9bb718a596277f1152f2f1d629c37",
      "parents": [
        "5c6a2cdb4fe8aaf6b54f022c14f13d2a12b45914"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Apr 28 16:12:06 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:25 2010 -0700"
      },
      "message": "ceph: clear dir complete, invalidate dentry on replayed rename\n\nIf a rename operation is resent to the MDS following an MDS restart, the\nclient does not get a full reply (containing the resulting metadata) back.\nIn that case, a ceph_rename() needs to compensate by doing anything useful\nthat fill_inode() would have, like d_move().\n\nIt also needs to invalidate the dentry (to workaround the vfs_rename_dir()\nbug) and clear the dir complete flag, just like fill_trace().\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5c6a2cdb4fe8aaf6b54f022c14f13d2a12b45914",
      "tree": "68b777f391b68f91ba8c587ded4f9d9526f9279a",
      "parents": [
        "ae18756b9fa7bb93132cff06cd8575e3d46633f9"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 22 13:48:59 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:25 2010 -0700"
      },
      "message": "ceph: fix direct io truncate offset\n\ntruncate_inode_pages_range wants the end offset to align with the last byte\nin a page.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ae18756b9fa7bb93132cff06cd8575e3d46633f9",
      "tree": "e09f5c89b4611e2c53bb50118d8fa8133b58c73b",
      "parents": [
        "684be25c52a1e43638ced160be0b0b46596e7f2b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 22 07:47:01 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:24 2010 -0700"
      },
      "message": "ceph: discard incoming messages with bad seq #\n\nWe can get old message seq #\u0027s after a tcp reconnect for stateful sessions\n(i.e., the MDS).  If we get a higher seq #, that is an error, and we\nshouldn\u0027t see any bad seq #\u0027s for stateless (mon, osd) connections.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "684be25c52a1e43638ced160be0b0b46596e7f2b",
      "tree": "c6cde28f26e12f1ef33990a6d8cb10ab975dddba",
      "parents": [
        "d45d0d970f495e04a4e4f46acd74e90f4a4564f9"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Apr 21 20:45:59 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:24 2010 -0700"
      },
      "message": "ceph: fix seq counting for skipped messages\n\nIncrement in_seq even when the message is skipped for some reason.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d45d0d970f495e04a4e4f46acd74e90f4a4564f9",
      "tree": "f5be41231ee8b925c01b3d291f8919b8e451101d",
      "parents": [
        "0b0c06d1476290cea248923c0ee7be9fd61cacea"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 20 15:20:33 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:24 2010 -0700"
      },
      "message": "ceph: add missing #includes\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0b0c06d1476290cea248923c0ee7be9fd61cacea",
      "tree": "557eacf9666cf0c2f989c2ff1955805d5557d07d",
      "parents": [
        "c8f16584ac85444d51d8753c5df502350cfc7bb7"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 20 10:27:13 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:23 2010 -0700"
      },
      "message": "ceph: fix leaked spinlock during mds reconnect\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c8f16584ac85444d51d8753c5df502350cfc7bb7",
      "tree": "8fd47c13e4577e10487b3cba001a029ba43aa669",
      "parents": [
        "91dee39eebcfb47085c4d457a584b0e9723b6ca0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Apr 19 13:50:26 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:23 2010 -0700"
      },
      "message": "ceph: print more useful version info on module load\n\nDecouple the client version from the server side.  Print relevant protocol\nand map version info instead.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "91dee39eebcfb47085c4d457a584b0e9723b6ca0",
      "tree": "52bdeb4795c3b60b1d23460cada8c813c94fb7a9",
      "parents": [
        "c10f5e12bafde7f7a2f9b75d76f7a68d62154e91"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Apr 19 10:15:44 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:23 2010 -0700"
      },
      "message": "ceph: fix snap realm splits\n\nThe snap realm split was checking i_snap_realm, not the list_head, to\ndetermine if an inode belonged in the new realm.  The check always failed,\nwhich meant we always moved the inode, corrupting the old realm\u0027s list and\ncausing various crashes.\n\nAlso wait to release old realm reference to avoid possibility of use after\nfree.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c10f5e12bafde7f7a2f9b75d76f7a68d62154e91",
      "tree": "422e4a5898dea5fddaa4b6b73379b9ac4db230b5",
      "parents": [
        "66f41d4c5c8a5deed66fdcc84509376c9a0bf9d8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 16 12:56:11 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:22 2010 -0700"
      },
      "message": "ceph: clear dir complete on d_move\n\nd_move() reorders the d_subdirs list, breaking the readdir result caching.\nUnless/until d_move preserves that ordering, clear CEPH_I_COMPLETE on\nrename.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "96e35b40c0d6206f56370f937f6f4722739eb273",
      "tree": "2c387b6e3f628484a1f4bdc964e529f89d5f5821",
      "parents": [
        "f5c07a2d8acfc98e00d3be6298f979e5b3175953",
        "a6a5349d17f2a5c37079826f1a1474c3d08c6b53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 14 18:45:31 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 14 18:45:31 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: use separate class for ceph sockets\u0027 sk_lock\n  ceph: reserve one more caps space when doing readdir\n  ceph: queue_cap_snap should always queue dirty context\n  ceph: fix dentry reference leak in dcache readdir\n  ceph: decode v5 of osdmap (pool names) [protocol change]\n  ceph: fix ack counter reset on connection reset\n  ceph: fix leaked inode ref due to snap metadata writeback race\n  ceph: fix snap context reference leaks\n  ceph: allow writeback of snapped pages older than \u0027oldest\u0027 snapc\n  ceph: fix dentry rehashing on virtual .snap dir\n"
    },
    {
      "commit": "a6a5349d17f2a5c37079826f1a1474c3d08c6b53",
      "tree": "3b37dadbf297abdd65b3f63ac8e94a6137098198",
      "parents": [
        "e1e4dd0caa63e166afa46a1ccc947bebb4f66bcf"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 13 14:07:07 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 13 14:07:07 2010 -0700"
      },
      "message": "ceph: use separate class for ceph sockets\u0027 sk_lock\n\nUse a separate class for ceph sockets to prevent lockdep confusion.\nBecause ceph sockets only get passed kernel pointers, there is no\ndependency from sk_lock -\u003e mmap_sem.  If we share the same class as other\nsockets, lockdep detects a circular dependency from\n\n\tmmap_sem (page fault) -\u003e fs mutex -\u003e sk_lock -\u003e mmap_sem\n\nbecause dependencies are noted from both ceph and user contexts.  Using\na separate class prevents the sk_lock(ceph) -\u003e mmap_sem dependency and\nmakes lockdep happy.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e1e4dd0caa63e166afa46a1ccc947bebb4f66bcf",
      "tree": "028dcbe599b2ecd0a08519e741298a7a5fcb701d",
      "parents": [
        "fc837c8f0446b73a1661339db406c0238dd1d184"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Apr 13 11:45:56 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 13 12:28:54 2010 -0700"
      },
      "message": "ceph: reserve one more caps space when doing readdir\n\nWe were missing space for the directory cap.  The result was a BUG at\nfs/ceph/caps.c:2178.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "fc837c8f0446b73a1661339db406c0238dd1d184",
      "tree": "5cc1e6b97a8f39f7979eb302ac8a090c812f2609",
      "parents": [
        "f5b066287c74b624583b993395a65d03a6487b3a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 13 11:41:22 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 13 12:28:31 2010 -0700"
      },
      "message": "ceph: queue_cap_snap should always queue dirty context\n\nThis simplifies the calling convention, and fixes a bug where we queue a\ncapsnap with a context other than i_head_snapc (the one that matches the\ndirty pages).  The result was a BUG at fs/ceph/caps.c:2178 on writeback\ncompletion when a capsnap matching the writeback snapc could not be found.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "f5b066287c74b624583b993395a65d03a6487b3a",
      "tree": "113dd2a4bbf0d2ff9fd374b53dc377f55677f922",
      "parents": [
        "2844a76a25a2fc2f5025cf128c95a14d86146d33"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Apr 12 14:24:28 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Apr 12 14:25:51 2010 -0700"
      },
      "message": "ceph: fix dentry reference leak in dcache readdir\n\nWhen filldir returned an error (e.g. buffer full for a large directory),\nwe would leak a dentry reference, causing an oops on umount.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2844a76a25a2fc2f5025cf128c95a14d86146d33",
      "tree": "a57b3dac7f92d187bafe3c10270b0d28edf405e3",
      "parents": [
        "0e0d5e0c4bb0476d53a43bfc87d03a25ec4b5579"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 09 15:46:42 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 09 15:50:58 2010 -0700"
      },
      "message": "ceph: decode v5 of osdmap (pool names) [protocol change]\n\nTeach the client to decode an updated format for the osdmap.  The new\nformat includes pool names, which will be useful shortly.  Get this change\nin earlier rather than later.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0e0d5e0c4bb0476d53a43bfc87d03a25ec4b5579",
      "tree": "66013a33ad1f46b258d55289adf12cac463d43f9",
      "parents": [
        "819ccbfa448403992ceafc05d6d7097aaa74d4c3"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 02 16:07:19 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 02 16:07:19 2010 -0700"
      },
      "message": "ceph: fix ack counter reset on connection reset\n\nIf in_seq_acked isn\u0027t reset along with in_seq, we don\u0027t ack received\nmessages until we reach the old count, consuming gobs memory on the other\nend of the connection and introducing a large delay when those messages\nare eventually deleted.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "819ccbfa448403992ceafc05d6d7097aaa74d4c3",
      "tree": "e6b3592fd85fbb35a63d6d10c84a8d01913eddab",
      "parents": [
        "6298a33757ba7361bb8f506c106daad77e5ac8cf"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 01 09:33:46 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 01 09:34:38 2010 -0700"
      },
      "message": "ceph: fix leaked inode ref due to snap metadata writeback race\n\nWe create a ceph_cap_snap if there is dirty cap metadata (for writeback to\nmds) OR dirty pages (for writeback to osd).  It is thus possible that the\nmetadata has been written back to the MDS but the OSD data has not when\nthe cap_snap is created.  This results in a cap_snap with dirty(caps) \u003d\u003d 0.\nThe problem is that cap writeback to the MDS isn\u0027t necessary, and a\nFLUSHSNAP cap op gets no ack from the MDS.  This leaves the cap_snap\nattached to the inode along with its inode reference.\n\nFix the problem by dropping the cap_snap if it becomes \u0027complete\u0027 (all\npages written out) and dirty(caps) \u003d\u003d 0 in ceph_put_wrbuffer_cap_refs().\n\nAlso, BUG() in __ceph_flush_snaps() if we encounter a cap_snap with\ndirty(caps) \u003d\u003d 0.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6298a33757ba7361bb8f506c106daad77e5ac8cf",
      "tree": "ebd8e7cab86a66c00c0bd4f411c335ed4d0fda9f",
      "parents": [
        "80e755fedebc8de0599a79efad2c656503df2e62"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Mar 31 22:01:38 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 01 09:34:37 2010 -0700"
      },
      "message": "ceph: fix snap context reference leaks\n\nThe get_oldest_context() helper takes a reference to the returned snap\ncontext, but most callers weren\u0027t dropping that reference.  Fix them.\n\nAlso drop the unused locked __get_oldest_context() variant.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "80e755fedebc8de0599a79efad2c656503df2e62",
      "tree": "05f0285f4d040958377d6542394bc56b10f80257",
      "parents": [
        "9358c6d4c0264b1572554c49c4b92673ea9a5c72"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Mar 31 21:52:10 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 01 09:34:36 2010 -0700"
      },
      "message": "ceph: allow writeback of snapped pages older than \u0027oldest\u0027 snapc\n\nOn snap deletion, we don\u0027t regenerate ceph_cap_snaps for inodes with dirty\npages because deletion does not affect metadata writeback.  However, we\ndid run into problems when we went to write back the pages because the\n\u0027oldest\u0027 snapc is determined by the oldest cap_snap, and that may be the\nnewer snapc that reflects the deletion.  This caused confusion and an\ninfinite loop in ceph_update_writeable_page().\n\nChange the snapc checks to allow writeback of any snapc that is equal to\nOR older than the \u0027oldest\u0027 snapc.\n\nWhen there are no cap_snaps, we were also using the realm\u0027s latest snapc\nfor writeback, which complicates ceph_put_wrbufffer_cap_refs().  Instead,\nuse i_head_snapc, the most snapc used for the most recent (\u0027head\u0027) data.\nThis makes the writeback snapc (ceph_osd_request.r_snapc) _always_ match a\ncapsnap or i_head_snapc.\n\nAlso, in writepags_finish(), drop the snapc referenced by the _page_\nand do not assume it matches the request snapc (it may not anymore).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9358c6d4c0264b1572554c49c4b92673ea9a5c72",
      "tree": "3d11a5021487dccf61b8d53c66c32df6b84223eb",
      "parents": [
        "2eaa9cfdf33b8d7fb7aff27792192e0019ae8fc6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 30 13:54:41 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 30 13:55:22 2010 -0700"
      },
      "message": "ceph: fix dentry rehashing on virtual .snap dir\n\nIf a lookup fails on the magic .snap directory, we bind it to a magic\nsnap directory inode in ceph_lookup_finish().  That code assumes the dentry\nis unhashed, but a recent server-side change started returning NULL leases\non lookup failure, causing the .snap dentry to be hashed and NULL by\nceph_fill_trace().\n\nThis causes dentry hash chain corruption, or a dies when d_rehash()\nincludes\n\tBUG_ON(!d_unhashed(entry));\n\nSo, avoid processing the NULL dentry lease if it the dentry matches the\nsnapdir name in ceph_fill_trace().  That allows the lookup completion to\nproperly bind it to the snapdir inode.  BUG there if dentry is hashed to\nbe sure.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "94aa8ae13db2ecf2ec1b4e65a65d3fe92b468e0e",
      "tree": "07ab734202675a9ff3bb991d9732a392061eacee",
      "parents": [
        "23ab15ad7a9d042afa7303b735b6e24faa607241"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Mar 28 21:22:50 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Mar 28 21:23:56 2010 -0700"
      },
      "message": "ceph: fix use after free on mds __unregister_request\n\nThere was a use after free in __unregister_request that would trigger\nwhenever the request map held the last reference.  This appears to have\ntriggered an oops during \u0027umount -f\u0027 when requests are being torn down.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "393f66209669ad23f4f6d4191234c1df4367df3c",
      "tree": "5c628bcf731c98f5627000192e7f2d23a7a039a5",
      "parents": [
        "d96d60498ff748c5a88c72ec5d1cc4ba9a583e7e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Mar 10 12:03:32 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:47:06 2010 -0700"
      },
      "message": "ceph: fix possible double-free of mds request reference\n\nClear pointer to mds request after dropping the reference to\nensure we don\u0027t drop it again, as there is at least one error\npath through this function that does not reset fi-\u003elast_readdir\nto a new value.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d96d60498ff748c5a88c72ec5d1cc4ba9a583e7e",
      "tree": "d17c11fbfe5e7c7dbe6cec1729f22548a1e49dd2",
      "parents": [
        "4736b009b880b7c19bea36327a71032a6dbee402"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 20:50:58 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:47:05 2010 -0700"
      },
      "message": "ceph: fix session check on mds reply\n\nFix a broken check that a reply came back from the same MDS we sent the\nrequest to.  I don\u0027t think a case that actually triggers this would ever\ncome up in practice, but it\u0027s clearly wrong and easy to fix.\n\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4736b009b880b7c19bea36327a71032a6dbee402",
      "tree": "3702b662c5d3f1048680e7766308df464c9af8f2",
      "parents": [
        "9c423956b8a495f0c048143abc5da955a70eac97"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat Mar 20 15:30:16 2010 +0300"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:47:04 2010 -0700"
      },
      "message": "ceph: handle kmalloc() failure\n\nReturn ERR_PTR(-ENOMEM) if kmalloc() fails.  We handle allocation\nfailures the same way later in the function.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9c423956b8a495f0c048143abc5da955a70eac97",
      "tree": "4577ebc496d6e2aea708cced214789113fbd75ba",
      "parents": [
        "8f883c24de33ba929c95e018ac0ba66e4f46734b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 20:43:28 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:47:04 2010 -0700"
      },
      "message": "ceph: propagate mds session allocation failures to caller\n\nReturn error to original caller if register_session() fails.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8f883c24de33ba929c95e018ac0ba66e4f46734b",
      "tree": "82a9a50b08826612f0613283c7b3f8f6aea264e7",
      "parents": [
        "ec4318bcb4c59d8b8bf7037c9f444a9887ccb265"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 19 13:27:53 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:47:03 2010 -0700"
      },
      "message": "ceph: make write_begin wait propagate ERESTARTSYS\n\nCurrently, if the wait_event_interruptible is interrupted, we\nreturn EAGAIN unconditionally and loop, such that we aren\u0027t, in\nfact, interruptible.  So, propagate ERESTARTSYS if we get it.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ec4318bcb4c59d8b8bf7037c9f444a9887ccb265",
      "tree": "9c471ed9e33b864253166c255c1fd601b909c7af",
      "parents": [
        "87b315a5b5cec5d7086494b203577602f5befc8c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 19 13:24:39 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:47:02 2010 -0700"
      },
      "message": "ceph: fix snap rebuild condition\n\nWe were rebuilding the snap context when it was not necessary\n(i.e. when the realm seq hadn\u0027t changed _and_ the parent seq\nwas still older), which caused page snapc pointers to not match\nthe realm\u0027s snapc pointer (even though the snap context itself\nwas identical).  This confused begin_write and put it into an\nendless loop.\n\nThe correct logic is: rebuild snapc if _my_ realm seq changed, or\nif my parent realm\u0027s seq is newer than mine (and thus mine needs\nto be rebuilt too).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "87b315a5b5cec5d7086494b203577602f5befc8c",
      "tree": "18e1638619a51cdf4605bad5b4270841450cf211",
      "parents": [
        "3dd72fc0e6dc49c79fa9e7cd7c654deac7ccaa29"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 22 14:51:18 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:47:01 2010 -0700"
      },
      "message": "ceph: avoid reopening osd connections when address hasn\u0027t changed\n\nWe get a fault callback on _every_ tcp connection fault.  Normally, we\nwant to reopen the connection when that happens.  If the address we have\nis bad, however, and connection attempts always result in a connection\nrefused or similar error, explicitly closing and reopening the msgr\nconnection just prevents the messenger\u0027s backoff logic from kicking in.\nThe result can be a console full of\n\n[ 3974.417106] ceph: osd11 10.3.14.138:6800 connection failed\n[ 3974.423295] ceph: osd11 10.3.14.138:6800 connection failed\n[ 3974.429709] ceph: osd11 10.3.14.138:6800 connection failed\n\nInstead, if we get a fault, and have outstanding requests, but the osd\naddress hasn\u0027t changed and the connection never successfully connected in\nthe first place, do nothing to the osd connection.  The messenger layer\nwill back off and retry periodically, because we never connected and thus\nthe lossy bit is not set.\n\nInstead, touch each request\u0027s r_stamp so that handle_timeout can tell the\nrequest is still alive and kicking.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3dd72fc0e6dc49c79fa9e7cd7c654deac7ccaa29",
      "tree": "724a1bc01c752e3de305c01180c5868a3d8601a4",
      "parents": [
        "3c3f2e32effd4c6acc3a9434bd7eecb0af653d89"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 22 14:42:30 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:47:00 2010 -0700"
      },
      "message": "ceph: rename r_sent_stamp r_stamp\n\nMake variable name slightly more generic, since it will (soon)\nreflect either the time the request was sent OR the time it was\nlast determined to be still retrying.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3c3f2e32effd4c6acc3a9434bd7eecb0af653d89",
      "tree": "9f1b1cbee6e1d79ccc7f8160bfb41b856e9cd179",
      "parents": [
        "e4cb4cb8a03adde1aa4b874623c50b9a5b56e635"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 18 15:20:53 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:59 2010 -0700"
      },
      "message": "ceph: fix connection fault con_work reentrancy problem\n\nThe messenger fault was clearing the BUSY bit, for reasons unclear.  This\nmade it possible for the con-\u003eops-\u003efault function to reopen the connection,\nand requeue work in the workqueue--even though the current thread was\nalready in con_work.\n\nThis avoids a problem where the client busy loops with connection failures\non an unreachable OSD, but doesn\u0027t address the root cause of that problem.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e4cb4cb8a03adde1aa4b874623c50b9a5b56e635",
      "tree": "52d7ab8b4f589a1cf9b5e3662e952a1ec33903d5",
      "parents": [
        "efd7576b2392cc5a0934352936d793e8884c46bf"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 18 13:43:09 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:58 2010 -0700"
      },
      "message": "ceph: prevent dup stale messages to console for restarting mds\n\nPrevent duplicate \u0027mds0 caps stale\u0027 message from spamming the console every\nfew seconds while the MDS restarts.  Set s_renew_requested earlier, so that\nwe only print the message once, even if we don\u0027t send an actual request.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "efd7576b2392cc5a0934352936d793e8884c46bf",
      "tree": "4a45863267977b47b6e712987119af8a0a9a8581",
      "parents": [
        "80fc7314a7e26e8d2e4ba5b3d8cc2d4aeb750015"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Mar 17 10:05:28 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:57 2010 -0700"
      },
      "message": "ceph: fix pg pool decoding from incremental osdmap update\n\nThe incremental map decoding of pg pool updates wasn\u0027t skipping\nthe snaps and removed_snaps vectors.  This caused osd requests\nto stall when pool snapshots were created or fs snapshots were\ndeleted.  Use a common helper for full and incremental map\ndecoders that decodes pools properly.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "80fc7314a7e26e8d2e4ba5b3d8cc2d4aeb750015",
      "tree": "a8f5c8ee76ac0b566332317388b716e70112088b",
      "parents": [
        "916623da10e270c7e9e802a7ddfe1ec8f890982d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 15:28:54 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:56 2010 -0700"
      },
      "message": "ceph: fix mds sync() race with completing requests\n\nThe wait_unsafe_requests() helper dropped the mdsc mutex to wait\nfor each request to complete, and then examined r_node to get the\nnext request after retaking the lock.  But the request completion\nremoves the request from the tree, so r_node was always undefined\nat this point.  Since it\u0027s a small race, it usually led to a\nvalid request, but not always.  The result was an occasional\ncrash in rb_next() while dereferencing node-\u003erb_left.\n\nFix this by clearing the rb_node when removing the request from\nthe request tree, and not walking off into the weeds when we\nare done waiting for a request.  Since the request we waited on\nwill _always_ be out of the request tree, take a ref on the next\nrequest, in the hopes that it won\u0027t be.  But if it is, it\u0027s ok:\nwe can start over from the beginning (and traverse over older read\nrequests again).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "916623da10e270c7e9e802a7ddfe1ec8f890982d",
      "tree": "892f703ce8a4200ab27b0c1db14f4c2057d7b2f3",
      "parents": [
        "15637c8b1251c38694c32214eba69b72a30e9d9b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 15:01:07 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:55 2010 -0700"
      },
      "message": "ceph: only release unused caps with mds requests\n\nWe were releasing used caps (e.g. FILE_CACHE) from encode_inode_release\nwith MDS requests (e.g. setattr).  We don\u0027t carry refs on most caps, so\nthis code worked most of the time, but for setattr (utimes) we try to\ndrop Fscr.\n\nThis causes cap state to get slightly out of sync with reality, and may\nresult in subsequent mds revoke messages getting ignored.\n\nFix by only releasing unused caps.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "15637c8b1251c38694c32214eba69b72a30e9d9b",
      "tree": "a410e4db868f75dbace870930b9b032b877a552d",
      "parents": [
        "cdc2ce056a3620139056b60ad7f6d355ad13f445"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 13:42:00 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:54 2010 -0700"
      },
      "message": "ceph: clean up handle_cap_grant, handle_caps wrt session mutex\n\nDrop session mutex unconditionally in handle_cap_grant, and do the\ncheck_caps from the handle_cap_grant helper.  This avoids using a magic\nreturn value.\n\nAlso avoid using a flag variable in the IMPORT case and call\ncheck_caps at the appropriate point.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cdc2ce056a3620139056b60ad7f6d355ad13f445",
      "tree": "1aed7f66612d13beeeec6e2c191f19eff44d1054",
      "parents": [
        "4ea0043a29c82ca52ca54728d837314563bec574"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 13:39:28 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:53 2010 -0700"
      },
      "message": "ceph: fix session locking in handle_caps, ceph_check_caps\n\nPassing a session pointer to ceph_check_caps() used to mean it would leave\nthe session mutex locked.  That wasn\u0027t always possible if it wasn\u0027t passed\nCHECK_CAPS_AUTHONLY.   If could unlock the passed session and lock a\ndifferet session mutex, which was clearly wrong, and also emitted a\nwarning when it a racing CPU retook it and we did an unlock from the wrong\ncontext.\n\nThis was only a problem when there was more than one MDS.\n\nFirst, make ceph_check_caps unconditionally drop the session mutex, so that\nit is free to lock other sessions as needed.  Then adjust the one caller\nthat passes in a session (handle_cap_grant) accordingly.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4ea0043a29c82ca52ca54728d837314563bec574",
      "tree": "df7e9859f54d0ae1b20d07647886a313cd9da9fb",
      "parents": [
        "12eadc190038e68b5884a4aa313b6ab89ba60f5e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 10:36:40 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:52 2010 -0700"
      },
      "message": "ceph: drop unnecessary WARN_ON in caps migration\n\nIf we don\u0027t have the exported cap it\u0027s because we already released it. No\nneed to WARN.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "12eadc190038e68b5884a4aa313b6ab89ba60f5e",
      "tree": "ba53a7209528981aec774f99132723b913a9e6ae",
      "parents": [
        "0a990e7093566ceb07e38951e1a01686923d4f09"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 15 22:20:39 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:51 2010 -0700"
      },
      "message": "ceph: fix null pointer deref of r_osd in debug output\n\nThis causes an oops when debug output is enabled and we kick\nan osd request with no current r_osd (sometime after an osd\nfailure).  Check the pointer before dereferencing.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0a990e7093566ceb07e38951e1a01686923d4f09",
      "tree": "4f02c6f7a5c1033b4a81363e6e996d6237bda8e1",
      "parents": [
        "5b3dbb44ab40660a080d03585bd35f45b2890c49"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 15 16:12:25 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 23 07:46:47 2010 -0700"
      },
      "message": "ceph: clean up service ticket decoding\n\nPreviously we would decode state directly into our current ticket_handler.\nThis is problematic if for some reason we fail to decode, because we end\nup with half new state and half old state.\n\nWe are probably already in bad shape if we get an update we can\u0027t decode,\nbut we may as well be tidy anyway.  Decode into new_* temporaries and\nupdate the ticket_handler only on success.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5b3dbb44ab40660a080d03585bd35f45b2890c49",
      "tree": "4303e51cf6922c92ea8a60217f5694d83de06a3a",
      "parents": [
        "807c86e2ceba8febe79b289d50cd0d5e0b0af917"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 15 15:57:04 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 21:33:11 2010 -0700"
      },
      "message": "ceph: release old ticket_blob buffer\n\nRelease the old ticket_blob buffer when we get an updated service ticket\nfrom the monitor.  Previously these were getting leaked.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "807c86e2ceba8febe79b289d50cd0d5e0b0af917",
      "tree": "ff7ef8edfd4aab41ea32e735afc9c7fd4eb8f35a",
      "parents": [
        "63733a0fc55cca74b1911769633dc5dfd1a45907"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 15 15:52:17 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 21:33:10 2010 -0700"
      },
      "message": "ceph: fix authenticator buffer size calculation\n\nThe buffer size was incorrectly calculated for the ceph_x_encrypt()\nencapsulated ticket blob.  Use a helper (with correct arithmetic) and\nBUG out if we were wrong.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "63733a0fc55cca74b1911769633dc5dfd1a45907",
      "tree": "b173d0f9a243dc4df463a8a73b64eabc26cec21c",
      "parents": [
        "8b218b8a4a65bf4e304ae8690cadb9100ef029c0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 15 15:47:22 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 21:33:09 2010 -0700"
      },
      "message": "ceph: fix authenticator timeout\n\nWe were failing to reconnect to services due to an old authenticator, even\nthough we had the new ticket, because we weren\u0027t properly retrying the\nconnect handshake, because we were calling an old/incorrect helper that\nleft in_base_pos incorrect.  The result was a failure to reconnect to the\nOSD or MDS (with an authentication error) if the MDS restarted after the\nservice had been up a few hours (long enough for the original authenticator\nto be invalid).  This was only a problem if the AUTH_X authentication was\nenabled.\n\nNow that the \u0027negotiate\u0027 and \u0027connect\u0027 stages are fully separated, we\nshould use the prepare_read_connect() helper instead, and remove the\nobsolete one.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8b218b8a4a65bf4e304ae8690cadb9100ef029c0",
      "tree": "0fcc54e0bfff4cea6bdbb73c391adc9763564a6b",
      "parents": [
        "052bb34af3bf8ae2001b9f03d884ba0def3e427c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 09 12:59:08 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 21:33:08 2010 -0700"
      },
      "message": "ceph: fix inode removal from snap realm when racing with migration\n\nWhen an inode was dropped while being migrated between two MDSs,\ni_cap_exporting_issued was non-zero such that issue caps were non-zero and\n__ceph_is_any_caps(ci) was true.  This prevented the inode from being\nremoved from the snap realm, even as it was dropped from the cache.\n\nFix this by dropping any residual i_snap_realm ref in destroy_inode.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "052bb34af3bf8ae2001b9f03d884ba0def3e427c",
      "tree": "db8aecde5b43263d9f3a2947663cb55de4414545",
      "parents": [
        "978097c907b58a2d085bbf7632bee1a5a7e6f6ba"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 09 12:52:26 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 21:33:07 2010 -0700"
      },
      "message": "ceph: add missing locking to protect i_snap_realm_item during split\n\nAll ci-\u003ei_snap_realm_item/realm-\u003einodes_with_caps manipulation should be\nprotected by realm-\u003einodes_with_caps_lock.  This bug would have only bit\nus in a rare race with a realm split (during some snap creations).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "978097c907b58a2d085bbf7632bee1a5a7e6f6ba",
      "tree": "1d52869c500f7b6d5c0566011c070e0924dbe57f",
      "parents": [
        "220bf991b0366cc50a94feede3d7341fa5710ee4"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 08 15:27:53 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Mar 20 21:33:06 2010 -0700"
      },
      "message": "ceph: implemented caps should always be superset of issued caps\n\nAdded assertion, and cleared one case where the implemented caps were\nnot following the issued caps.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "f1a3d57213fe264b4cf584e78bac36aaf9998729",
      "tree": "9adf9ba40793ecf83f7a1fd71b4bd73e726b6dac",
      "parents": [
        "422d2cb8f9afadba1ecd3614f658b6daaaa480fb"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Mon Jan 18 11:53:08 2010 +1100"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 05 14:49:41 2010 -0800"
      },
      "message": "ceph: update for write_inode API change\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "422d2cb8f9afadba1ecd3614f658b6daaaa480fb",
      "tree": "22e1a61acdbbe1459b190c4dbb6019360464b2e9",
      "parents": [
        "e9964c102312967a4bc1fd501cb628c4a3b19034"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Feb 26 15:32:31 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Mar 04 11:26:35 2010 -0800"
      },
      "message": "ceph: reset osd after relevant messages timed out\n\nThis simplifies the process of timing out messages. We\nkeep lru of current messages that are in flight. If a\ntimeout has passed, we reset the osd connection, so that\nmessages will be retransmitted.  This is a failsafe in case\nwe hit some sort of problem sending out message to the OSD.\nNormally, we\u0027ll get notification via an updated osdmap if\nthere are problems.\n\nIf a request is older than the keepalive timeout, send a\nkeepalive to ensure we detect any breaks in the TCP connection.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e9964c102312967a4bc1fd501cb628c4a3b19034",
      "tree": "7bccb0c4e29d94baaf8c30e008ec5aebdccf9c57",
      "parents": [
        "7af8f1e4aa86720840d3318e4dc225c3c7e5a6d0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:16:56 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:28:02 2010 -0800"
      },
      "message": "ceph: fix flush_dirty_caps race with caps migration\n\nThe flush_dirty_caps() used to loop over the first entry of the cap_dirty\ndirty list on the assumption that after calling ceph_check_caps() it would\nbe removed from the list.  This isn\u0027t true for caps that are being\nmigrated between MDSs, where we\u0027ve received the EXPORT but not the IMPORT.\n\nInstead, do a safe list iteration, and pin the next inode on the list via\nthe CEPH_I_NOFLUSH flag.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7af8f1e4aa86720840d3318e4dc225c3c7e5a6d0",
      "tree": "56129109512f2a01f4589a269f1494b6a5cb58d8",
      "parents": [
        "e53a8fd773065628b24605b289a9a40ee4a35d83"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:17:34 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:28:01 2010 -0800"
      },
      "message": "ceph: include migrating caps in issued set\n\nWe should include caps that are mid-migration (we\u0027ve received the EXPORT,\nbut not the IMPORT) in the issued caps set.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e53a8fd773065628b24605b289a9a40ee4a35d83",
      "tree": "7e590c04181eb8d4c9f8cc0e038853acc870f3f3",
      "parents": [
        "195d3ce2cc9a8ec69827f6369c41b269345b9988"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 14:50:05 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:28:00 2010 -0800"
      },
      "message": "ceph: fix osdmap decoding when pools include (removed) snaps\n\nAdd missing pointer dereference (p is a void **).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "195d3ce2cc9a8ec69827f6369c41b269345b9988",
      "tree": "9ef91489d379ac612895b6ab3118535969aba152",
      "parents": [
        "6f863e712d4114e8ae2f02de64ebeac0546ebaa0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 09:57:54 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:28:00 2010 -0800"
      },
      "message": "ceph: return EBADF if waiting for caps on closed file\n\nVerify the file is actually open for the given caps when we are\nwaiting for caps.  This ensures we will wake up and return EBADF\nif another thread closes the file out from under us.\n\nNote that EBADF is also the correct return code from write(2)\nwhen called on a file handle opened for reading (although the\nvfs should catch that).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6f863e712d4114e8ae2f02de64ebeac0546ebaa0",
      "tree": "0a61ce00922aa3670f53f44f7ae5ec2ad19c6c90",
      "parents": [
        "3ca02ef96e119d36bc1752baeae7dd0c59c2f325"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:26:41 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:26:41 2010 -0800"
      },
      "message": "ceph: set osd request message front length correctly\n\nWe didn\u0027t set the front length correctly.  When messages used\nthe message pool we ended up with the conservative max (4 KB), and\nthe rest of the time the slightly less conservative estimate.  Even\nthough the OSD ignores the extra data, set it to the right value to avoid\nsending extra data over the network.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3ca02ef96e119d36bc1752baeae7dd0c59c2f325",
      "tree": "5ef2a149d0f67b3f59fd5c4b168712046f7ce7f2",
      "parents": [
        "70edb55bdfa8922c8ad40bc5a67abb6d9fee8d47"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:25:00 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:25:00 2010 -0800"
      },
      "message": "ceph: reset front len on return to msgpool; BUG on mismatched front iov\n\nReset msg front len when a message is returned to the pool: the caller\nmay have changed it.\n\nBUG if we try to send a message with a hdr.front_len that doesn\u0027t match\nthe front iov.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "70edb55bdfa8922c8ad40bc5a67abb6d9fee8d47",
      "tree": "4e2f3445a71bc016adba9095a8885048b2d3bcfe",
      "parents": [
        "c16e786927b977cb880873214bbd815e8d5ec4ba"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 13:20:50 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:20:05 2010 -0800"
      },
      "message": "ceph: fix snaptrace decoding on cap migration between mds\n\nThis was simply broken.  Apparently at some point we thought about putting\nthe snaptrace in the middle section, but didn\u0027t.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c16e786927b977cb880873214bbd815e8d5ec4ba",
      "tree": "82774e0b06015f2d4813b6cfd3d1924ad96da5d7",
      "parents": [
        "1679f876a641d209e7b22e43ebda0693c71003cf"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 13:02:00 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:20:02 2010 -0800"
      },
      "message": "ceph: use single osd op reply msg\n\nUse a single ceph_msg for the osd reply, even when we are getting multiple\nreplies.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1679f876a641d209e7b22e43ebda0693c71003cf",
      "tree": "6cb4ba61dac343c093d7a428c48a2bb7619f0a31",
      "parents": [
        "080af17e9c6360c5a835528e8de3141a46273ed2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 26 13:55:51 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Mar 01 15:19:51 2010 -0800"
      },
      "message": "ceph: reset bits on connection close\n\nClear LOSSYTX bit, so that if/when we reconnect, said reconnect\nwill retry on failure.\n\nClear _PENDING bits too, to avoid polluting subsequent\nconnection state.\n\nDrop unused REGISTERED bit.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "080af17e9c6360c5a835528e8de3141a46273ed2",
      "tree": "d3e0104bf7ca217ddd938f367de3f4237e14b639",
      "parents": [
        "c99eb1c7263a44e63161a041a778b345b5cf0b6a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 25 16:40:07 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 26 10:02:03 2010 -0800"
      },
      "message": "ceph: remove bogus mds forward warning\n\nThe must_resend flag is always true, not false.  In any case, we can\njust ignore it anyway.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c99eb1c7263a44e63161a041a778b345b5cf0b6a",
      "tree": "7c1a303b30e8aadc0514af07748d25efd7fb2669",
      "parents": [
        "e80a52d14f868059e8ec790c9fae88cdb8a1df98"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 26 09:37:33 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 26 09:37:33 2010 -0800"
      },
      "message": "ceph: remove fragile __map_osds optimization\n\nWe used to try to avoid freeing and then reallocating the osd\nstruct.  This is a bit fragile due to potential interactions with\nother references (beyond o_requests), and may be the cause of\nthis crash:\n\n[120633.442358] BUG: unable to handle kernel NULL pointer dereference at (null)\n[120633.443292] IP: [\u003cffffffff812549b6\u003e] rb_erase+0x11d/0x277\n[120633.443292] PGD f7ff3067 PUD f7f53067 PMD 0\n[120633.443292] Oops: 0000 [#1] PREEMPT SMP\n[120633.443292] last sysfs file: /sys/kernel/uevent_seqnum\n[120633.443292] CPU 1\n[120633.443292] Modules linked in: ceph fan ac battery psmouse ehci_hcd ide_pci_generic ohci_hcd thermal processor button\n[120633.443292] Pid: 3023, comm: ceph-msgr/1 Not tainted 2.6.32-rc2 #12 H8SSL\n[120633.443292] RIP: 0010:[\u003cffffffff812549b6\u003e]  [\u003cffffffff812549b6\u003e] rb_erase+0x11d/0x277\n[120633.443292] RSP: 0018:ffff8800f7b13a50  EFLAGS: 00010246\n[120633.443292] RAX: ffff880022907819 RBX: ffff880022907818 RCX: 0000000000000000\n[120633.443292] RDX: ffff8800f7b13a80 RSI: ffff8800f587eb48 RDI: 0000000000000000\n[120633.443292] RBP: ffff8800f7b13a60 R08: 0000000000000000 R09: 0000000000000004\n[120633.443292] R10: 0000000000000000 R11: ffff8800c4441000 R12: ffff8800f587eb48\n[120633.443292] R13: ffff8800f58eaa00 R14: ffff8800f413c000 R15: 0000000000000001\n[120633.443292] FS:  00007fbef6e226e0(0000) GS:ffff880009200000(0000) knlGS:0000000000000000\n[120633.443292] CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b\n[120633.443292] CR2: 0000000000000000 CR3: 00000000f7c53000 CR4: 00000000000006e0\n[120633.443292] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n[120633.443292] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n[120633.443292] Process ceph-msgr/1 (pid: 3023, threadinfo ffff8800f7b12000, task ffff8800f5858b40)\n[120633.443292] Stack:\n[120633.443292]  ffff8800f413c000 ffff8800f587e9c0 ffff8800f7b13a80 ffffffffa0098a86\n[120633.443292] \u003c0\u003e 00000000000006f1 0000000000000000 ffff8800f7b13af0 ffffffffa009959b\n[120633.443292] \u003c0\u003e ffff8800f413c000 ffff880022a68400 ffff880022a68400 ffff8800f587e9c0\n[120633.443292] Call Trace:\n[120633.443292]  [\u003cffffffffa0098a86\u003e] __remove_osd+0x4d/0xbc [ceph]\n[120633.443292]  [\u003cffffffffa009959b\u003e] __map_osds+0x199/0x4fa [ceph]\n[120633.443292]  [\u003cffffffffa00999f4\u003e] ? __send_request+0xf8/0x186 [ceph]\n[120633.443292]  [\u003cffffffffa0099beb\u003e] kick_requests+0x169/0x3cb [ceph]\n[120633.443292]  [\u003cffffffffa009a8c1\u003e] ceph_osdc_handle_map+0x370/0x522 [ceph]\n\nSince we\u0027re probably screwed anyway if a small kmalloc is\nfailing, don\u0027t bother with trying to be clever here.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e80a52d14f868059e8ec790c9fae88cdb8a1df98",
      "tree": "8353f33245509d7c3bd7fb25f5c254df6db8db9b",
      "parents": [
        "161fd65ac934608345aed35226fc889ea3b0b500"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 25 12:40:45 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 25 12:40:45 2010 -0800"
      },
      "message": "ceph: fix connection fault STANDBY check\n\nMove any out_sent messages to out_queue _before_ checking if\nout_queue is empty and going to STANDBY, or else we may drop\nsomething that was never acked.\n\nAnd clean up the code a bit (less goto).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "161fd65ac934608345aed35226fc889ea3b0b500",
      "tree": "7e216c47fde0c06b0349adabe1d1363d9b71e74b",
      "parents": [
        "88d892a37fc231ab2aa3b1c40ca9d67224616594"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 25 12:38:57 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 25 12:38:57 2010 -0800"
      },
      "message": "ceph: invalidate_authorizer without con-\u003emutex held\n\nThis fixes lock ABBA inversion, as the -\u003einvalidate_authorizer()\nop may need to take a lock (or even call back into the\nmessenger).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "88d892a37fc231ab2aa3b1c40ca9d67224616594",
      "tree": "48ce9b4645716848a20852f552efa8cad87eabe2",
      "parents": [
        "a1ea787c7b6ec036d169d84e08cca7b6e399ba70"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Feb 23 18:16:23 2010 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 23 14:26:36 2010 -0800"
      },
      "message": "ceph: don\u0027t clobber write return value when using O_SYNC\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a1ea787c7b6ec036d169d84e08cca7b6e399ba70",
      "tree": "99eeb4be56e747593d6da388a8b92530f0188768",
      "parents": [
        "2600d2dd5085ab6fb09540226138a60055abf335"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 23 14:02:44 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 23 14:26:36 2010 -0800"
      },
      "message": "ceph: fix client_request_forward decoding\n\nThe tid is in the message header, not body.  Broken since 6df058c0.\n\nNo need to look at next mds session; just mark the request and be done.\n(The old error path was broken too, but now it\u0027s gone.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2600d2dd5085ab6fb09540226138a60055abf335",
      "tree": "5aeb8a110eb7a41dab2d16b3a5ba8d67ad068a82",
      "parents": [
        "a6369741c48815fedfce7072b7a9cd98b5bafd56"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 22 15:12:16 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 23 14:26:35 2010 -0800"
      },
      "message": "ceph: drop messages on unregistered mds sessions; cleanup\n\nVerify the mds session is currently registered before handling\nincoming messages.  Clean up message handlers to pull mds out\nof session-\u003es_mds instead of less trustworthy src field.\n\nClean up con_{get,put} debug output.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a6369741c48815fedfce7072b7a9cd98b5bafd56",
      "tree": "dd9ce7da7a6c5556d6c7731423dff0824aad9545",
      "parents": [
        "4ce1e9adabbad8f2c45ceeeb6de56cc368484297"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 22 13:59:00 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 23 14:26:35 2010 -0800"
      },
      "message": "ceph: fix comments, locking in destroy_inode\n\nThe destroy_inode path needs no inode locks since there are no\ninode references.  Update __ceph_remove_cap comment to reflect\nthat it is called without cap-\u003esession-\u003es_mutex in this case.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4ce1e9adabbad8f2c45ceeeb6de56cc368484297",
      "tree": "960188ec419b55ecaa3288b3d54aa5e2fe481b02",
      "parents": [
        "5b3a4db3e4009aff918abb1353eb3f4925393a7b"
      ],
      "author": {
        "name": "Alexander Beregalov",
        "email": "a.beregalov@gmail.com",
        "time": "Mon Feb 22 17:17:44 2010 +0300"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 23 14:26:34 2010 -0800"
      },
      "message": "ceph: move dereference after NULL test\n\nSigned-off-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5b3a4db3e4009aff918abb1353eb3f4925393a7b",
      "tree": "0f55666c827c3dfe31309209b69121e431366739",
      "parents": [
        "bcd2cbd10ce31c950a40c08d7f601f8ff23537b8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 19 21:43:23 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 23 14:26:29 2010 -0800"
      },
      "message": "ceph: fix up unexpected message handling\n\nFix skipping of unexpected message types from osd, mon.\n\nClean up pr_info and debug output.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "bcd2cbd10ce31c950a40c08d7f601f8ff23537b8",
      "tree": "1f419714feceb6072828cc8977610cfcadec1705",
      "parents": [
        "c9af9fb68e01eb2c2165e1bc45cfeeed510c64e6"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Feb 19 00:12:21 2010 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 19 14:41:10 2010 -0800"
      },
      "message": "ceph: cleanup redundant code in handle_cap_grant\n\nThere is no state in local vars that requires us to loop after temporarily\ndropping i_lock.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c9af9fb68e01eb2c2165e1bc45cfeeed510c64e6",
      "tree": "9af8caecd66c6557c5ada6a38d4b2ff9be180d35",
      "parents": [
        "e63dc5c780ba32d6d8b3662eecce2b8d96489b41"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Feb 19 00:10:11 2010 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 19 14:40:51 2010 -0800"
      },
      "message": "ceph: don\u0027t truncate dirty pages in invalidate work thread\n\nInstead of truncating the whole range of pages, we skip those\npages that are dirty or in the middle of writeback. Those pages\nwill be cleared later when the writeback completes.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e63dc5c780ba32d6d8b3662eecce2b8d96489b41",
      "tree": "ed6ee7f557c479934b6d8a70b7ccba86b13ae670",
      "parents": [
        "5ecad6fd7bfd30b3eaea51345f546b81de7a6473"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Feb 19 00:07:01 2010 +0000"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 19 14:34:18 2010 -0800"
      },
      "message": "ceph: remove page upon writeback completion if lost cache cap\n\nThis page should have been removed earlier when the cache cap was\nrevoked, but a writeback was in flight, so it was skipped. We truncate\nit here just as the writeback finishes, while it\u0027s still locked.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5ecad6fd7bfd30b3eaea51345f546b81de7a6473",
      "tree": "98447fd009cc03e5125ffc51b4caac07123e0f70",
      "parents": [
        "2c27c9a57c93a0757b9b4b0e7dc1abeaf1db1ce2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:43:37 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Feb 19 14:33:18 2010 -0800"
      },
      "message": "ceph: fix check for invalidate_mapping_pages success\n\nWe need to know whether there was any page left behind, and not the\nreturn value (the total number of pages invalidated).  Look at the mapping\nto see if we were successful or not.\n\nMove it all into a helper to simplify the two callers.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2c27c9a57c93a0757b9b4b0e7dc1abeaf1db1ce2",
      "tree": "ffd4b1fd667938e2707d221bcc9de93421571dc0",
      "parents": [
        "a17d6473cc9eb64a5b41c568310aa73824ebaa64"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 15:45:51 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 15:45:51 2010 -0800"
      },
      "message": "ceph: fix typo in ceph_queue_writeback debug output\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a17d6473cc9eb64a5b41c568310aa73824ebaa64",
      "tree": "415e0ade75a7221c394ed56827fcdc80d598dfcd",
      "parents": [
        "4fc51be8fa7043ff9a1e34fef0e99214373332ac"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 13:56:07 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 13:56:07 2010 -0800"
      },
      "message": "ceph: v0.19 release\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4fc51be8fa7043ff9a1e34fef0e99214373332ac",
      "tree": "beba3bc83b5a07a16bb63c6e80713cb2b42bf4fb",
      "parents": [
        "9794b146fa7b93f8ab74fb62d67fdefad760769f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 15:55:03 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:02:49 2010 -0800"
      },
      "message": "ceph: use rbtree for pg pools; decode new osdmap format\n\nSince we can now create and destroy pg pools, the pool ids will be sparse,\nand an array no longer makes sense for looking up by pool id.  Use an\nrbtree instead.\n\nThe OSDMap encoding also no longer has a max pool count (previously used to\nallocate the array).  There is a new pool_max, that is the largest pool id\nwe\u0027ve ever used, although we don\u0027t actually need it in the client.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9794b146fa7b93f8ab74fb62d67fdefad760769f",
      "tree": "9478fc2cad415db3baf69e8b975fc33b5917bdf6",
      "parents": [
        "7c1332b8cb5b27656cf6ab1f5fe808a8eb8bb2c0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 15:53:32 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:02:48 2010 -0800"
      },
      "message": "ceph: fix memory leak when destroying osdmap with pg_temp mappings\n\nAlso move _lookup_pg_mapping into a helper.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7c1332b8cb5b27656cf6ab1f5fe808a8eb8bb2c0",
      "tree": "f990ab6b339a88896f41a6b3541d0676684c935d",
      "parents": [
        "85ccce43a3fc15a40ded6ae1603e3f68a17f4d24"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 11:39:45 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:02:47 2010 -0800"
      },
      "message": "ceph: fix iterate_caps removal race\n\nWe need to be able to iterate over all caps on a session with a\npossibly slow callback on each cap.  To allow this, we used to\nprevent cap reordering while we were iterating.  However, we were\nnot safe from races with removal: removing the \u0027next\u0027 cap would\nmake the next pointer from list_for_each_entry_safe be invalid,\nand cause a lock up or similar badness.\n\nInstead, we keep an iterator pointer in the session pointing to\nthe current cap.  As before, we avoid reordering.  For removal,\nif the cap isn\u0027t the current cap we are iterating over, we are\nfine.  If it is, we clear cap-\u003eci (to mark the cap as pending\nremoval) but leave it in the session list.  In iterate_caps, we\ncan safely finish removal and get the next cap pointer.\n\nWhile we\u0027re at it, clean up put_cap to not take a cap reservation\ncontext, as it was never used.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "85ccce43a3fc15a40ded6ae1603e3f68a17f4d24",
      "tree": "1e15fb7dc7df43da4a3feacff671c8169e96291d",
      "parents": [
        "5ce6e9dbe6805ab8ee67e21936d17f431adc63c6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:02:43 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Feb 17 10:02:43 2010 -0800"
      },
      "message": "ceph: clean up readdir caps reservation\n\nUse a global counter for the minimum number of allocated caps instead of\nhard coding a check against readdir_max.  This takes into account multiple\nclient instances, and avoids examining the superblock mount options when a\ncap is dropped.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5ce6e9dbe6805ab8ee67e21936d17f431adc63c6",
      "tree": "9aca0fdc38afc5755d59eb3ba84c86f26df44012",
      "parents": [
        "85ff03f6bfef7d5b59ab3aefd4773f497ffad8a4"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 15 16:22:28 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 22:01:11 2010 -0800"
      },
      "message": "ceph: fix authentication races, auth_none oops\n\nCall __validate_auth() under monc-\u003emutex, and use helper for\ninitial hello so that the pending_auth flag is set.  This fixes\npossible races in which we have an authentication request (hello\nor otherwise) pending and send another one.  In particular, with\nauth_none, we _never_ want to call ceph_build_auth() from\n__validate_auth(), since the -\u003ebuild_request() method is NULL.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "85ff03f6bfef7d5b59ab3aefd4773f497ffad8a4",
      "tree": "ef0a700d68f87b84ebb235c2ed7aae69c7414a8d",
      "parents": [
        "a105f00cf17d711e876b3dc67e15f9a89b7de5a3"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 15 14:47:28 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 22:01:10 2010 -0800"
      },
      "message": "ceph: use rbtree for mon statfs requests\n\nAn rbtree is lighter weight, particularly given we will generally have\nvery few in-flight statfs requests.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a105f00cf17d711e876b3dc67e15f9a89b7de5a3",
      "tree": "59c4b280aa92e9910670ee7fd274f21bc3659a04",
      "parents": [
        "44ca18f2682eb1cfbed153849adedb79e3e19790"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 15 14:37:55 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 22:01:09 2010 -0800"
      },
      "message": "ceph: use rbtree for snap_realms\n\nSwitch from radix tree to rbtree for snap realms.  This is much more\nappropriate given that realm keys are few and far between.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "44ca18f2682eb1cfbed153849adedb79e3e19790",
      "tree": "063dd8382179e65717ec10dc1ffc135950050abd",
      "parents": [
        "91e45ce38946a8efa21fefbc65d023ca3c0b434f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 15 12:08:46 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 22:01:08 2010 -0800"
      },
      "message": "ceph: use rbtree for mds requests\n\nThe rbtree is a more appropriate data structure than a radix_tree.  It\navoids extra memory usage and simplifies the code.\n\nIt also fixes a bug where the debugfs \u0027mdsc\u0027 file wasn\u0027t including the\nmost recent mds request.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "91e45ce38946a8efa21fefbc65d023ca3c0b434f",
      "tree": "704146df9a3db46820684841cceffaabe5bc21cd",
      "parents": [
        "e2663ab60de59d20fa33da3528f6d5359f8eb003"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 15 12:05:09 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 22:01:07 2010 -0800"
      },
      "message": "ceph: cancel delayed work when closing connection\n\nThis ensures that if/when we reopen the connection, we can requeue work on\nthe connection immediately, without waiting for an old timer to expire.\nQueue new delayed work inside con-\u003emutex to avoid any race.\n\nThis fixes problems with clients failing to reconnect to the MDS due to\nthe client_reconnect message arriving too late (due to waiting for an old\ndelayed work timeout to expire).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e2663ab60de59d20fa33da3528f6d5359f8eb003",
      "tree": "f167aba83280b6767e1f9bdf2e67e4ac48a85c68",
      "parents": [
        "153a008bf7915ea9127341409170cb197d111282"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 22:01:03 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 16 22:01:03 2010 -0800"
      },
      "message": "ceph: allow connection to be reopened by fault callback\n\nFix the messenger to allow a ceph_con_open() during the fault callback.\nPreviously the work wasn\u0027t getting queued on the connection because the\nfault path avoids requeued work (normally spurious).  Loop on reopening by\nchecking for the OPENING state bit.\n\nThis fixes OSD reconnects when a TCP connection drops.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "153a008bf7915ea9127341409170cb197d111282",
      "tree": "da9852014c4a71f8578437698200b56218874110",
      "parents": [
        "6c5d1a49e5e88ee831117f4b2375829933ad15da"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 15 12:11:51 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Feb 15 12:11:51 2010 -0800"
      },
      "message": "ceph: reset osd connections after fault\n\nA single osd connection fault (e.g. tcp disconnect) wasn\u0027t\nreopening the connection, which causes all current and future\nrequests for that osd to hang.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6c5d1a49e5e88ee831117f4b2375829933ad15da",
      "tree": "b96f9e7b77d7adfd763cb1089fc0e414605c361e",
      "parents": [
        "8031049147c58d9d8b6226c3ac31a9d72d053e25"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Feb 13 20:29:31 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Feb 13 20:29:31 2010 -0800"
      },
      "message": "ceph: fix msgr to keep sent messages until acked\n\nThe test was backwards from commit b3d1dbbd: keep the message if the\nconnection _isn\u0027t_ lossy.  This allows the client to continue when the\nTCP connection drops for some reason (network glitch) but both ends\nsurvive.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8031049147c58d9d8b6226c3ac31a9d72d053e25",
      "tree": "d89aec0fc9dcae6ea20fe0665b7700911c2dbf61",
      "parents": [
        "0840d8af3e6e40bcd5f2366698eb2755f88acfea"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 09 16:43:11 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:55 2010 -0800"
      },
      "message": "ceph: remove bogus invalidate_mapping_pages\n\nWe were invalidating mapping pages when dropping FILE_CACHE in\n__send_cap().  But ceph_check_caps attempts to invalidate already, and\nalso checks for success, so we should never get to this point.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0840d8af3e6e40bcd5f2366698eb2755f88acfea",
      "tree": "9eed5acb6d23bdefcc4e4a832347199cd3b181d2",
      "parents": [
        "3c6f6b79a64db7f1c7abf09d693db3b0066784fb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 09 15:44:16 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:54 2010 -0800"
      },
      "message": "ceph: invalidate pages even if truncate is pending\n\nThere is no reason not to invalidate pages when a truncate is pending.\nBoth throw out page cache pages.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3c6f6b79a64db7f1c7abf09d693db3b0066784fb",
      "tree": "e17b4cd848212b0556180331280044dd1526b742",
      "parents": [
        "6a026589ba333185c466c906376fe022a27a53f9"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 09 15:24:44 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:54 2010 -0800"
      },
      "message": "ceph: cleanup async writeback, truncation, invalidate helpers\n\nGrab inode ref in helper.  Make work functions static, with consistent\nnaming.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6a026589ba333185c466c906376fe022a27a53f9",
      "tree": "7c536163e2192928978b79d5a6bbd79dd5993777",
      "parents": [
        "68c283236a1e0772e1a469dd2ffc17afc300b07b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Feb 09 14:04:02 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 11 11:48:53 2010 -0800"
      },
      "message": "ceph: fix sync read eof check deadlock\n\nIf a sync read gets a short result from the OSD, it may need to do a\ngetattr to see if it is short due to reaching end-of-file.  The getattr\nwas being done while holding a reference to FILE_RD, which can lead to\na deadlock if the MDS is revoking that capability bit and can\u0027t process\nthe getattr until it does.\n\nWe fix this by setting a flag if EOF size validation is needed, and doing\nthe getattr in ceph_aio_read, after the RD cap ref is dropped.  If the\nread needs to be continued, we loop and continue traversing the file.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    }
  ],
  "next": "68c283236a1e0772e1a469dd2ffc17afc300b07b"
}
