Re:VirtualBox 6.1
by monocasa on Friday December 13, 2019 @11:59AM
(#21783257)
Because there's fundamental issues with POSIX use cases and NT's VFS(well, IFS), and cache layers.
Basically the block cache on NT exists between user space and the filesystem, not the filesystem and the block device. For metadata heavy ops (like open(), stat(), etc.) the regular cache isn't in play, and the little caches in the NTFS driver aren't nearly as smart as the regular cache layer. You could stick a cache between NTFS and the IO driver, but that would mean heavily changing the IFS interface, and heavily changing the NTFS driver itself. Unfortunately, the NTFS driver has been referred to as "a purple opium-fueled Victorian horror novel that uses global recursive locks and SEH [Structured Exception Handling] for flow control" by a kernel dev. I can't even imagine how scary adding a cache layer under it might be.
Basically the block cache on NT exists between user space and the filesystem, not the filesystem and the block device. For metadata heavy ops (like open(), stat(), etc.) the regular cache isn't in play, and the little caches in the NTFS driver aren't nearly as smart as the regular cache layer. You could stick a cache between NTFS and the IO driver, but that would mean heavily changing the IFS interface, and heavily changing the NTFS driver itself. Unfortunately, the NTFS driver has been referred to as "a purple opium-fueled Victorian horror novel that uses global recursive locks and SEH [Structured Exception Handling] for flow control" by a kernel dev. I can't even imagine how scary adding a cache layer under it might be.