The UNIX system has been in wide use for over 20 years, and has helped to define many areas of computing.
i need to jump back in time and tell them about zip files
they completely straight up just described my POSIX proposal for page cache synchronization from local to global
Since all open requests for a file go through the
CSS function, it is possible to implement a large
variety of synchronization policies.
literally what i've been saying
The kernel runs as an extension to the process and can sleep on behalf of the process.
pet cat kernel
In general, application programs and users cannot determine if any given system call will require foreign service.
literally i mentioned synchronization context to posix today
Because multilayered support and error handling, such as suggested by the ISO standard, is not present, much higher performance has been achieved.
wrong. thumbs down
Another strategy for pathname searching is to ship partial pathnames to foreign sites so they can do the expansion locally, avoiding remote directory opens and network transmission of directory pages.
yes!!!!! yes!!!!! locality!!!!!!
Such a solution is being investigated but is more complex in the general case
QUITTER
The important concept of atomically committing
changes has been imported from the database world
and integrated into LOCUS.
i'm gonna call myself a database guy now
omg SHIT it has both COMMIT and ABORT!
cc @zwol finally i have found some precedent for filesystem transactions (popek 1981) https://www.cs.princeton.edu/courses/archive/fall03/cs518/papers/locus.pdf this is a distributed filesystem with many similarities to current ones. as you can imagine it's purely regarding written pages but i think an ordered sequence of local i/o operations eventually merged into a wider (possibly global) synchronization context is an extremely reasonable thing to consider
A queue of propagation requests is kept by the kernel at each site and a kernel process services the queue.
literally the pants build tool
Propagation is done by "pulling" the data rather
than "pushing" it.
so this is generally how you would analyze a dependency graph but also this is like state of the art 1981 network shit and in that context this also demonstrates an early mitigation to thundering herd issues
BRUH
Given this commit mechanism, one is always left
with either the original file or a completely changed
file but never with a partially made change, even in
the face of local or foreign site failures. Such was
not the case in the standard Unix environment.
UNIX HATER'S HANDBOOK LOST CHAPTER
However, due to the potential for replicated storage of a new file, the create call needs two additional pieces of information - how many copies to store and where to store them.
you're never gonna believe what i emailed posix about earlier !!
except in my model replication is inferred by the system from the highly structured i/o agenda, which is provided at "compile time" before executing the task graph. so the extra context for me is instead a specific named "synchronization context" which generally corresponds to the virtual address space and visible filesystem contents for a set of tasks
(the sync context is itself a graph structure.)
Adding such information to the create call would change the system interface so instead defaults and per process state information is used, with system calls to modify them.
i'm not afraid of EEE