forked from DGNum/liminix
think
This commit is contained in:
parent
a5f16dfa81
commit
fc723b9a35
1 changed files with 151 additions and 0 deletions
151
THOUGHTS.txt
151
THOUGHTS.txt
|
@ -4412,3 +4412,154 @@ it can know what to update
|
||||||
|
|
||||||
Maybe config.filesystem should specify /etc/s6-rc/compiled.new
|
Maybe config.filesystem should specify /etc/s6-rc/compiled.new
|
||||||
and something in early boot could symlink /etc/s6-rc/compiled to it
|
and something in early boot could symlink /etc/s6-rc/compiled to it
|
||||||
|
|
||||||
|
Sat Mar 30 18:41:14 GMT 2024
|
||||||
|
|
||||||
|
soft restart doesn't restart services that are invoked by trigger,
|
||||||
|
because it has to do -p -u default so that it prunes services that
|
||||||
|
were in the old config but not the new one. Ideally we need somehow
|
||||||
|
to notify the trigger that it should respawn its service. Maybe
|
||||||
|
we could add triggers to the force restart list, if there's a way
|
||||||
|
to detect which they are? don't want to do it by adding files in
|
||||||
|
the service state directory if there may be oneshot triggers. Can
|
||||||
|
there be oneshot triggers?
|
||||||
|
|
||||||
|
The hashes file is built when we build the service database, so we
|
||||||
|
could easily(?) add something in there to mark services that
|
||||||
|
need poking whenever there's a restart. It's not perfect because the
|
||||||
|
triggered services will be bounced unnecessarily, but remember that
|
||||||
|
the alternative is a reboot ...
|
||||||
|
|
||||||
|
Mon Apr 1 00:18:50 BST 2024
|
||||||
|
|
||||||
|
i) I don't know if digressing into remote log shipping is a tangent or
|
||||||
|
an important part of making services work well.
|
||||||
|
|
||||||
|
ii) Should there be a single "machine state" value for all of the
|
||||||
|
trigger services to reference, or is it better that each trigger
|
||||||
|
service has its own private state, or (third option) one state
|
||||||
|
per "state source"? We previously handwaved that a state source
|
||||||
|
is a service
|
||||||
|
|
||||||
|
services.addmember = services.udev.watch {
|
||||||
|
match = {
|
||||||
|
SUBSYSTEM = "net";
|
||||||
|
ID_PATH = "pci-0000:04:00.0";
|
||||||
|
ATTR.operstate = "up";
|
||||||
|
};
|
||||||
|
|
||||||
|
service = oneshot {
|
||||||
|
up = "ip link set dev $dev master $(output ${primary} ifname)";
|
||||||
|
down = "ip link set dev $(output ${member} ifname) nomaster";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Tue Apr 2 19:55:25 BST 2024
|
||||||
|
|
||||||
|
We could do a test script for udev usb disk mounting, which uses the
|
||||||
|
qemu monitor to add/remove a disk.
|
||||||
|
|
||||||
|
|
||||||
|
./result/run.sh --flag -device --flag usb-ehci,id=xhci --flag -drive --flag if=none,id=usbstick,format=raw,file=./stick.img
|
||||||
|
|
||||||
|
(qemu) device_add usb-storage,bus=xhci.0,drive=usbstick
|
||||||
|
|
||||||
|
Fri Apr 5 17:11:46 BST 2024
|
||||||
|
|
||||||
|
1) write a fennel thing that reads from the udev rebroadcast socket
|
||||||
|
2) and can check sysfs for state
|
||||||
|
3) set up mdevd in liminix
|
||||||
|
|
||||||
|
|
||||||
|
Sat Apr 6 13:23:02 BST 2024
|
||||||
|
|
||||||
|
I wonder if we could replace preinit with an execline script? One for
|
||||||
|
the TODO stack
|
||||||
|
|
||||||
|
|
||||||
|
Sun Apr 7 14:03:29 BST 2024
|
||||||
|
|
||||||
|
1) we want to know what messages are sent from mdevd under various circumstances
|
||||||
|
- actually, right now the only relevant circumstances are updown and inout
|
||||||
|
|
||||||
|
2) we might get a wider variety of messages from real hardware?
|
||||||
|
|
||||||
|
3) if we log the raw messages, pref. with timestamps, then we can
|
||||||
|
write tests for the parsing
|
||||||
|
|
||||||
|
|
||||||
|
therefore: write a program that opens the netlink socket and logs
|
||||||
|
all data received
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
what's the minimum we need here? we need the inout test to open a
|
||||||
|
uevent socket and use uevents to update some state that says whether the
|
||||||
|
backup drive is plugged in
|
||||||
|
|
||||||
|
rather awkwardly, uevents don't have filesystem labels. so we also need
|
||||||
|
to run blkid to find the label of each partition, and ideally we do this
|
||||||
|
while the partition is present, not each time we get an event for it.
|
||||||
|
|
||||||
|
We have DEVNAME, DEVTYPE, SUBSYSTEM to indicate that a filesystem of interest
|
||||||
|
may be present, we should use that as a trigger to scan any known
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
add@/devices/pci0000:00/0000:00:13.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1
|
||||||
|
ACTION=add
|
||||||
|
DEVPATH=/devices/pci0000:00/0000:00:13.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1
|
||||||
|
SUBSYSTEM=block
|
||||||
|
MAJOR=8
|
||||||
|
MINOR=1
|
||||||
|
DEVNAME=sda1
|
||||||
|
DEVTYPE=partition
|
||||||
|
DISKSEQ=2
|
||||||
|
PARTN=1
|
||||||
|
SEQNUM=1528
|
||||||
|
|
||||||
|
Some disks on loaclhost and noetbook have PARTNAME field - I assume
|
||||||
|
this is because they're GPT disks. Would it actually be better to use this
|
||||||
|
field than grovelling for filesystem label?
|
||||||
|
|
||||||
|
Tue Apr 9 21:07:50 BST 2024
|
||||||
|
|
||||||
|
Having waited for the appropriately labelled disk to appear, we then
|
||||||
|
also have to communicate its path to the service that mounts it
|
||||||
|
|
||||||
|
- create a symlink
|
||||||
|
- or use an instanced service
|
||||||
|
|
||||||
|
Creating a symlink will be fine if we can pass the symlink name as
|
||||||
|
a param to fswait
|
||||||
|
|
||||||
|
Wed Apr 10 20:53:48 BST 2024
|
||||||
|
|
||||||
|
We think that fswait will evolve into a more general
|
||||||
|
waiting-for-uevents tool. Maybe we could provide the matchers on the
|
||||||
|
command line:
|
||||||
|
|
||||||
|
waituevent -l /dev/volumes/backup-disk -s mount-srv devtype=partition partname=backup-disk
|
||||||
|
|
||||||
|
Thu Apr 11 23:09:43 BST 2024
|
||||||
|
|
||||||
|
lcommit d3a2e3a4cb80b631df2ab79d463c2c4d1adef37b
|
||||||
|
commit 4a58cf9335116ce673fcf08f70f3bca921a4c9ad
|
||||||
|
commit afca6d4b63dd39062f02827b3c29e16904770216
|
||||||
|
|
||||||
|
Sun Apr 14 19:50:27 BST 2024
|
||||||
|
|
||||||
|
how to get this on to main:
|
||||||
|
- make uevent-watcher package (it's fswait renamed)
|
||||||
|
- make mount service use it
|
||||||
|
- module for mdevd
|
||||||
|
- add nellie (generalise for other netlink uses w/params pid/family/groups)
|
||||||
|
|
||||||
|
Mon Apr 15 19:59:43 BST 2024
|
||||||
|
|
||||||
|
plan:
|
||||||
|
|
||||||
|
introduce uevent-watcher command, update test to use it
|
||||||
|
|
||||||
|
make mount service use it
|
||||||
|
|
Loading…
Reference in a new issue