On Tue, Jul 11, 2023 at 05:51:42PM +0200, Mikulas Patocka wrote: > When I run the test 558 on bcachefs, it works like a fork-bomb and kills > the machine. The reason is that the "while" loop spawns "create_file" > subprocesses faster than they are able to complete. > > This patch fixes the crash by limiting the number of subprocesses to 128. > > Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> > > --- > tests/generic/558 | 1 + > 1 file changed, 1 insertion(+) > > Index: xfstests-dev/tests/generic/558 > =================================================================== > --- xfstests-dev.orig/tests/generic/558 > +++ xfstests-dev/tests/generic/558 > @@ -48,6 +48,7 @@ echo "Create $((loop * file_per_dir)) fi > while [ $i -lt $loop ]; do > create_file $SCRATCH_MNT/testdir $file_per_dir $i >>$seqres.full 2>&1 & > let i=$i+1 > + if [ $((i % 128)) = 0 ]; then wait; fi Hm. $loop is (roughly) the number of free inodes divided by 1000. This test completes nearly instantly on XFS; how many free inodes does bcachefs report after _scratch_mount? XFS reports ~570k inodes, so it's "only" starting 570 processes. I think it's probably wise to clamp $loop to something sane, but let's get to the bottom of how the math went wrong and we got a forkbomb. --D > done > wait > >