serenity/Kernel/FileSystem
Andreas Kling a7b70c62d7 Kernel: Fix broken disk cache behavior with O_DIRECT
When writing into a block via an O_DIRECT open file description, we
would first flush every dirty block *except* the one we're about to
write into.

The purpose of flushing is to ensure coherency when mixing direct and
indirect accesses to the same file. This patch fixes the issue by only
flushing the affected block.

Our behavior was totally backwards and could end up doing a lot of
unnecessary work while avoiding the work that actually mattered.
2022-01-08 20:15:25 +01:00
..
AnonymousFile.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
AnonymousFile.h Everywhere: Fix -Winconsistent-missing-override warnings from Clang 2021-12-11 13:14:15 -08:00
BlockBasedFileSystem.cpp Kernel: Fix broken disk cache behavior with O_DIRECT 2022-01-08 20:15:25 +01:00
BlockBasedFileSystem.h Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
Custody.cpp Kernel: Port Custody to ListedRefCounted 2021-12-29 12:04:15 +01:00
Custody.h Kernel: Port Custody to ListedRefCounted 2021-12-29 12:04:15 +01:00
DeviceFileTypes.h Kernel: Include correct header for DistinctNumeric in DeviceFileTypes.h 2022-01-04 17:40:09 +00:00
DevPtsFS.cpp Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
DevPtsFS.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
DevTmpFS.cpp Kernel: Make major and minor numbers to be DistinctNumerics 2021-12-23 23:02:39 +01:00
DevTmpFS.h Kernel: Make major and minor numbers to be DistinctNumerics 2021-12-23 23:02:39 +01:00
ext2_fs.h Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
ext2_types.h
Ext2FileSystem.cpp Kernel/Ext2FS: Use HashMap::remove_all_matching() in Ext2FS 2022-01-05 18:57:14 +01:00
Ext2FileSystem.h Kernel: Always initialize ext2_inode and ext_super_block structs 2021-12-22 13:29:31 -08:00
FIFO.cpp Kernel: Make File::stat() & friends return Error<struct stat> 2021-12-18 11:30:10 +01:00
FIFO.h Kernel: Make File::stat() & friends return Error<struct stat> 2021-12-18 11:30:10 +01:00
File.cpp Kernel: Port File to RefCounted 2021-12-29 12:04:15 +01:00
File.h Kernel: Make File::unref virtual 2021-12-29 15:46:14 +02:00
FileBackedFileSystem.cpp
FileBackedFileSystem.h
FileSystem.cpp Kernel: Use DistinctNumeric for filesystem ID's 2021-11-18 21:11:30 +01:00
FileSystem.h Kernel: Use DistinctNumeric for filesystem ID's 2021-11-18 21:11:30 +01:00
Inode.cpp Kernel: Always pass InodeIdentifier by value 2022-01-02 18:08:02 +01:00
Inode.h Kernel: Always pass InodeIdentifier by value 2022-01-02 18:08:02 +01:00
InodeFile.cpp Kernel+LibC: Move errno definitions to Kernel/API/POSIX 2021-12-16 22:21:35 +03:30
InodeFile.h Kernel: Make File::stat() & friends return Error<struct stat> 2021-12-18 11:30:10 +01:00
InodeIdentifier.h Kernel: Use DistinctNumeric for filesystem ID's 2021-11-18 21:11:30 +01:00
InodeMetadata.h Kernel: Make major and minor numbers to be DistinctNumerics 2021-12-23 23:02:39 +01:00
InodeWatcher.cpp Kernel: Handle string format errors in FileSystem APIs :^) 2021-11-30 11:16:35 +01:00
InodeWatcher.h Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
ISO9660FileSystem.cpp Kernel: Add implied auto-specifiers in FileSystem 2021-12-15 23:34:11 -08:00
ISO9660FileSystem.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
Mount.cpp
Mount.h Kernel: Fix missing include in FileSystem/Mount.h 2021-12-15 23:34:11 -08:00
OpenFileDescription.cpp Kernel: Make File::stat() & friends return Error<struct stat> 2021-12-18 11:30:10 +01:00
OpenFileDescription.h Kernel: Remove all uses of MAKE_SLAB_ALLOCATED() 2021-12-26 21:22:59 +01:00
Plan9FileSystem.cpp Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
Plan9FileSystem.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
ProcFS.cpp Kernel+LibC: Move errno definitions to Kernel/API/POSIX 2021-12-16 22:21:35 +03:30
ProcFS.h Everywhere: Fix -Winconsistent-missing-override warnings from Clang 2021-12-11 13:14:15 -08:00
SysFS.cpp Kernel: Add implied auto-specifiers in FileSystem 2021-12-15 23:34:11 -08:00
SysFS.h Kernel/SysFS: Prevent allocation for component name during construction 2021-12-14 09:01:33 +01:00
SysFSComponent.cpp Kernel/SysFS: Prevent allocation for component name during construction 2021-12-14 09:01:33 +01:00
SysFSComponent.h Kernel/SysFS: Prevent allocation for component name during construction 2021-12-14 09:01:33 +01:00
TmpFS.cpp Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
TmpFS.h Kernel: Fix race condition in TmpFSInode::notify_watchers() 2021-12-28 13:00:28 +01:00
UnveilNode.h
VirtualFileSystem.cpp Kernel+LibC+LibCore: Add lchown and fchownat functions 2022-01-01 15:08:49 +01:00
VirtualFileSystem.h Kernel+LibC+LibCore: Add lchown and fchownat functions 2022-01-01 15:08:49 +01:00