serenity/Kernel
implicitfield 180f3f29ab Kernel/Ext2FS: Refactor computing and flushing blocks
This is a large commit, since this is essentially a complete rewrite of
the key low-level functions that handle reading/writing blocks. This is,
however, a necessary prerequisite of being able to write holes.

The previous version of `flush_block_list()` (along with its numerous
helper functions) was entirely reliant on all blocks being sequential.
In contrast to the previous implementation, the new version
of `flush_block_list()` simply writes out the difference between the old
block list and the new block list by calculating the correct indirect
block(s) to update based on the relevant block's logical index.

`compute_block_list()` has also been rewritten, since the estimated
amount of meta blocks was incorrectly calculated for files with holes as
a result of the estimated amount of blocks being a function of the file
size. Since it isn't possible to accurately compute the shape of the
block list without traversing it, we no longer try to perform such a
computation, and instead simply search through all of the allocated
indirect blocks.

`compute_block_list_with_meta_blocks()` has also been removed in favor
of the new `compute_meta_blocks()`, since meta blocks are fundamentally
distinct from data blocks due to there being no mapping between any
logical block index and the physical block index.
2024-06-29 19:16:08 +02:00
..
API Kernel+LibC+LibCore: Implement mknodat(2) 2024-05-14 22:30:39 +02:00
Arch Kernel/riscv64: Handle breakpoint traps 2024-05-23 14:11:36 -06:00
Boot Kernel/x86: Bake the Prekernel and the Kernel into one image 2024-05-14 23:37:38 +02:00
Bus Kernel: Prevent integer overflow in USB::Hub::check_for_port_updates() 2024-05-27 17:35:42 +02:00
Devices Kernel/Storage: Dump storage devices to the framebuffer console as well 2024-06-26 08:47:00 +02:00
FileSystem Kernel/Ext2FS: Refactor computing and flushing blocks 2024-06-29 19:16:08 +02:00
Firmware/ACPI Kernel: Overhaul system shutdown procedure 2023-07-15 00:12:01 +02:00
Heap Kernel: Use the AK SetOnce container class in various cases 2024-04-26 23:46:23 -06:00
Interrupts Kernel/Interrupts: Move PCIIRQHandler => PCI::IRQHandler 2023-09-16 14:04:17 -06:00
Library AK+Kernel+LibVideo: Include workarounds for missing P0960 only in Xcode 2024-05-21 14:24:59 +02:00
Locking Kernel: Use the AK SetOnce container class in various cases 2024-04-26 23:46:23 -06:00
Memory Kernel: Support re-mapping MMIOVMObject-backed regions 2024-06-25 17:46:37 +02:00
Net Kernel/net: Add tracking of dropped packets per adapter 2024-05-09 12:02:26 +02:00
Prekernel Kernel: Actually set physical base pointer correctly in prekernel stage 2024-05-22 23:25:51 +02:00
Security Kernel: Move VirtIO RNG implementation to the Security/Random directory 2024-05-14 15:42:29 -06:00
Syscalls Kernel: Ignore dirfd if absolute path is given in VFS-related syscalls 2024-06-01 19:25:15 +02:00
Tasks Kernel: Ignore dirfd if absolute path is given in VFS-related syscalls 2024-06-01 19:25:15 +02:00
Time Kernel: Deduplicate HardwareTimerBase::frequency()/ticks_per_second() 2024-04-30 06:01:26 -06:00
CMakeLists.txt Kernel: Ignore dirfd if absolute path is given in VFS-related syscalls 2024-06-01 19:25:15 +02:00
Debug.h.in Kernel: Add FUSE support 2024-05-07 16:54:27 -06:00
embedmap.sh
Forward.h Kernel: Ignore dirfd if absolute path is given in VFS-related syscalls 2024-06-01 19:25:15 +02:00
generate-version-file.sh
kprintf.cpp Kernel: Only write text to serial console if no ConsoleDevice attached 2024-01-02 06:16:53 -07:00
kstdio.h Kernel: Remove includes to LibC stdarg definitions 2023-03-01 19:36:53 -07:00
KSyms.cpp Kernel: Use AK::unwind_stack_from_frame_pointer 2024-05-14 14:02:06 -06:00
KSyms.h Kernel: Use the AK SetOnce container class in various cases 2024-04-26 23:46:23 -06:00
mkmap.sh
SanCov.cpp Kernel: Use the AK SetOnce container class in various cases 2024-04-26 23:46:23 -06:00
Sections.h Kernel: Move all boot-related code to the new Boot subdirectory 2023-06-04 21:32:34 +02:00
UnixTypes.h Kernel/Net: Implement TCP_NODELAY 2023-11-08 09:31:54 +01:00