Re: [PATCH 0/3] vmsplice: make vmsplice a trivial wrapper for preadv2/pwritev2
From: "David Hildenbrand (Arm)" <david@kernel.org>
Date: 2026-06-03 07:50:22
Also in:
linux-api, linux-fsdevel, linux-mm, linux-patches, lkml
On 6/2/26 20:44, Eric Biggers wrote:
On Tue, Jun 02, 2026 at 10:25:06AM +0200, David Hildenbrand (Arm) wrote:quoted
On 6/2/26 02:28, Andrew Morton wrote:quoted
Well yes, The patchset seems sensible from a quality POV. But to make a decision we should first have a decent understanding of its downside impact.I guess most (all?) of us ... dislike ... vmsplice(), so trying to remove it entirely is certainly very appealing ...quoted
I haven't seen a description of that impact in the discussion thus far. And that description is owed, please. I assume a small number of specialized applications are using vmsplice() to great effect? What are those applications? What is the impact of this change?I did some digging, and the kernel crypto API documents using splice/vmsplice for zero-copy[1] and libkcapi [2]. I did not find performance numbers, how much vmsplice/splice actually gives us. Playing with the kcapi-speed tool [3] (specifying --vmsplice vs. --sendmsg) doesn't really reveal a big difference at least on my notebook. Not sure if the parameters I specify are reasonable. I don't know whether downgrading vmsplice to preadv2/pwritev2 would perform significantly worse than sendmsg ... and I don't know what the default would usually be (default to vmsplice or sendmsg). I might try finding some time to play with it more, but I doubt it, so if anybody else has time ... :)AF_ALG is a mistake and isn't commonly used. Using a userspace crypto library is faster and is what almost everyone does anyway, as it avoids the syscall overhead. There are many other issues with AF_ALG as well. 7.2 will mark AF_ALG as deprecated, mostly remove AF_ALG's zero-copy support, and remove AF_ALG's async I/O support: https://lore.kernel.org/linux-crypto/20260430011544.31823-1-ebiggers@kernel.org/ (local) https://lore.kernel.org/linux-crypto/20260504225328.25356-1-ebiggers@kernel.org/ (local) https://lore.kernel.org/linux-crypto/20260523-af-alg-harden-v1-0-c76755c3a5c5@gmail.com/ (local) In practice, the programs that are keeping Linux distros from disabling AF_ALG in their kconfig outright are just iwd, cryptsetup, and bluez. They use AF_ALG just because it was mistakenly thought to be easier than using a userspace crypto library. They don't need maximum performance, nor do they use vmsplice, splice, or sendfile. There is other highly niche code out there that does implement the AF_ALG + vmsplice + splice thing, e.g. libkcapi. But it's just not enough of a reason to keep zero-copy support, especially considering that AF_ALG has always been the wrong solution in the first place. The fallback to copying the data is fine for this deprecated API.
Cool, thanks for sharing that Eric! -- Cheers, David