• Sage Weil's avatar
    ceph: reuse request message when replaying against recovering mds · 01a92f17
    Sage Weil authored
    Replayed rename operations (after an mds failure/recovery) were broken
    because the request paths were regenerated from the dentry names, which
    get mangled when d_move() is called.
    
    Instead, resend the previous request message when replaying completed
    operations.  Just make sure the REPLAY flag is set and the target ino is
    filled in.
    
    This fixes problems with workloads doing renames when the MDS restarts,
    where the rename operation appears to succeed, but on mds restart then
    fails (leading to client confusion, app breakage, etc.).
    Signed-off-by: default avatarSage Weil <sage@newdream.net>
    01a92f17
mds_client.c 79.2 KB