• Ilya Dryomov's avatar
    libceph: fix breakage caused by multipage bvecs · 187df763
    Ilya Dryomov authored
    A bvec can now consist of multiple physically contiguous pages.
    This means that bvec_iter_advance() can move to a different page while
    staying in the same bvec (i.e. ->bi_bvec_done != 0).
    
    The messenger works in terms of segments which can now be defined as
    the smaller of a bvec and a page.  The "more bytes to process in this
    segment" condition holds only if bvec_iter_advance() leaves us in the
    same bvec _and_ in the same page.  On next bvec (possibly in the same
    page) and on next page (possibly in the same bvec) we may need to set
    ->last_piece.
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    187df763
messenger.c 87.9 KB