• Sage Weil's avatar
    libceph: fix linger request requeuing · 935b639a
    Sage Weil authored
    The r_req_lru_item list node moves between several lists, and that cycle
    is not directly related (and does not begin) with __register_request().
    Initialize it in the request constructor, not __register_request(). This
    fixes later badness (below) when OSDs restart underneath an rbd mount.
    
    Crashes we've seen due to this include:
    
    [  213.974288] kernel BUG at net/ceph/messenger.c:2193!
    
    and
    
    [  144.035274] BUG: unable to handle kernel NULL pointer dereference at 0000000000000048
    [  144.035278] IP: [<ffffffffa036c053>] con_work+0x1463/0x2ce0 [libceph]
    Signed-off-by: default avatarSage Weil <sage@newdream.net>
    935b639a
osd_client.c 55.8 KB