• Sage Weil's avatar
    ceph: fix snap writeback when racing with writes · af0ed569
    Sage Weil authored
    There are two problems that come up when we try to queue a capsnap while a
    write is in progress:
    
     - The FILE_WR cap is held, but not yet dirty, so we may queue a capsnap
       with dirty == 0.  That will crash later in __ceph_flush_snaps().  Or
       on the FILE_WR cap if a write is in progress.
     - We may not have i_head_snapc set, which causes problems pretty quickly.
       Look to the snaprealm in this case.
    Reviewed-by: default avatarYehuda Sadeh <yehuda@hq.newdream.net>
    Signed-off-by: default avatarSage Weil <sage@newdream.net>
    af0ed569
snap.c 25.9 KB