Skip to content
  • Jeff Layton's avatar
    libceph: add an epoch_barrier field to struct ceph_osd_client · 58eb7932
    Jeff Layton authored
    
    
    Cephfs can get cap update requests that contain a new epoch barrier in
    them. When that happens we want to pause all OSD traffic until the right
    map epoch arrives.
    
    Add an epoch_barrier field to ceph_osd_client that is protected by the
    osdc->lock rwsem. When the barrier is set, and the current OSD map
    epoch is below that, pause the request target when submitting the
    request or when revisiting it. Add a way for upper layers (cephfs)
    to update the epoch_barrier as well.
    
    If we get a new map, compare the new epoch against the barrier before
    kicking requests and request another map if the map epoch is still lower
    than the one we want.
    
    If we get a map with a full pool, or at quota condition, then set the
    barrier to the current epoch value.
    
    Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
    Reviewed-by: default avatarIlya Dryomov <idryomov@gmail.com>
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    58eb7932