• Ilya Dryomov's avatar
    libceph: delete from need_resend_linger before check_linger_pool_dne() · a10bcb19
    Ilya Dryomov authored
    When processing a map update consisting of multiple incrementals, we
    may end up running check_linger_pool_dne() on a lingering request that
    was previously added to need_resend_linger list.  If it is concluded
    that the target pool doesn't exist, the request is killed off while
    still on need_resend_linger list, which leads to a crash on a NULL
    lreq->osd in kick_requests():
    
        libceph: linger_id 18446462598732840961 pool does not exist
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
        IP: ceph_osdc_handle_map+0x4ae/0x870
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    a10bcb19
osd_client.c 122 KB