Nexoniarz
b34779111a
schfs: several snapshots at once, and unmount gives the slot back
...
Two loose ends from the mount-by-name commit, both closed.
A slot is a device number, so supporting more than one snapshot is a
small array rather than a redesign: SCHFS_SNAP_DEV through
SCHFS_SNAP_DEV + SCHFS_SNAP_SLOTS - 1, each with its own volume and its
own scratch pages, allocated on first use. Four of them -- "one at a
time" is an odd thing to have to explain, and the cost is two pages per
slot. Not many, because each one is a device number and those are a
small fixed space.
The leak mattered more. umount removed the mount table entry and left the
slot marked in use, so a snapshot could be unmounted and then never
mounted again until reboot. sys_umount2 releases it now, keyed off the
device it already has in hand.
Verified in the running system: two snapshots mounted at once, both
readable, both unmounted, and a third mount afterwards succeeds and reads
correctly -- which is the case that failed before.
schfs-check passes; bootcheck 108 [ok].
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 21:30:28 +02:00
..
asm.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
buf.h
Raise the disk ceiling: 64-bit blocks, no FSSIZE panic, LBA48
2026-08-10 18:50:31 +02:00
config_sinit.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
date.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
defs.h
schfs: several snapshots at once, and unmount gives the slot back
2026-08-10 21:30:28 +02:00
device.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
display.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
dma.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
e1000.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
elf.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
errno.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
fb.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
fcntl.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
file.h
schfs: several snapshots at once, and unmount gives the slot back
2026-08-10 21:30:28 +02:00
font.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
fs.h
init survives stray signals; commands are 4-34x faster
2026-08-09 15:54:05 +02:00
input.h
usb-hid: bind an absolute pointer, and plumb EV_ABS through
2026-08-10 18:27:01 +02:00
irq.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
kbd.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
logo.h
Fix the boot logo source, and put /etc under version control
2026-08-09 16:51:04 +02:00
memlayout.h
Free every usable memory region, not one contiguous run
2026-08-09 20:03:51 +02:00
mmu.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
mp.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
param.h
init survives stray signals; commands are 4-34x faster
2026-08-09 15:54:05 +02:00
pci.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
posix.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
proc.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
qr.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
schboot.h
acpi: take the RSDP from the loader when firmware gives it to us
2026-08-09 22:02:57 +02:00
schfs.h
schfs: snapshots
2026-08-10 19:10:24 +02:00
sleeplock.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
socket.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
spinlock.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
stat.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
syscall.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
text.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
theme.h
boot: separate BIOS from UEFI
2026-08-09 16:00:03 +02:00
traps.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
ttf.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
types.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
uaccess.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
usb.h
usb-hid: bind an absolute pointer, and plumb EV_ABS through
2026-08-10 18:27:01 +02:00
user.h
schinit: a launchd-shaped process 1
2026-08-09 16:36:13 +02:00
virtio.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
x86.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
xhci.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00