netfs: Implement a write-through caching option
authorDavid Howells <dhowells@redhat.com>
Thu, 12 Oct 2023 08:06:24 +0000 (09:06 +0100)
committerDavid Howells <dhowells@redhat.com>
Thu, 28 Dec 2023 09:45:27 +0000 (09:45 +0000)
commit41d8e7673a7726cba57cb8112d81c89cfb6c3e35
tree1ae96a5d0a483df02adc4f4f1af6c209b3fbc25d
parent4a79616cfb27d76947ea37f0336745ef929d56be
netfs: Implement a write-through caching option

Provide a flag whereby a filesystem may request that cifs_perform_write()
perform write-through caching.  This involves putting pages directly into
writeback rather than dirty and attaching them to a write operation as we
go.

Further, the writes being made are limited to the byte range being written
rather than whole folios being written.  This can be used by cifs, for
example, to deal with strict byte-range locking.

This can't be used with content encryption as that may require expansion of
the write RPC beyond the write being made.

This doesn't affect writes via mmap - those are written back in the normal
way; similarly failed writethrough writes are marked dirty and left to
writeback to retry.  Another option would be to simply invalidate them, but
the contents can be simultaneously accessed by read() and through mmap.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-cachefs@redhat.com
cc: linux-fsdevel@vger.kernel.org
cc: linux-mm@kvack.org
fs/netfs/buffered_write.c
fs/netfs/internal.h
fs/netfs/main.c
fs/netfs/objects.c
fs/netfs/output.c
include/linux/netfs.h
include/trace/events/netfs.h