• Alex Elder's avatar
    libceph: record residual bytes for all message data types · 25aff7c5
    Alex Elder authored
    All of the data types can use this, not just the page array.  Until
    now, only the bio type doesn't have it available, and only the
    initiator of the request (the rbd client) is able to supply the
    length of the full request without re-scanning the bio list.  Change
    the cursor init routines so the length is supplied based on the
    message header "data_len" field, and use that length to intiialize
    the "resid" field of the cursor.
    
    In addition, change the way "last_piece" is defined so it is based
    on the residual number of bytes in the original request.  This is
    necessary (at least for bio messages) because it is possible for
    a read request to succeed without consuming all of the space
    available in the data buffer.
    
    This resolves:
        http://tracker.ceph.com/issues/4427Signed-off-by: default avatarAlex Elder <elder@inktank.com>
    Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
    25aff7c5
messenger.c 83.4 KB