ladybird/Kernel/FileSystem
Liav A fea3cb5ff9 Kernel/FileSystem: Discard safely filesystems when unmounted last time
This commit reached that goal of "safely discarding" a filesystem by
doing the following:
1. Stop using the s_file_system_map HashMap as it was an unsafe measure
to access pointers of FileSystems. Instead, make sure to register all
FileSystems at the VFS layer, with an IntrusiveList, to avoid problems
related to OOM conditions.
2. Make sure to cleanly remove the DiskCache object from a BlockBased
filesystem, so the destructor of such object will not need to do that in
the destruction point.
3. For ext2 filesystems, don't cache the root inode at m_inode_cache
HashMap. The reason for this is that when unmounting an ext2 filesystem,
we lookup at the cache to see if there's a reference to a cached inode
and if that's the case, we fail with EBUSY. If we keep the m_root_inode
also being referenced at the m_inode_cache map, we have 2 references to
that object, which will lead to fail with EBUSY. Also, it's much simpler
to always ask for a root inode and get it immediately from m_root_inode,
instead of looking up the cache for that inode.
2022-10-22 16:57:52 -04:00
..
SysFS Kernel: Abstracts x86 reboot and shutdown specific methods 2022-09-20 18:43:05 +01:00
AnonymousFile.cpp Kernel: Simplify the File memory-mapping API 2022-08-24 14:57:51 +02:00
AnonymousFile.h Kernel: Simplify the File memory-mapping API 2022-08-24 14:57:51 +02:00
BlockBasedFileSystem.cpp Kernel/FileSystem: Discard safely filesystems when unmounted last time 2022-10-22 16:57:52 -04:00
BlockBasedFileSystem.h Kernel/FileSystem: Discard safely filesystems when unmounted last time 2022-10-22 16:57:52 -04:00
Custody.cpp Kernel: Use RefPtr instead of LockRefPtr for Custody 2022-08-21 12:25:14 +02:00
Custody.h Kernel: Use RefPtr instead of LockRefPtr for Custody 2022-08-21 12:25:14 +02:00
DeviceFileTypes.h Everywhere: Prefix 'TYPEDEF_DISTINCT_ORDERED_ID' with 'AK_' 2022-07-22 23:09:43 +01:00
DevPtsFS.cpp Kernel/FileSystem: Make Inode::{write,read}_bytes methods non-virtual 2022-09-16 14:55:45 +03:00
DevPtsFS.h Kernel/FileSystem: Make Inode::{write,read}_bytes methods non-virtual 2022-09-16 14:55:45 +03:00
ext2_fs.h Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
ext2_types.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Ext2FileSystem.cpp Kernel/FileSystem: Discard safely filesystems when unmounted last time 2022-10-22 16:57:52 -04:00
Ext2FileSystem.h Kernel/FileSystem: Discard safely filesystems when unmounted last time 2022-10-22 16:57:52 -04:00
FATFileSystem.cpp Kernel: Introduce support for using FileSystem object in multiple mounts 2022-10-22 16:57:52 -04:00
FATFileSystem.h Kernel: Introduce support for using FileSystem object in multiple mounts 2022-10-22 16:57:52 -04:00
FIFO.cpp Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
FIFO.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
File.cpp Kernel: Simplify the File memory-mapping API 2022-08-24 14:57:51 +02:00
File.h Kernel: Simplify the File memory-mapping API 2022-08-24 14:57:51 +02:00
FileBackedFileSystem.cpp Kernel: Introduce support for using FileSystem object in multiple mounts 2022-10-22 16:57:52 -04:00
FileBackedFileSystem.h Kernel: Introduce support for using FileSystem object in multiple mounts 2022-10-22 16:57:52 -04:00
FileSystem.cpp Kernel/FileSystem: Discard safely filesystems when unmounted last time 2022-10-22 16:57:52 -04:00
FileSystem.h Kernel/FileSystem: Discard safely filesystems when unmounted last time 2022-10-22 16:57:52 -04:00
Inode.cpp Kernel/FileSystem: Make Inode::{write,read}_bytes methods non-virtual 2022-09-16 14:55:45 +03:00
Inode.h Kernel/FileSystem: Remove the locking of a Inode mutex in InodeVMObjects 2022-09-26 22:06:10 +03:00
InodeFile.cpp Kernel: Handle mmap requests on zero-length data file inodes safely 2022-09-16 14:55:45 +03:00
InodeFile.h Kernel: Simplify the File memory-mapping API 2022-08-24 14:57:51 +02:00
InodeIdentifier.h Everywhere: Prefix 'TYPEDEF_DISTINCT_ORDERED_ID' with 'AK_' 2022-07-22 23:09:43 +01:00
InodeMetadata.cpp Kernel: Make VirtualFileSystem functions take credentials as input 2022-08-21 16:02:24 +02:00
InodeMetadata.h Kernel: Make VirtualFileSystem functions take credentials as input 2022-08-21 16:02:24 +02:00
InodeWatcher.cpp Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
InodeWatcher.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
ISO9660FileSystem.cpp Kernel/FileSystem: Discard safely filesystems when unmounted last time 2022-10-22 16:57:52 -04:00
ISO9660FileSystem.h Kernel: Introduce support for using FileSystem object in multiple mounts 2022-10-22 16:57:52 -04:00
Mount.cpp Kernel: Use RefPtr instead of LockRefPtr for Custody 2022-08-21 12:25:14 +02:00
Mount.h Kernel: Use RefPtr instead of LockRefPtr for Custody 2022-08-21 12:25:14 +02:00
OpenFileDescription.cpp Kernel/FileSystem: Add a few missing includes 2022-10-22 16:57:52 -04:00
OpenFileDescription.h Kernel/FileSystem: Add a few missing includes 2022-10-22 16:57:52 -04:00
Plan9FileSystem.cpp Kernel: Introduce support for using FileSystem object in multiple mounts 2022-10-22 16:57:52 -04:00
Plan9FileSystem.h Kernel: Introduce support for using FileSystem object in multiple mounts 2022-10-22 16:57:52 -04:00
ProcFS.cpp Kernel/FileSystem: Make Inode::{write,read}_bytes methods non-virtual 2022-09-16 14:55:45 +03:00
ProcFS.h Kernel/FileSystem: Make Inode::{write,read}_bytes methods non-virtual 2022-09-16 14:55:45 +03:00
SysFS.cpp Kernel/FileSystem: Make Inode::{write,read}_bytes methods non-virtual 2022-09-16 14:55:45 +03:00
SysFS.h Kernel/FileSystem: Make Inode::{write,read}_bytes methods non-virtual 2022-09-16 14:55:45 +03:00
TmpFS.cpp Kernel: Add support for device nodes in TmpFS 2022-10-22 19:18:15 +02:00
TmpFS.h Kernel: Use more fine-grained content data block granularity in TmpFS 2022-10-16 17:46:40 +02:00
UnveilNode.h AK+Kernel: Specialize Trie for NNOP<KString> and use it in UnveilNode 2022-02-16 22:21:37 +01:00
VirtualFileSystem.cpp Kernel/FileSystem: Discard safely filesystems when unmounted last time 2022-10-22 16:57:52 -04:00
VirtualFileSystem.h Kernel/FileSystem: Discard safely filesystems when unmounted last time 2022-10-22 16:57:52 -04:00