serenity/Kernel/FileSystem
Liav A. cb10f70394 Kernel: Change internal handling of filesystem-specific options
Instead of using a raw `KBuffer` and letting each implementation to
populating the specific flags on its own, we change things so we only
let each FileSystem implementation to validate the flag and its value
but then store it in a HashMap which its key is the flag name and
the value is a special new class called `FileSystemSpecificOption`
which wraps around `AK::Variant<...>`.

This approach has multiple advantages over the previous:
- It allows runtime inspection of what the user has set on a `MountFile`
  description for a specific filesystem.
- It ensures accidental overriding of filesystem specific option that
  was already set is not possible
- It removes ugly casting of a `KBuffer` contents to a strongly-typed
  values. Instead, a strongly-typed `AK::Variant` is used which ensures
  we always get a value without doing any casting.

Please note that we have removed support for ASCII string-oriented flags
as there were no actual use cases, and supporting such type would make
`FileSystemSpecificOption` more complicated unnecessarily for now.
2024-08-03 20:35:06 +02:00
..
DevLoopFS Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
DevPtsFS Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
Ext2FS Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
FATFS Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
FUSE Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
ISO9660FS Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
Plan9FS Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
ProcFS Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
RAMFS Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
SysFS Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
AnonymousFile.cpp
AnonymousFile.h
BlockBasedFileSystem.cpp Kernel: Allow Ext2FS::flush_writes() to return ErrorOr<void> 2023-08-25 11:36:57 +01:00
BlockBasedFileSystem.h Kernel: Allow Ext2FS::flush_writes() to return ErrorOr<void> 2023-08-25 11:36:57 +01:00
Custody.cpp
Custody.h
CustodyBase.cpp Kernel/FileSystem: Introduce the VFSRootContext class 2024-07-21 11:44:23 +02:00
CustodyBase.h Kernel: Ignore dirfd if absolute path is given in VFS-related syscalls 2024-06-01 19:25:15 +02:00
FIFO.cpp
FIFO.h
File.cpp
File.h Kernel/Devices: Introduce the LoopDevice device 2024-03-13 15:33:47 -06:00
FileBackedFileSystem.cpp
FileBackedFileSystem.h Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
FileSystem.cpp Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
FileSystem.h Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
FileSystemSpecificOption.cpp Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
FileSystemSpecificOption.h Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
Initializer.h Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
Inode.cpp Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
Inode.h Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
InodeFile.cpp Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
InodeFile.h
InodeIdentifier.h
InodeMetadata.cpp
InodeMetadata.h Kernel: Populate stat.st_dev with fsid 2023-10-01 13:34:41 +02:00
InodeWatcher.cpp
InodeWatcher.h
Mount.cpp Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
Mount.h Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
MountFile.cpp Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
MountFile.h Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
OpenFileDescription.cpp Kernel/FileSystem: Change const placement to match style guide 2024-07-27 07:50:07 -04:00
OpenFileDescription.h Kernel/FileSystem: Change const placement to match style guide 2024-07-27 07:50:07 -04:00
RAMBackedFileType.h Kernel/FileSystem: Send proper filetypes when traversing RAM-backed FSes 2024-01-13 19:01:07 -07:00
UnveilNode.h
VFSRootContext.cpp Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
VFSRootContext.h Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00
VirtualFileSystem.cpp Kernel: Change internal handling of filesystem-specific options 2024-08-03 20:35:06 +02:00
VirtualFileSystem.h Kernel: Move most of VirtualFileSystem code to be in a namespace 2024-07-21 11:44:23 +02:00