optimize copy_page_{to,from}_iter()
if we'd ended up in the end of a segment, jump to the beginning of the next one (iov_offset = 0, iov++), rather than having the next primitive deal with that. Ought to be folded back... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
6abd232274
commit
81055e584f
|
@ -74,6 +74,10 @@ size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes,
|
||||||
}
|
}
|
||||||
kunmap(page);
|
kunmap(page);
|
||||||
done:
|
done:
|
||||||
|
if (skip == iov->iov_len) {
|
||||||
|
iov++;
|
||||||
|
skip = 0;
|
||||||
|
}
|
||||||
i->count -= wanted - bytes;
|
i->count -= wanted - bytes;
|
||||||
i->nr_segs -= iov - i->iov;
|
i->nr_segs -= iov - i->iov;
|
||||||
i->iov = iov;
|
i->iov = iov;
|
||||||
|
@ -152,6 +156,10 @@ size_t copy_page_from_iter(struct page *page, size_t offset, size_t bytes,
|
||||||
}
|
}
|
||||||
kunmap(page);
|
kunmap(page);
|
||||||
done:
|
done:
|
||||||
|
if (skip == iov->iov_len) {
|
||||||
|
iov++;
|
||||||
|
skip = 0;
|
||||||
|
}
|
||||||
i->count -= wanted - bytes;
|
i->count -= wanted - bytes;
|
||||||
i->nr_segs -= iov - i->iov;
|
i->nr_segs -= iov - i->iov;
|
||||||
i->iov = iov;
|
i->iov = iov;
|
||||||
|
|
Loading…
Reference in New Issue