Re: [GIT PULL] f2fs for 5.18

From: Waiman Long
Date: Tue Mar 22 2022 - 13:37:33 EST


On 3/22/22 13:22, Linus Torvalds wrote:
On Mon, Mar 21, 2022 at 1:39 PM Jaegeuk Kim <jaegeuk@xxxxxxxxxx> wrote:
In this cycle, f2fs has some performance improvements for Android workloads such
as using read-unfair rwsems [...]
I've pulled this, but that read-unfair rwsem code looks incredibly
dodgy. Doing your own locking is always a bad sign, and it ahs
traditionally come back to bite us pretty much every time. At least it
uses real lock primitives, just in a really odd way.

The whole notion of making an rwsem unfair to readers sounds really
really odd. I mean, the whole and only _point_ of an rwsem is to
allow concurrent readers, and traditionally if it's unfair it's unfair
to _writers_ because that tends to be better for throughput (but
unfairness can cause horrible latency).

So it smells like there's something bad going on in f2fs.

That said, I'm adding Waiman to the cc here in case he would have
ideas at least for a cleaner interface. Our rw_semaphores are
explicitly trying to be fair, because unfairness (the other way) was
such a big problem.

I'm wondering it the optimistic read lock stealing is bothering f2fs?

I don't believe it is the optimistic read lock stealing code that is bothering f2fs.

AFAICS, the read-unfair rwsem code is created to resolve a potential lock starvation problem that they found on linux-5.10.y stable tree. I believe I have fixed that in the v5.11 kernel, see commit 2f06f702925 ("locking/rwsem: Prevent potential lock starvation"). However that commit is not in the stable tree. In fact, I have moved forward and taken out reader optimistic spinning but added just optimistic lock stealing instead. I believe the problem would have solved by including that patch series in their build. I haven't gotten any response as to whether they had tested this or not.

Apparently they prefer to upstream this stop-gap solution.

Cheers,
Longman