Re: [PATCH 0/6] kernel tinification: optionally compile out splice family of syscalls (splice, vmsplice, tee and sendfile)
From: Josh Triplett <hidden>
Date: 2014-11-24 09:00:54
Also in:
linux-api, linux-fsdevel, lkml
On Mon, Nov 24, 2014 at 09:38:20AM +0100, Geert Uytterhoeven wrote:
On Mon, Nov 24, 2014 at 12:36 AM, Josh Triplett [off-list ref] wrote:quoted
On Sun, Nov 23, 2014 at 09:30:40PM +0100, Pieter Smith wrote:quoted
On Sun, Nov 23, 2014 at 11:43:26AM -0800, Josh Triplett wrote:quoted
On Sun, Nov 23, 2014 at 01:46:23PM -0500, David Miller wrote:quoted
Truly removing sendfile/sendpage means that you can't even compile NFS into the tree.If you mean the in-kernel nfsd (CONFIG_NFSD), that already has a large stack of "select" and "depends on", both directly and indirectly; adding a "select SPLICE_SYSCALL" to it seems fine. (That select does need adding, though. Pieter, you need to test-compile more than just tinyconfig and defconfig. Try an allyesconfig with *just* splice turned off, and make sure that compiles.)Did exacly that. Took forever on my hardware, but no problems.Ah, I see. Looking more closely at nfsd, it looks like it already has a code path for filesystems that don't do splice. I think, rather than making nfsd select SPLICE_SYSCALL, that it would suffice to change the "rqstp->rq_splice_ok = true;" in svc_process_common (net/sunrpc/svc.c) to: rqstp->rq_splice_ok = IS_ENABLED(CONFIG_SPLICE_SYSCALL); Then nfsd should simply *always* fall back to its non-splice support.Hence I suggest adding to the nfsd help text: While nfsd works without SPLICE_SYSCALL, you may want to enable SPLICE_SYSCALL for <...> (performance?) reasons.
It already seems sufficiently unlikely to enable NFSD while disabling SPLICE_SYSCALL (in the latter case, turning on EXPERT to do so). It doesn't seem worth adding such a note to NFSD. At most, I'd say that NFSD might want a note somewhere in its documentation saying that it takes advantage of filesystems with splice support if serving files from one, and if running on a kernel that has splice.
(Hmm, does Kconfig need a "suggests", cfr. Debian package dependencies?)
Perhaps, though that seems much lower priority than, for instance, transitive "select". - Josh Triplett