[RFC PATCH 0/2] NFSD: add a setting to disable splice reads

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Chuck Lever <chuck.lever@xxxxxxxxxx>

The usual policy for kernel-user space APIs is that once a public
API appears, it is difficult to change or remove, in order to
maintain backwards compatibility with user space software.

This series introduces /sys/kernel/debug/nfsd/ where we can
hopefully place ephemeral and undocumented settings for testing NFSD
features that are to be added or deprecated without the worry of
having to support an administrative API forever without change,
amen.

As a first consumer of this user-kernel API, the series adds a
simple disable-splice-read setting, which can force all NFS READ
operations to use vfs_iter_read() rather than page splicing to fill
data content for an NFS reply.

The splice read path is the default on most file systems, so it gets
most of the test experience. The purpose of this new setting is to
enable test runners to force the use of the iov iter path. We are
also interested in comparing the performance of the splice and iter
paths, as a prelude to potentially removing page splicing. This new
setting makes it easy to benchmark either read mode without having
to rebuild the kernel.

We have an eye on a few other consumers, such as uncached I/O and
increasing the maximum r/wsize, for which /sys/kernel/debug/nfsd
might be suitable while their performance impact is studied before
a concrete administrative interface is agreed upon.

Opinions and code review are welcome, as always.

Chuck Lever (2):
  NFSD: Add /sys/kernel/debug/nfsd
  NFSD: Add experimental setting to disable the use of splice read

 fs/nfsd/Makefile  |  1 +
 fs/nfsd/debugfs.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 fs/nfsd/nfsctl.c  |  4 ++++
 fs/nfsd/nfsd.h    | 10 ++++++++++
 fs/nfsd/vfs.c     |  4 ++++
 5 files changed, 66 insertions(+)
 create mode 100644 fs/nfsd/debugfs.c

-- 
2.48.1





[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux