• Al Viro's avatar
    iov_iter: teach iterate_{bvec,xarray}() about possible short copies · 1b4fb5ff
    Al Viro authored
    ... and now we finally can sort out the mess in _copy_mc_to_iter().
    Provide a variant of iterate_and_advance() that does *NOT* ignore
    the return values of bvec, xarray and kvec callbacks, use that in
    _copy_mc_to_iter().  That gets rid of magic in those callbacks -
    we used to need it so we'd get at least the right return value in
    case of failure halfway through.
    
    As a bonus, now iterator is advanced by the amount actually copied
    for all flavours.  That's what the callers expect and it used to do that
    correctly in iovec and xarray cases.  However, in kvec and bvec cases
    the iterator had not been advanced on such failures, breaking the users.
    Fixed now...
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    1b4fb5ff
iov_iter.c 49.7 KB