Nexoniarz
b213ab5778
schfs: do not read a block off the disk just to overwrite it
...
kd_write() went through bread(), so every block a write allocated was
read from the disk first and then replaced whole. That was a quarter of
the disk operations of a SchFS write. bgetblk() is bread() without the
read, as Linux's getblk() is.
1 MB on AHCI under QEMU: 2.0 -> 2.8 MB/s in 4 KB writes, 4.5 -> 5.6
MB/s in 64 KB ones. 3 MB of random data written and copied through the
cache's evictions reads back with the same md5.
The 63 KB/s seen earlier is the legacy IDE driver on QEMU's default
machine, at about 10 ms per emulated PIO write; the same disk on AHCI
(q35) is 40 times faster.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
2026-10-23 11:02:44 +02:00
..
audio.c
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00
bio.c
schfs: do not read a block off the disk just to overwrite it
2026-10-23 11:02:44 +02:00
blkdev.c
fs: follow symlinks like Linux; Linux mknod; /proc/partitions
2026-10-23 10:50:41 +02:00
cdev.c
dev: read /dev/zero and /dev/urandom from them, not from the keyboard
2026-10-23 09:33:08 +02:00
dbg.c
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
device.c
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00
disk.c
fat: FAT12, FAT16 and FAT32 with long names, read and write
2026-10-23 09:33:35 +02:00
fb.c
gfx: draw the console in RAM, and write it to the card write-combined
2026-10-22 23:46:58 +02:00
gfx.c
gfx: draw the console in RAM, and write it to the card write-combined
2026-10-22 23:46:58 +02:00
ide.c
q35: five seconds of boot spent waiting on disks that are not there
2026-10-22 11:10:07 +02:00
input.c
kernel: the clock ran 7x slow because the GPU never acknowledged its interrupt
2026-09-12 21:34:36 +02:00
irq.c
acpi: uACPI, for interrupt routing, the power button and power-off
2026-10-22 16:12:28 +02:00
kbd.c
kbd: three layouts, and the arrow keys were sitting on top of UTF-8
2026-09-20 01:09:32 +02:00
keymap.c
kbd: three layouts, and the arrow keys were sitting on top of UTF-8
2026-09-20 01:09:32 +02:00
mouse.c
boot: stop assuming the machine is an emulator
2026-10-22 10:29:12 +02:00
netuser.c
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
pci.c
acpi: uACPI, for interrupt routing, the power button and power-off
2026-10-22 16:12:28 +02:00
pciuser.c
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
procfs.c
fs: follow symlinks like Linux; Linux mknod; /proc/partitions
2026-10-23 10:50:41 +02:00
ramdisk.c
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
text.c
gfx: one glyph blitter, and a terminal cell is a surface
2026-09-23 17:57:16 +02:00
ttf.c
font: the console draws outlines now, and a byte could not have held Ą
2026-09-20 00:35:34 +02:00
uart.c
boot: one line when it works, all of it when it does not
2026-09-14 21:19:50 +02:00
vt.c
gfx: draw the console in RAM, and write it to the card write-combined
2026-10-22 23:46:58 +02:00