For the 99% of people reading who don't know the kernel as well as you (seriously) can you explain why this is the case?
Does a userspace filesystem driver lose a lot of performance to context switching, or is there something unique to filesystems that slows them down in user space?
I use a FUSE filesystem on linux- not ExFAT, but as an S3 interface. I often see 1+Gigabyte/sec throughput over the wire from simple multithreaded IO operations. FUSE can be very fast.
That's correct, my metric for performance is throughput
I don't really think a desktop vs a smartphone matters much at this comparison, it's just my observation that when people say a fuse filesystem is slow it's just not well-engineered, not that the fuse API is inherently slow
It matters a lot. You can squeeze impressive performance from a smartphone, too, but then you need to dump all that waste heat somewhere, plus you need to take battery capacity into account. In other words, in a desktop, power efficiency is commendable, but not critical.
For copying photos off an SD card you're unlikely to notice any difference on any machine made in the past 10 years, except maybe the fans coming on, but try it on a Raspberry Pi class machine, or doing any kind of random IO and oh boy..
The Spectre/Meltdown situation must have made FUSE much, much worse than it was already. I wonder if anyone did any benchmarks for that
Much faster. Also, FUSE has to be installed by the user, which if it's in the kernel, then it Just Works everywhere. With the spec open and the patent license freely granted, the most common USB flash drive format can now Just Work everywhere.
It also removes the requirement of distros packaging it up and users installing and configuring it. Is it's in the kernel it just works out of the box everywhere.
And yes, this is _much_ better than using a FUSE interface to the filesystem.