1. 15 5月, 2012 9 次提交
  2. 08 5月, 2012 11 次提交
  3. 06 4月, 2012 1 次提交
    • A
      rbd: don't hold spinlock during messenger flush · cd9d9f5d
      Alex Elder 提交于
      A recent change made changes to the rbd_client_list be protected by
      a spinlock.  Unfortunately in rbd_put_client(), the lock is taken
      before possibly dropping the last reference to an rbd_client, and on
      the last reference that eventually calls flush_workqueue() which can
      sleep.
      
      The problem was flagged by a debug spinlock warning:
          BUG: spinlock wrong CPU on CPU#3, rbd/27814
      
      The solution is to move the spinlock acquisition and release inside
      rbd_client_release(), which is the spot where it's really needed for
      protecting the removal of the rbd_client from the client list.
      Signed-off-by: NAlex Elder <elder@dreamhost.com>
      Reviewed-by: NSage Weil <sage@newdream.net>
      cd9d9f5d
  4. 22 3月, 2012 19 次提交