• Alex Elder's avatar
    rbd: implement layered reads · 8b3e1a56
    Alex Elder authored
    Implement layered read requests for format 2 rbd images.
    
    If an rbd image is a clone of a snapshot, the snapshot will be the
    clone's "parent" image.  When an object read request on a clone
    comes back with ENOENT it indicates that the clone is not yet
    populated with that portion of the image's data, and the parent
    image should be consulted to satisfy the read.
    
    When this occurs, a new image request is created, directed to the
    parent image.  The offset and length of the image are the same as
    the image-relative offset and length of the object request that
    produced ENOENT.  Data from the parent image therefore satisfies the
    object read request for the original image request.
    
    While this code works, it will not be active until we enable the
    layering feature (by adding RBD_FEATURE_LAYERING to the value of
    RBD_FEATURES_SUPPORTED).
    Signed-off-by: default avatarAlex Elder <elder@inktank.com>
    Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
    8b3e1a56
rbd.c 111 KB