1. 04 Mar, 2011 3 commits
    • Sage Weil's avatar
      libceph: fix msgr standby handling · e00de341
      Sage Weil authored
      The standby logic used to be pretty dependent on the work requeueing
      behavior that changed when we switched to WQ_NON_REENTRANT.  It was also
      very fragile.
      
      Restructure things so that:
       - We clear WRITE_PENDING when we set STANDBY.  This ensures we will
         requeue work when we wake up later.
       - con_work backs off if STANDBY is set.  There is nothing to do if we are
         in standby.
       - clear_standby() helper is called by both con_send() and con_keepalive(),
         the two actions that can wake us up again.  Move the connect_seq++
         logic here.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      e00de341
    • Sage Weil's avatar
      libceph: fix msgr keepalive flag · e76661d0
      Sage Weil authored
      There was some broken keepalive code using a dead variable.  Shift to using
      the proper bit flag.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      e76661d0
    • Sage Weil's avatar
      libceph: fix msgr backoff · 60bf8bf8
      Sage Weil authored
      With commit f363e45f we replaced a bunch of hacky workqueue mutual
      exclusion logic with the WQ_NON_REENTRANT flag.  One pieces of fallout is
      that the exponential backoff breaks in certain cases:
      
       * con_work attempts to connect.
       * we get an immediate failure, and the socket state change handler queues
         immediate work.
       * con_work calls con_fault, we decide to back off, but can't queue delayed
         work.
      
      In this case, we add a BACKOFF bit to make con_work reschedule delayed work
      next time it runs (which should be immediately).
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      60bf8bf8
  2. 03 Mar, 2011 5 commits
  3. 22 Feb, 2011 2 commits
  4. 21 Feb, 2011 30 commits