Re: v4.2-rc dcache regression, probably 75a6f82a0d10

Dominique Martinet
2015-07-31T20:50:58Z

Hugh Dickins wrote on Fri, Jul 31, 2015:
> It will indeed be weird and odd if it confirms that DCACHE_DISCONNECTED
> revert is good. I agree that Dominique's 4bf46a272647 seems now more
> likely, if still unlikely; but that was included in v4.1, and I saw
> no problem with v4.1 once the rmap_walk() skip was fixed.

I think it could, actually, and that neither commits are actually bad --
just that they affect timing enough to raise an issue between d_delete
(I guess?) and link_path_walk (see last mail in other thread[1])

It's probably an old race that was very hard to hit because of cache
coherency.
Basically, before the wmb/rmb, the dentry was always updated closely to
its flags, so the other CPU would "usually" get both updates at the same
time; the barriers make it so the updates are split and it's possible to
get it, and would explain why I could pick 4bf46a2726 as "the one"

I'm not sure why the problem wouldn't arise on tmpfs though.

Hugh, could you try the reproducer I gave in the other thread[2] on both
filesystems maybe?
I need to let the thing run for a while, might need to tune params as
well. I was trying to fine tune cpu affinity with less threads but it's
not getting anywhere.

I'll also check if it's getting even easier to reproduce with
75a6f82a0d10 (or a recent kernel), who knows... How fast do you hit the
bug with the commit?

Thanks,
--
Dominique

[1] https://marc.info/?l=linux-fsdevel&m=143835651005259&w=2
[2] https://marc.info/?l=linux-fsdevel&m=143825706609188&w=2