• Brian Behlendorf's avatar
    Perform KABI checks in parallel · 608f8749
    Brian Behlendorf authored
    
    
    Reduce the time required for ./configure to perform the needed
    KABI checks by allowing kbuild to compile multiple test cases in
    parallel.  This was accomplished by splitting each test's source
    code from the logic handling whether that code could be compiled
    or not.
    
    By introducing this split it's possible to minimize the number of
    times kbuild needs to be invoked.  As importantly, it means all of
    the tests can be built in parallel.  This does require a little extra
    care since we expect some tests to fail, so the --keep-going (-k)
    option must be provided otherwise some tests may not get compiled.
    Furthermore, since a failure during the kbuild modpost phase will
    result in an early exit; the final linking phase is limited to tests
    which passed the initial compilation and produced an object file.
    
    Once everything has been built the configure script proceeds as
    previously.  The only significant difference is that it now merely
    needs to test for the existence of a .ko file to determine the
    result of a given test.  This vastly speeds up the entire process.
    
    New test cases should use ZFS_LINUX_TEST_SRC to declare their test
    source code and ZFS_LINUX_TEST_RESULT to check the result.  All of
    the existing kernel-*.m4 files have been updated accordingly, see
    config/kernel-current-time.m4 for a basic example.  The legacy
    ZFS_LINUX_TRY_COMPILE macro has been kept to handle special cases
    but it's use is not encouraged.
    
                      master (secs)   patched (secs)
                      -------------   ----------------
    autogen.sh        61              68
    configure         137             24  (~17% of current run time)
    make -j $(nproc)  44              44
    make rpms         287             150
    Reviewed-by: default avatarTony Hutter <hutter2@llnl.gov>
    Signed-off-by: default avatarBrian Behlendorf <behlendorf1@llnl.gov>
    Closes #8547 
    Closes #9132
    Closes #9341 
    608f8749
.gitignore 1.03 KB