pipe: Allow buffers to be marked read-whole-or-error for notifications
authorDavid Howells <dhowells@redhat.com>
Tue, 14 Jan 2020 17:07:11 +0000 (17:07 +0000)
committerDavid Howells <dhowells@redhat.com>
Tue, 19 May 2020 14:38:18 +0000 (15:38 +0100)
commit8cfba76383e902acbed95092163052b1572f17a8
treef454a431df62749357767cf70feba3c2022b5cb0
parentf5b5a164f9a11aab5b225f082b33a8f03c07516c
pipe: Allow buffers to be marked read-whole-or-error for notifications

Allow a buffer to be marked such that read() must return the entire buffer
in one go or return ENOBUFS.  Multiple buffers can be amalgamated into a
single read, but a short read will occur if the next "whole" buffer won't
fit.

This is useful for watch queue notifications to make sure we don't split a
notification across multiple reads, especially given that we need to
fabricate an overrun record under some circumstances - and that isn't in
the buffers.

Signed-off-by: David Howells <dhowells@redhat.com>
fs/pipe.c
include/linux/pipe_fs_i.h
kernel/watch_queue.c
samples/watch_queue/watch_test.c