1. 17 May, 2010 3 commits
    • Sage Weil's avatar
      ceph: invalidate affected dentry leases on aborted requests · 81a6cf2d
      Sage Weil authored
      If we abort a request, we return to caller, but the request may still
      complete.  And if we hold the dir FILE_EXCL bit, we may not release a
      lease when sending a request.  A simple un-tar, control-c, un-tar again
      will reproduce the bug (manifested as a 'Cannot open: File exists').
      
      Ensure we invalidate affected dentry leases (as well dir I_COMPLETE) so
      we don't have valid (but incorrect) leases.  Do the same, consistently, at
      other sites where I_COMPLETE is similarly cleared.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      81a6cf2d
    • Sage Weil's avatar
      ceph: fix race between aborted requests and fill_trace · b4556396
      Sage Weil authored
      When we abort requests we need to prevent fill_trace et al from doing
      anything that relies on locks held by the VFS caller.  This fixes a race
      between the reply handler and the abort code, ensuring that continue
      holding the dir mutex until the reply handler completes.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      b4556396
    • Sage Weil's avatar
      ceph: clean up mds reply, error handling · e1518c7c
      Sage Weil authored
      We would occasionally BUG out in the reply handler because r_reply was
      nonzero, due to a race with ceph_mdsc_do_request temporarily setting
      r_reply to an ERR_PTR value.  This is unnecessary, messy, and also wrong
      in the EIO case.
      
      Clean up by consistently using r_err for errors and r_reply for messages.
      Also fix the abort logic to trigger consistently for all errors that return
      to the caller early (e.g., EIO from timeout case).  If an abort races with
      a reply, use the result from the reply.
      
      Also fix locking for r_err, r_reply update in the reply handler.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      e1518c7c
  2. 16 May, 2010 6 commits
  3. 15 May, 2010 17 commits
  4. 14 May, 2010 14 commits