mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:24:45 +01:00
drbd: use sendpages_ok() instead of sendpage_ok()
Currently _drbd_send_page() use sendpage_ok() in order to enable MSG_SPLICE_PAGES, it check the first page of the iterator, the iterator may represent contiguous pages. MSG_SPLICE_PAGES enables skb_splice_from_iter() which checks all the pages it sends with sendpage_ok(). When _drbd_send_page() sends an iterator that the first page is sendable, but one of the other pages isn't skb_splice_from_iter() warns and aborts the data transfer. Using the new helper sendpages_ok() in order to enable MSG_SPLICE_PAGES solves the issue. Acked-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com> Signed-off-by: Ofir Gal <ofir.gal@volumez.com> Link: https://lore.kernel.org/r/20240718084515.3833733-4-ofir.gal@volumez.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
6af7331a70
commit
7960af373a
1 changed files with 1 additions and 1 deletions
|
|
@ -1550,7 +1550,7 @@ static int _drbd_send_page(struct drbd_peer_device *peer_device, struct page *pa
|
|||
* put_page(); and would cause either a VM_BUG directly, or
|
||||
* __page_cache_release a page that would actually still be referenced
|
||||
* by someone, leading to some obscure delayed Oops somewhere else. */
|
||||
if (!drbd_disable_sendpage && sendpage_ok(page))
|
||||
if (!drbd_disable_sendpage && sendpages_ok(page, len, offset))
|
||||
msg.msg_flags |= MSG_NOSIGNAL | MSG_SPLICE_PAGES;
|
||||
|
||||
drbd_update_congested(peer_device->connection);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue