Re: [PATCH 7/7] lib: remove random.c

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On 3/16/25 11:40 AM, Darrick J. Wong wrote:
> 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@xxxxxxxxxx>
>>>> Reviewed-by: "Darrick J. Wong" <djwong@xxxxxxxxxx>
>>>> Reviewed-by: Christoph Hellwig <hch@xxxxxx>
>>>> ---
>>>
>>> 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@xxxxxxx 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@xxxxxxx 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.
>  */

Yeah, I agree. We need a stable random.c copy for reproducibility on
tests that expect it. :( Sorry about that, it's my near-constant
reminder that even "trivial" changes need testing :( 

And I'll figure out how to make sparse happier about it.

-Eric

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





[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux