Re: [git pull] vfs.git sysv pile

From: Fabio M. De Francesco
Date: Wed Mar 08 2023 - 12:41:33 EST


On giovedì 2 marzo 2023 20:35:59 CET Al Viro wrote:

[...]

> Frankly, ext2 patchset had been more along the lines of "here's what
> untangling the calling conventions in ext2 would probably look like" than
> anything else. If you are willing to test (and review) that sucker and it
> turns out to be OK, I'll be happy to slap your tested-by on those during
> rebase and feed them to Jan...

I git-clone(d) and built your "vfs" tree, branch #work.ext2, without and with
the following commits:

f5b399373756 ("ext2: use offset_in_page() instead of open-coding it as
subtraction")

c7248e221fb5 ("ext2_get_page(): saner type")

470e54a09898 ("ext2_put_page(): accept any pointer within the page")

15abcc147cf7 ("ext2_{set_link,delete_entry}(): don't bother with page_addr")

16a5ee2027b7 ("ext2_find_entry()/ext2_dotdot(): callers don't need page_addr
anymore")

Then I read the code and FWIW the five patches look good to me. I think they
can work properly.

Therefore, if you want to, please feel free to add my "Reviewed-by" tag (OK, I
know that you don't need my reviews, since you are the one who taught me how
to write patches like yours for sysv and ufs :-)).

As a personal preference, in ext2_get_page() I'd move the two lines of code
from the "fail" label to the same 'if' block where you have the "goto fail;",
mainly because that label is only reachable from there. However, it does not
matter at all because I'm only expressing my personal preference.

I ran `./check -g quick` without your patches in a QEMU/KVM x86_32 VM, 6GB
RAM, running a Kernel with HIGHMEM64GB enabled. I ran it three or four times
because it kept on hanging at random tests' numbers.

I'm noticing the same pattern due to the oom killer kicking in several times
to kill processes until xfstests its is dead.

[ 1171.795551] Out of memory: Killed process 1669 (xdg-desktop-por) total-vm:
105068kB, anon-rss:9792kB, file-rss:10972kB, shmem-rss:0kB, UID:1000 pgtables:
136kB oom_score_adj:200
[ 1172.339920] systemd invoked oom-killer: gfp_mask=0xcc0(GFP_KERNEL),
order=0, oom_score_adj=100
[ 1172.339927] CPU: 3 PID: 1413 Comm: systemd Tainted: G S W E
6.3.0-rc1-x86-32-debug+ #1
[ 1172.339929] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
rel-1.16.0-0-gd239552-rebuilt.opensuse.org 04/01/2014
[ 1172.339931] Call Trace:
[ 1172.339934] dump_stack_lvl+0x92/0xd4
[ 1172.339939] dump_stack+0xd/0x10
[ 1172.339941] dump_header+0x42/0x454
[ 1172.339945] ? ___ratelimit+0x6f/0x140
[ 1172.339948] oom_kill_process+0xe9/0x244
[ 1172.339950] out_of_memory+0xf6/0x424

I have not enough experience to understand why we get to that out-of-memory
condition, so that several processes get killed. I can send the whole decoded
stack trace and other information to whoever can look at this issue to figure
out how to fix this big issue. I can try to bisect this issue too, but I need
time because of other commitments and a slow system for building the necessary
kernels.

I want to stress that it does not depend on the above-mentioned patches. Yes,
I'm running Al's "vfs" tree, #work.ext2 branch, but with one only patch beyond
the merge with Linus' tree:

522dad1 ext2_rename(): set_link and delete_entry may fail

I have no means to test this tree. However, I think that I'd have the same
issue with Linus' tree too, unless this issue is due to the only commit not
yet there (I strongly doubt about this possibility).

Thanks,

Fabio