• I
    libceph: unlink from o_linger_requests when clearing r_osd · a390de02
    Ilya Dryomov 提交于
    Requests have to be unlinked from both osd->o_requests (normal
    requests) and osd->o_linger_requests (linger requests) lists when
    clearing req->r_osd.  Otherwise __unregister_linger_request() gets
    confused and we trip over a !list_empty(&osd->o_linger_requests)
    assert in __remove_osd().
    
    MON=1 OSD=1:
    
        # cat remove-osd.sh
        #!/bin/bash
        rbd create --size 1 test
        DEV=$(rbd map test)
        ceph osd out 0
        sleep 3
        rbd map dne/dne # obtain a new osdmap as a side effect
        rbd unmap $DEV & # will block
        sleep 3
        ceph osd in 0
    Signed-off-by: NIlya Dryomov <idryomov@redhat.com>
    Reviewed-by: NAlex Elder <elder@linaro.org>
    a390de02
osd_client.c 76.1 KB