提交 c67f1fd2 编写于 作者: A Al Viro

csum_and_copy_to_iter(): handle ITER_DISCARD

Not hard to implement - we are not copying anything here, so
csum_and_memcpy() is not usable, but calculating a checksum
of source directly is trivial...
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 40a86061
...@@ -1549,8 +1549,12 @@ size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *_csstate, ...@@ -1549,8 +1549,12 @@ size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *_csstate,
__wsum sum, next; __wsum sum, next;
if (unlikely(iov_iter_is_discard(i))) { if (unlikely(iov_iter_is_discard(i))) {
WARN_ON(1); /* for now */ // can't use csum_memcpy() for that one - data is not copied
return 0; csstate->csum = csum_block_add(csstate->csum,
csum_partial(addr, bytes, 0),
csstate->off);
csstate->off += bytes;
return bytes;
} }
sum = csum_shift(csstate->csum, csstate->off); sum = csum_shift(csstate->csum, csstate->off);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册