Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

osd: bail from _committed_osd_maps inside osd_lock #15710

Merged
merged 1 commit into from Jun 19, 2017

Commits on Jun 16, 2017

  1. osd: bail from _committed_osd_maps inside osd_lock

    thread A:
     - _committed_osd_maps starts
     - checks is_stopping(), false
    thread B:
     - calls shutdown()
     - takes osd_lock
     - drains/clear peering_wq, etc.
    thread A:
     - finally gets osd_lock
     - queues new peering_wq events
    
    Eventually the dtor on the peering wq/tp asserts out.
    
    We still need to check before taking the lock to resolve a deadlock
    with msgr shutdown; see aa8f2f1.
    
    Fix by check both outside and inside of osd_lock
    so that it is ordered wrt the shutdown() call.  This
    matches (almost) every other site checking is_stopping()
    directly after taking osd_lock or heartbeat_lock.
    
    Fixes: http://tracker.ceph.com/issues/20273
    Signed-off-by: Sage Weil <sage@redhat.com>
    liewegas committed Jun 16, 2017
    Copy the full SHA
    0267110 View commit details
    Browse the repository at this point in the history