| Age | Commit message (Collapse) | Author | Files | Lines | |
|---|---|---|---|---|---|
| 34 hours | chore: normalize panic messages | Felix Morgner | 40 | -112/+610 | |
| 34 hours | chore: apply stylistic cleanups | Felix Morgner | 45 | -244/+252 | |
| 35 hours | build: improve test failure reporting in CI | Felix Morgner | 1 | -0/+1 | |
| 46 hours | kernel/vfs: implement read_directory fixups. | Felix Morgner | 6 | -2/+134 | |
| POSIX requires that the data returned by the readdir() function shows the inode number of the root of a mounted filesystem for its mount point. Additionally, the inode number of the '..' reference in the mounted filesystem must show the inode number of the mount point. We perform this fixup when computing the entries during read_directory on the fly. The implementation of the upward fixup will need to be revised once the kernel supports bind mounts. | |||||
| 47 hours | kernel/fs: devfs: fix inode encoding | Felix Morgner | 1 | -2/+1 | |
| 48 hours | Merge branch 'fmorgner/vfs-mount-initialization' into 'develop' | Felix Morgner | 14 | -130/+146 | |
| kernel/vfs: rework boot initialization See merge request teachos/kernel!57 | |||||
| 2 days | fixup! kernel/fs: ext2: fix block allocation on 1 KiB fsfmorgner/vfs-mount-initialization | Felix Morgner | 3 | -7/+12 | |
| 2 days | fixup! kernel/vfs: add identity based mount removal | Felix Morgner | 1 | -1/+1 | |
| 2 days | kernel/vfs: implement root swivel and mount move | Felix Morgner | 9 | -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. | |||||
| 2 days | fixup! kernel/vfs: mount: resolve return type todo | Felix Morgner | 1 | -2/+2 | |
| 2 days | kernel/fs: ext2: fix block allocation on 1 KiB fs | Felix Morgner | 1 | -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 days | kernel/vfs: add identity based mount removal | Felix Morgner | 2 | -1/+17 | |
| 2 days | kernel/vfs: mount: resolve return type todo | Felix Morgner | 4 | -47/+21 | |
| 2 days | kernel/vfs: replace owning_mount with driver_state | Felix Morgner | 23 | -239/+297 | |
| 3 days | kernel/fs: devfs: inject . and .. entries | Felix Morgner | 2 | -23/+69 | |
| 3 days | kernel: add 'ls' style demo | Felix Morgner | 1 | -21/+56 | |
| 3 days | kstd: units: improve formatter | Felix Morgner | 1 | -1/+4 | |
| 3 days | kernel/fs: devfs: implement basic stat | Felix Morgner | 2 | -1/+14 | |
| 3 days | kernel: add directory listing to demo. | Felix Morgner | 1 | -0/+26 | |
| 3 days | kapi/fs: implement read_directory | Felix Morgner | 24 | -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 days | kapi/fs: add stub implementation of read_directory | Felix Morgner | 2 | -0/+20 | |
| 4 days | kapi/fs: introduce read_directory API | Felix Morgner | 3 | -0/+58 | |
| 4 days | build: expand presets with release tests | Felix Morgner | 1 | -1/+62 | |
| 4 days | kernel: split vfs and filesystem drivers | Felix Morgner | 117 | -1719/+1718 | |
| 4 days | kernel/fs: vfs: make file descriptor polymorphic | Felix Morgner | 12 | -235/+590 | |
| 4 days | kernel/fs: rootfs: implement read_directory | Felix Morgner | 2 | -0/+16 | |
| 4 days | kernel/fs: ext2: add missing iterator type alias | Felix Morgner | 1 | -0/+1 | |
| 4 days | kernel/fs: ext2: implement read_directory | Felix Morgner | 7 | -8/+316 | |
| 4 days | kernel/fs: ext2: clean up stateless functions | Felix Morgner | 10 | -748/+678 | |
| 4 days | kernel/fs: ext2: move superblock flags | Felix Morgner | 3 | -27/+41 | |
| 4 days | Merge branch 'fmorgner/stateless-fs-drivers' into 'develop' | Felix Morgner | 67 | -1354/+2645 | |
| kernel/fs: rework filesystem subsystem to use stateless drivers See merge request teachos/kernel!56 | |||||
| 4 days | kernel/fs: ext2: apply strict locking discipline | Felix Morgner | 7 | -77/+146 | |
| 4 days | fixup! kernel/fs: ext2: simplify directory iteration | Felix Morgner | 1 | -2/+2 | |
| 4 days | kernel/fs: ext: remove debug code | Felix Morgner | 1 | -5/+0 | |
| 4 days | fixup! kernel/fs: ext2: add a simple write batching type | Felix Morgner | 1 | -2/+2 | |
| 4 days | kernel/fs: ext2: introduce write batching | Felix Morgner | 6 | -95/+96 | |
| 4 days | kernel/fs: ext2: add a simple write batching type | Felix Morgner | 4 | -0/+123 | |
| 4 days | kernel/fs: ext2: simplify directory iteration | Felix Morgner | 8 | -27/+282 | |
| 4 days | kernel/fs: ext2: extract stateless functions | Felix Morgner | 4 | -87/+81 | |
| 4 days | kernel/fs: ext2: cosmetic inode cleanup | Felix Morgner | 3 | -123/+160 | |
| 4 days | kernel/fs: ext2: retype block I/O operations | Felix Morgner | 2 | -30/+38 | |
| 4 days | kernel/fs: ext2: make block_count take the inode | Felix Morgner | 4 | -17/+16 | |
| 4 days | kernel/fs: ext2: cosmetic cleanup | Felix Morgner | 9 | -191/+389 | |
| 4 days | kernel/fs: extract module registrations | Felix Morgner | 7 | -52/+87 | |
| 4 days | kernel/fs: devfs: fix directory listing sentinel | Felix Morgner | 1 | -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 days | kernel/fs: devfs: simplify directory listing | Felix Morgner | 1 | -9/+16 | |
| 4 days | kernel/fs: remove file type | Felix Morgner | 7 | -49/+11 | |
| 4 days | kernel/fs: devfs: implement read_directory | Felix Morgner | 4 | -1/+268 | |
| 4 days | kernel/fs: introduce base read_directory API | Felix Morgner | 4 | -0/+71 | |
| 4 days | kernel/fs: small post-rework cleanup | Felix Morgner | 1 | -2/+7 | |
