On Mon, Aug 26, 2019 at 11:14:45PM -0400, Arthur Krewat wrote:
On 8/26/2019 10:45 PM, Larry McVoy wrote:
Which was that the page cache is
*the* cache. There is nothing else.
Yeah, I re-read what you wrote a few times
after I replied, and realized
what you meant ... eventually ;)
I might be making too big of a deal about it. mmap semantics mattered
a lot when SMPs first showed up and main memory was small. It meant
that you could have multiple CPUs seeing and working on the same chunk
of data at the same time.
It's very similar to way that IOMMUs are exposed to user space these
days, enabling virtual machines direct access to the I/O devices.
ZFS breaks that model, the data is all in the ARC and if you mmap
it they have to bcopy the data out of the ARC, into the page cache
and now they have a consistency problem, you could modify stuff
via mmap or write and they have to manage that.
That consistency problem is the main reason that Sun almost completely
killed the buffer cache (it still was used for inodes and directories
but that was it). That consistency problem is a pain in the rear,
all sorts of race conditions and it tended to bit rot.
Jeff and Bill are smart people so I suspect they got it right but I'm
still stunned that they took such an architecturally bad approach.
And even more stunned that the oversight people approved it. There
is zero chance that the Sun I worked at would have allowed that.
--lm