aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
46 hoursfixup! kernel/vfs: add identity based mount removalFelix Morgner1-1/+1
46 hourskernel/vfs: implement root swivel and mount moveFelix Morgner9-71/+92
Previously, the device filesystem (devfs) was simply grafted on each root filesystem during boot. This caused the existence of an unreachable, dead devfs mount after the VFS instance had been initialized. This changeset implements the ability to relocate an active mount from one mount point to another. That way, no second devfs mount needs to be created. Instead, the existing devfs mount is relocated to a mount point in the persistent root filesystem that get mounted during initialization. Secondly, this changeset also alters the VFS initialization flow, so that only one root mount exists after initialization finishes.
46 hoursfixup! kernel/vfs: mount: resolve return type todoFelix Morgner1-2/+2
46 hourskernel/fs: ext2: fix block allocation on 1 KiB fsFelix Morgner1-2/+2
When computing the actual block numbers for a filesystem, care must be taken to account for which block is the actual first data block. For 1 KiB block size filesystems, that block is actually block 1, not 0. This is because the first 1 KiB on any ext2 volume is reserved for bootloader data. Complicating matters, the bitmaps don't take this into account. They essentially reflect a logical view, describing which data blocks are already allocated. On a 1 KiB filesystem, this effectively means that bit 0 of the allocation bitmap references physical block 1. Luckily, we don't need to make that determination based on the block size at all. The superblock already carries the number of the first data block. That means one can simply add that number, which is 1 in the 1 KiB block size case and 0 otherwise, to the found block index. Interestingly, this was already caught by accident when locating the authoritative block group descriptor (BGD) table. A factor of two was multiplied into the calculation in the case of a 1 KiB block size. This factor arises because the primary BGD table follows the primary superblock. Since the superblock is located in physical block 0 in all cases except for a 1 KiB block size, the BGD table generally lands in block 1. This implies an offset of 1 block size from the volume start. In the 1 KiB case, the BGD table lands in block number 2, effectively at an offset of 2 blocks from the start of the volume. This changeset makes that calculation explicit in the BGD table locator code as well. This clarifies the previously obscure factor of 2.
2 dayskernel/vfs: add identity based mount removalFelix Morgner2-1/+17
2 dayskernel/vfs: mount: resolve return type todoFelix Morgner4-47/+21
2 dayskernel/vfs: replace owning_mount with driver_stateFelix Morgner23-239/+297
3 dayskernel/fs: devfs: inject . and .. entriesFelix Morgner2-23/+69
3 dayskernel: add 'ls' style demoFelix Morgner1-21/+56
3 dayskstd: units: improve formatterFelix Morgner1-1/+4
3 dayskernel/fs: devfs: implement basic statFelix Morgner2-1/+14
3 dayskernel: add directory listing to demo.Felix Morgner1-0/+26
3 dayskapi/fs: implement read_directoryFelix Morgner24-153/+83
This change also replaces the kernel internal directory_listing_cursor and directory_listing_entry with the kapi types directory_cursor and directory_entry.
4 dayskapi/fs: add stub implementation of read_directoryFelix Morgner2-0/+20
4 dayskapi/fs: introduce read_directory APIFelix Morgner3-0/+58
4 daysbuild: expand presets with release testsFelix Morgner1-1/+62
4 dayskernel: split vfs and filesystem driversFelix Morgner117-1719/+1718
4 dayskernel/fs: vfs: make file descriptor polymorphicFelix Morgner12-235/+590
4 dayskernel/fs: rootfs: implement read_directoryFelix Morgner2-0/+16
4 dayskernel/fs: ext2: add missing iterator type aliasFelix Morgner1-0/+1
4 dayskernel/fs: ext2: implement read_directoryFelix Morgner7-8/+316
4 dayskernel/fs: ext2: clean up stateless functionsFelix Morgner10-748/+678
4 dayskernel/fs: ext2: move superblock flagsFelix Morgner3-27/+41
4 daysMerge branch 'fmorgner/stateless-fs-drivers' into 'develop'Felix Morgner67-1354/+2645
kernel/fs: rework filesystem subsystem to use stateless drivers See merge request teachos/kernel!56
4 dayskernel/fs: ext2: apply strict locking disciplineFelix Morgner7-77/+146
4 daysfixup! kernel/fs: ext2: simplify directory iterationFelix Morgner1-2/+2
4 dayskernel/fs: ext: remove debug codeFelix Morgner1-5/+0
4 daysfixup! kernel/fs: ext2: add a simple write batching typeFelix Morgner1-2/+2
4 dayskernel/fs: ext2: introduce write batchingFelix Morgner6-95/+96
4 dayskernel/fs: ext2: add a simple write batching typeFelix Morgner4-0/+123
4 dayskernel/fs: ext2: simplify directory iterationFelix Morgner8-27/+282
4 dayskernel/fs: ext2: extract stateless functionsFelix Morgner4-87/+81
4 dayskernel/fs: ext2: cosmetic inode cleanupFelix Morgner3-123/+160
4 dayskernel/fs: ext2: retype block I/O operationsFelix Morgner2-30/+38
4 dayskernel/fs: ext2: make block_count take the inodeFelix Morgner4-17/+16
4 dayskernel/fs: ext2: cosmetic cleanupFelix Morgner9-191/+389
4 dayskernel/fs: extract module registrationsFelix Morgner7-52/+87
4 dayskernel/fs: devfs: fix directory listing sentinelFelix Morgner1-1/+2
The previous sentinel value would have prevent a device with major:minor 255:255 from showing up, if the read buffer was small enough to just barely not read that device in one go. The new value is an actually invalid device number, so it does not preclude any devices from showing up in directory listings.
4 dayskernel/fs: devfs: simplify directory listingFelix Morgner1-9/+16
4 dayskernel/fs: remove file typeFelix Morgner7-49/+11
4 dayskernel/fs: devfs: implement read_directoryFelix Morgner4-1/+268
4 dayskernel/fs: introduce base read_directory APIFelix Morgner4-0/+71
4 dayskernel/fs: small post-rework cleanupFelix Morgner1-2/+7
4 dayskernel/fs: rework filesystem probingFelix Morgner24-439/+348
4 dayskernel/fs: remove backing inode from mountFelix Morgner2-10/+0
4 dayskernel/fs: devfs: externalize mount stateFelix Morgner4-12/+14
4 dayskernel/fs: devfs: simplify implementationFelix Morgner2-35/+11
4 dayskernel/fs: post-refactor cleanupFelix Morgner7-78/+54
4 dayskernel/fs: ext2: externalize mount stateFelix Morgner7-219/+340
4 dayskernel/fs: thread driver data through public APIFelix Morgner15-56/+85