Hi Eric, On Tue, Feb 12, 2019 at 05:58:41PM -0800, Eric Dumazet wrote: > In the past, we tried to increase the buffer size up to 32 KB in order > to reduce number of syscalls per dump. > > Commit 2d34851cd341 ("lib/libnetlink: re malloc buff if size is not enough") > brought the size back to 4KB because the kernel can not know the application > is ready to receive bigger requests. > > See kernel commits 9063e21fb026 ("netlink: autosize skb lengthes") and > d35c99ff77ec ("netlink: do not enter direct reclaim from netlink_dump()") > for more details.
Wouldn't it be better if the kernel recognized MSG_TRUNC and allocated a buffer large enough to hold the full message in that case? I have no idea how hard that would be to implement, but calling recvmsg() with MSG_TRUNC set and not getting the full message length in return is not quite what one expects after reading recvmsg(2). Cheers, Phil