Commit Graph
32 Commits
Author SHA1 Message Date
daniel de7edaf623 feat: vfs - add stat syscall 2026-07-21 14:23:06 +02:00
daniel 5c02c5fe79 feat: ext2 - save timestamp metadata 2026-07-21 14:09:17 +02:00
danielandClaude Fable 5 78ce551688 fix: USTAR prefix-field parsing and directory-aware chdir
Two ramdisk fixes exposed by shipping the C++ header tree:

Paths longer than 100 characters (libstdc++'s pb_ds detail headers)
are split by USTAR across the name field and the 155-byte prefix
field at offset 345. The parser only read the name field, so the
tails of 7 deep header paths appeared as bogus root-level entries
while the real paths were missing. The parser now joins
prefix + '/' + name, and MaxNameLen grows to 260 to hold the full
combined path.

SYS_CHDIR validated non-root targets by opening them as files, which
only ever worked because directories used to be openable. It now uses
the ReadDir probe, which fails for nonexistent paths and regular
files on all backends (ext2/fat32 already validate the inode type).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 10:18:58 +02:00
danielandClaude Fable 5 aa3b92d834 fix: ramdisk Open no longer opens directory entries
SYS_OPEN succeeded on directory tar entries, so userspace stat() -
which tries open-as-file first - reported every directory as a
regular file. GCC's include-path setup stats each search directory
and rejected all the real ones with "not a directory" warnings.
Directories now fall through Open to -1 and stat() classifies them
via the (recently fixed) ReadDir existence probe.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 10:13:59 +02:00
danielandClaude Fable 5 3938530508 fix: ramdisk ReadDir reports nonexistent paths as errors
ReadDirAt returned 0 (empty listing) for paths that do not exist at
all, so the libc's stat()/access() - which probe directory-ness via
SYS_READDIR - reported every nonexistent path as an existing
directory. Harmless for two years of callers, fatal for GCC's driver:
it access()-tests the optional specs file, got a false positive for
0:/sdk/lib/gcc/x86_64-montauk/14.2.0/specs, then died failing to read
it.

A path now has to have a directory entry or at least one child to
list as a directory; everything else returns -1. Real empty
directories (tar dir entries, runtime Mkdir) still list as empty.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 10:10:31 +02:00
danielandClaude Fable 5 b0ac3132c5 fix: raise ramdisk file table to 2048 entries, log when full
The 0:/usr devkit pushed the base image to ~650 files, past the
ramdisk's MaxFiles = 512. The USTAR loader silently dropped the tail
of the archive and, worse, every runtime Create/Mkdir failed once the
table was full - so first-boot account creation could not write the
user database and every login failed with "invalid username or
password".

Raise MaxFiles to 2048 (256 KiB static table) and log loudly both
when archive entries are dropped at load and when Create/Mkdir hit
the cap, so a full table can never masquerade as an auth failure
again.

Verified in QEMU end to end: setup -> create account -> log in ->
desktop.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 21:03:53 +02:00
danielandClaude Fable 5 e1a5364824 fix: eliminate desktop stall when deleting large files
Deleting a big file froze the desktop for seconds: ext2 FreeBlock did 4
synchronous disk I/Os per data block (bitmap + BGDT read/write), and the
file manager deleted single files inline on the desktop main thread.

- Ext2: batch block frees per block group; keep the bitmap resident,
  clear bits in memory, flush bitmap + BGDT once per group transition.
  Also covers the truncate-on-overwrite path.
- Ext2: refuse to mount volumes with block size > 4096; temp buffers
  throughout the driver are single 4 KiB pages, so larger blocks would
  overflow them (our mkfs always uses 4K).
- Files: route single-file deletes past 4 MiB to the background worker
  + progress dialog; refuse (instead of stalling inline) when another
  file operation already owns the worker.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 23:20:19 +02:00
daniel 5e58875e07 feat: fix ramdisk file copies being incorrectly marked as directories, update man pages 2026-07-09 11:19:06 +02:00
daniel 3f26b8cdb4 feat: introduce bootloader-agnostic Boot Contract, add btlist command to list connected Bluetooth devices 2026-06-20 21:25:24 +02:00
daniel 427876afa7 feat: filesystem and Files app support for >64 file entries, 64-bit sizes, async ops, GUI toolkit improvements to devexplorer app 2026-06-07 09:33:46 +02:00
daniel f0943d675f feat: disconnect Bluetooth devices, flush disks on shutdown/reboot, display progress in login.elf window 2026-06-06 18:27:19 +02:00
daniel ecf1b70e8f fix: fix VFS Delete op for Ramdisk driver 2026-05-27 18:06:27 +02:00
daniel 7cb1866998 feat: added Files app USB medium detection 2026-05-18 20:00:42 +02:00
daniel c20579afd3 feat: support for USB mass storage devices, hotplugging 2026-05-18 17:47:12 +02:00
daniel 7fa2b6c54b feat: expose drive labels to userspace, render in Files 2026-04-22 07:45:33 +02:00
daniel 072199df6b feat: support for IPP printing + test page 2026-04-01 21:15:27 +02:00
daniel ec82706c47 refactor: move filesystem discovery code into separate module 2026-04-01 13:15:31 +02:00
daniel fb9885819b feat: implement new IPC layer 2026-04-01 13:11:03 +02:00
daniel d2bd28c5d7 fix: fix filesystem stack regression 2026-03-28 17:44:15 +01:00
daniel 8295899b8f feat: fix file rename implementation 2026-03-25 07:18:13 +01:00
daniel 9b4dfe3e0e fix: improve scheduling, memory, timer implementations 2026-03-24 07:40:37 +01:00
daniel 41ad1f6404 feat: Symmetric Multiprocessing, text editor improvements, merge doom libc, implement math functions 2026-03-23 20:09:11 +01:00
daniel bc52bd5efc fix: new spinlock implementation, ramdisk max files, wallpaper scan locations 2026-03-22 10:40:35 +01:00
daniel 39b0424085 feat: multi-user system, bug fixes, security & performance fixes, and more 2026-03-14 13:28:46 +01:00
daniel 9f54e4957d feat: Intel HDA audio driver, audio streaming syscalls, userspace Music app, fixes and improvements, rudimentary Bluetooth support 2026-03-10 17:14:33 +01:00
daniel bcd959b80f feat: ext2 filesystem, installer updates, add update feature, and more 2026-03-08 14:41:36 +01:00
daniel 7617419640 feat: MontaukOS installer app, toml config, app directory with manifests, and more 2026-03-08 12:06:29 +01:00
daniel b540a43f39 feat: GPT, FAT32 driver, disks app, userspace adapted for multiple drives, and more 2026-03-07 15:58:27 +01:00
daniel 3c384cf502 feat: jpeg image rendering, desktop backgrounds, fix memory regression 2026-02-27 19:01:07 +01:00
daniel 5810306e14 feat(kernel): Add USB devicde and keyboard/mouse support 2026-02-19 23:06:18 +01:00
daniel 010783429c feat: e100e Ethernet driver, ramdisk reorganization, shell rewrite, web server/client, and more 2026-02-19 01:18:11 +01:00
daniel f384d4cf75 feat: scheduling, usermode, shell 2026-02-17 19:17:01 +01:00