FS/XFS testing framework
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: Eric Sandeen <sandeen@redhat.com>
Cc: Zorro Lang <zlang@redhat.com>,
	fstests@vger.kernel.org, hch@infradead.org,
	Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH 7/7] lib: remove random.c
Date: Sun, 16 Mar 2025 09:40:34 -0700	[thread overview]
Message-ID: <20250316164034.GO89034@frogsfrogsfrogs> (raw)
In-Reply-To: <ce0de787-1017-4b5b-8876-bff6adf4952a@redhat.com>

On Sun, Mar 16, 2025 at 10:48:50AM -0500, Eric Sandeen wrote:
> On 3/16/25 9:54 AM, Zorro Lang wrote:
> > On Mon, Mar 10, 2025 at 01:29:09PM -0500, Eric Sandeen wrote:
> >> sparse points out that lots of things in random.c could be static,
> >> and upon doing so we realize that nothing in this file is used.
> >> Which is unsurprising since these are all part of the standard
> >> C library ... so just remove the file.
> >>
> >> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
> >> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
> >> Reviewed-by: Christoph Hellwig <hch@lst.de>
> >> ---
> > 
> > Hi Eric,
> > 
> > When I did the fstests regression test this weekend, I found a regression
> > failure on generic/007 (diff output):
> > 
> >   --- /dev/fd/63	2025-03-15 13:31:35.044534292 -0400
> >   +++ generic/007.out.bad	2025-03-15 13:31:35.002455111 -0400
> >   @@ -14,9 +14,9 @@
> >    .........................................................................
> >    .........................................................................
> >    ....................................................
> >   -creates:  18736 OK,  18802 EEXIST  ( 37538 total, 50% EEXIST)
> >   -removes:  18675 OK,  19927 ENOENT  ( 38602 total, 51% ENOENT)
> >   -lookups:  12000 OK,  11860 ENOENT  ( 23860 total, 49% ENOENT)
> >   -total  :  49411 OK,  50589 w/error (100000 total, 50% w/error)
> >   +creates:  18839 OK,  18890 EEXIST  ( 37729 total, 50% EEXIST)
> >   +removes:  18783 OK,  19951 ENOENT  ( 38734 total, 51% ENOENT)
> >   +lookups:  11858 OK,  11679 ENOENT  ( 23537 total, 49% ENOENT)
> >   +total  :  49480 OK,  50520 w/error (100000 total, 50% w/error)
> >  
> >   -cleanup:     61 removes
> >   +cleanup:     56 removes
> > 
> > By bisecting, the first failed commit is this patch. After removing
> > the fstests internal lib/random.c, the output of src/nametest.c is
> > changed too, that breaks the g/007 (xfs/188 maybe too) test.
> > 
> > It fails on all filesystems (e.g. xfs, ext2/3/4, btrfs, tmpfs, nfs,
> > cifs etc). I'll defer the release of this week (03.16), hope we can
> > fix this regression next week :)
> 
> Oh no, I'm sorry. I thought that if this stuff was never used it'd
> be safe to just yank, but I clearly must have missed something.

Ahahaha, it's linked into libtest.a, which is then linked into every
fstests binary.  Therefore, any binary calling srandom and random get
this bespoke version instead of the one in the C library.  From the
looks of it, the RNG code itself runs the same operations in the same
order every time, which is why you can pass a seed to fsx/fsstress to
get the exact same sequence of operations.

Maybe lib/random.c should have its comment updated?  Clearly two
reviewers, myself, and the patch author missed this point:

/*
 * modified by dxm@sgi.com so that this file acts as a drop in replacement
 * for srandom and random.
 */

Because that doesn't really explain /why/ the code is needed as a drop
in replacement.  How about:

/*
 * modified by dxm@sgi.com so that this file acts as a drop in replacement
 * for srandom and random.  fstests programs rely on the exact sequence
 * of integers generated by these functions for reproducibility and the
 * golden output, which is why we override the C library.
 */

--D

> It's probably best to just revert/remove this patch for now, so it
> doesn't delay any release.
> 
> -Eric
> 

  reply	other threads:[~2025-03-16 16:40 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-10 18:29 [PATCH 0/7 V2] fstests: enable sparse checking & fix fallout Eric Sandeen
2025-03-10 18:29 ` [PATCH 1/7] fstests: enable sparse checking with make C=[12] Eric Sandeen
2025-03-10 18:29 ` [PATCH 2/7] treewide: check for #ifdef __linux__ not linux Eric Sandeen
2025-03-11  7:37   ` Christoph Hellwig
2025-03-11 13:44     ` Eric Sandeen
2025-03-11 13:46   ` [PATCH 2/7 V3] " Eric Sandeen
2025-03-11 15:25     ` Darrick J. Wong
2025-03-10 18:29 ` [PATCH 3/7] lib: Fix non-ANSI function declarations Eric Sandeen
2025-03-10 18:29 ` [PATCH 4/7] lib: fix empty arg function prototypes Eric Sandeen
2025-03-10 18:29 ` [PATCH 5/7] lib: replace aiocb_t with struct aiocb Eric Sandeen
2025-03-10 18:29 ` [PATCH 6/7] lib: make a few symbols static Eric Sandeen
2025-03-10 18:29 ` [PATCH 7/7] lib: remove random.c Eric Sandeen
2025-03-16 14:54   ` Zorro Lang
2025-03-16 15:48     ` Eric Sandeen
2025-03-16 16:40       ` Darrick J. Wong [this message]
2025-03-16 18:06         ` Eric Sandeen
2025-03-16 16:42       ` Zorro Lang
  -- strict thread matches above, loose matches on Subject: below --
2025-02-06 21:19 [PATCH 0/7] fstests: enable sparse checking & fix fallout Eric Sandeen
2025-02-06 21:20 ` [PATCH 7/7] lib: remove random.c Eric Sandeen
2025-02-06 22:47   ` Darrick J. Wong
2025-02-07  5:01   ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250316164034.GO89034@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=fstests@vger.kernel.org \
    --cc=hch@infradead.org \
    --cc=hch@lst.de \
    --cc=sandeen@redhat.com \
    --cc=zlang@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox