While preparing POHMELFS for drivers/staging I decided to run more benchmarks, and suddenly found a nasty bug in the way filesystem process the names of the objects.
Effectively POHMELFS uses path name as ID, so it does not suffer from the NFS -ESTALE problem, when object related to the received ID was (re)moved. It also greatly helps for the writeback cache implementation, when we do not need to sync name/id pairs on the server, which operates with names only.
For this purpose I implemented simple trie-like name cache in POHMELFS, which hosted names in the descending order starting from the root. There was a bug in the rename part of the algorithm, but while looking at the implementation I thought, what the hell, Linux already has a very scalable dentry cache, why do I need to naively reinvent it here.
So, I dropped my own implementation and started to use dcache. It is not very optimal though: for example there is no helper to determine the path length, so it should be preallocated long enough. So far I use hardcoded length of 256 bytes. I agree, that it is not something particulary good part of the code, but that's what I'm playing with right now. And you know, results are quite interesting (besides the fact that I fixed a nasty bug which was triggered by dbench in particular), but POHMELFS still has a slower random read performance compared to NFS (for some patterns NFS random read performance is higher than sequential read, so I think there are some tricky cheats besides request comounds).
In the meantime I rebased DST to the latest git tree where it is now possible to allocate a bio (block IO request) with several embedded bio_vecs (pages) and ability to prepend some data without additional allocation, which was suggested by Jens Axboe. This works by creating a memory pool of large enough objects to contain bio itlsef and space for the requested object. Now one additional allocation in the DST export node is eliminated. But I can not test this, since machines are occupied by POHMELFS testing, so DST is not in the drivers/staging yet.
Discussion revealed interesting moments, like:
Hm, then why can't this whole thing just go into fs/dst/ right now? It's self-contained, so there shouldn't be any special "must live in staging" rule for filesystems before adding them.
Well... the case for merging drivers is usually pretty simple - the hardware exists, so we need the driver.
Whereas the "do we need this" case for new filesystems isn't this simple.
FWIW we definitely want pohmelfs in staging...
So, let's see how things will flow in a few moments...
Recent comments
2 weeks 8 hours ago
2 weeks 18 hours ago
2 weeks 1 day ago
2 weeks 2 days ago
2 weeks 3 days ago
2 weeks 3 days ago
3 weeks 3 days ago
3 weeks 3 days ago
3 weeks 5 days ago
3 weeks 5 days ago