The following changes since commit 7a725c78547f7337dddb6fd391f80914f671e583: Merge branch 'englist' of https://github.com/vt-alt/fio (2023-10-25 17:53:40 -0400) are available in the Git repository at: git://git.kernel.dk/fio.git master for you to fetch changes up to 95f4d3f054464e997ae1067dc7f4f8ec3f896ccc: Merge branch 'pi-perf' of https://github.com/ankit-sam/fio (2023-10-31 09:27:15 -0600) ---------------------------------------------------------------- Ankit Kumar (1): crct10: use isa-l for crc if available Jens Axboe (1): Merge branch 'pi-perf' of https://github.com/ankit-sam/fio HOWTO.rst | 4 ++++ configure | 29 +++++++++++++++++++++++++++++ crc/crct10dif_common.c | 13 +++++++++++++ fio.1 | 4 ++++ 4 files changed, 50 insertions(+) --- Diff of recent changes: diff --git a/HOWTO.rst b/HOWTO.rst index 6a8fb3e3..34d6afdf 100644 --- a/HOWTO.rst +++ b/HOWTO.rst @@ -2507,6 +2507,10 @@ with the caveat that when used on the command line, they must come after the If this is set to 0, fio generates protection information for write case and verifies for read case. Default: 1. + For 16 bit CRC generation fio will use isa-l if available otherwise + it will use the default slower generator. + (see: https://github.com/intel/isa-l) + .. option:: pi_chk=str[,str][,str] : [io_uring_cmd] Controls the protection information check. This can take one or more diff --git a/configure b/configure index 3e3f8132..420d97db 100755 --- a/configure +++ b/configure @@ -189,6 +189,7 @@ libiscsi="no" libnbd="no" libnfs="" xnvme="" +isal="" libblkio="" libzbc="" dfs="" @@ -262,6 +263,8 @@ for opt do ;; --disable-xnvme) xnvme="no" ;; + --disable-isal) isal="no" + ;; --disable-libblkio) libblkio="no" ;; --disable-tcmalloc) disable_tcmalloc="yes" @@ -322,6 +325,7 @@ if test "$show_help" = "yes" ; then echo "--enable-libiscsi Enable iscsi support" echo "--enable-libnbd Enable libnbd (NBD engine) support" echo "--disable-xnvme Disable xnvme support even if found" + echo "--disable-isal Disable isal support even if found" echo "--disable-libblkio Disable libblkio support even if found" echo "--disable-libzbc Disable libzbc even if found" echo "--disable-tcmalloc Disable tcmalloc support" @@ -2684,6 +2688,28 @@ if test "$xnvme" != "no" ; then fi print_config "xnvme engine" "$xnvme" +if test "$targetos" = "Linux" ; then +########################################## +# Check ISA-L support +cat > $TMPC << EOF +#include <isa-l/crc.h> +#include <stddef.h> +int main(void) +{ + return crc16_t10dif(0, NULL, 4096); +} +EOF +if test "$isal" != "no" ; then + if compile_prog "" "-lisal" "ISAL"; then + isal="yes" + LIBS="-lisal $LIBS" + else + isal="no" + fi +fi +print_config "isal" "$isal" +fi + ########################################## # Check if we have libblkio if test "$libblkio" != "no" ; then @@ -3334,6 +3360,9 @@ if test "$xnvme" = "yes" ; then echo "LIBXNVME_CFLAGS=$xnvme_cflags" >> $config_host_mak echo "LIBXNVME_LIBS=$xnvme_libs" >> $config_host_mak fi +if test "$isal" = "yes" ; then + output_sym "CONFIG_LIBISAL" +fi if test "$libblkio" = "yes" ; then output_sym "CONFIG_LIBBLKIO" echo "LIBBLKIO_CFLAGS=$libblkio_cflags" >> $config_host_mak diff --git a/crc/crct10dif_common.c b/crc/crct10dif_common.c index cfb2a1b1..1763b1c6 100644 --- a/crc/crct10dif_common.c +++ b/crc/crct10dif_common.c @@ -24,6 +24,17 @@ * */ +#ifdef CONFIG_LIBISAL +#include <isa-l/crc.h> + +extern unsigned short fio_crc_t10dif(unsigned short crc, + const unsigned char *buffer, + unsigned int len) +{ + return crc16_t10dif(crc, buffer, len); +} + +#else #include "crc-t10dif.h" /* Table generated using the following polynomium: @@ -76,3 +87,5 @@ extern unsigned short fio_crc_t10dif(unsigned short crc, return crc; } + +#endif diff --git a/fio.1 b/fio.1 index a8dc8f6c..c4742aa9 100644 --- a/fio.1 +++ b/fio.1 @@ -2263,6 +2263,10 @@ size greater than protection information size, fio will not generate or verify the protection information portion of metadata for write or read case respectively. If this is set to 0, fio generates protection information for write case and verifies for read case. Default: 1. + +For 16 bit CRC generation fio will use isa-l if available otherwise it will +use the default slower generator. +(see: https://github.com/intel/isa-l) .TP .BI (io_uring_cmd)pi_chk \fR=\fPstr[,str][,str] Controls the protection information check. This can take one or more of these