Recent changes (master)

Jens Axboe <[email protected]> Sat, 18 Jul 2026 06:00:01 -0600
Newsgroups org.kernel.vger.fio
Message-ID <[email protected]>
The following changes since commit b75f951c8635c0718c4b1b756f649ceb53b68481:

  Merge branch 'prv-y-verify-bytes-issued' of https://github.com/malikoyv/fio (2026-07-15 12:41:48 -0400)

are available in the Git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to cd29b7a64de2d5462a3b72e46d098679ba16b3f1:

  ci: drop Ubuntu container test platforms (2026-07-17 11:43:02 -0400)

----------------------------------------------------------------
Vincent Fu (8):
      test: drop scheduled tests
      ci: switch from Ubuntu 22.04 to 26.04
      fio: fix const char * warning
      fio: resolve const char * compiler warnings
      ci: use newer platforms for container tests
      ci: update platforms for QEMU tests
      ci: update macOS platform from macos-15 to macos-26
      ci: drop Ubuntu container test platforms

 .github/workflows/ci.yml   | 26 +++++++++++---------------
 .github/workflows/qemu.yml |  4 ++--
 ci/actions-build.sh        | 10 +++++++++-
 ci/actions-install.sh      | 23 ++++++++++++++---------
 ioengines.c                | 16 +++++++++++++---
 options.c                  |  2 +-
 parse.c                    |  6 +++---
 server.c                   |  2 +-
 8 files changed, 54 insertions(+), 35 deletions(-)

---

Diff of recent changes:

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2210f971..27ea58fb 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -4,8 +4,6 @@ on:
   push:
   pull_request:
   workflow_dispatch:
-  schedule:
-    - cron: "35 5 * * *"  # 5:35 UTC which is 0:35 ET
 
 jobs:
   build-containers:
@@ -15,13 +13,11 @@ jobs:
       fail-fast: false
       matrix:
         container:
-        - {os: 'debian', dh: 'debian', ver: 'bookworm', target_arch: 'x86_64'}
-        - {os: 'fedora', dh: 'fedora', ver: '40', target_arch: 'x86_64'}
-        - {os: 'alma', dh: 'almalinux', ver: '9', target_arch: 'x86_64'}
-        - {os: 'oracle', dh: 'oraclelinux', ver: '9', target_arch: 'x86_64'}
-        - {os: 'rocky', dh: 'rockylinux', ver: '9', target_arch: 'x86_64'}
-        - {os: 'ubuntu', dh: 'ubuntu', ver: 'noble', target_arch: 'i686'}
-        - {os: 'ubuntu', dh: 'ubuntu', ver: 'noble', target_arch: 'x86_64'}
+        - {os: 'debian', dh: 'debian', ver: 'trixie', target_arch: 'x86_64'}
+        - {os: 'fedora', dh: 'fedora', ver: '44', target_arch: 'x86_64'}
+        - {os: 'alma', dh: 'almalinux', ver: '10', target_arch: 'x86_64'}
+        - {os: 'oracle', dh: 'oraclelinux', ver: '10', target_arch: 'x86_64'}
+        - {os: 'rocky', dh: 'rockylinux/rockylinux', ver: '10', target_arch: 'x86_64'}
 
     container:
       image: ${{ matrix.container.dh }}:${{ matrix.container.ver }}
@@ -59,21 +55,21 @@ jobs:
         - windows-msys2-64
         include:
         - build: linux-gcc
-          os: ubuntu-22.04
+          os: ubuntu-26.04
           cc: gcc
         - build: linux-clang
-          os: ubuntu-22.04
+          os: ubuntu-26.04
           cc: clang
         - build: macos
-          os: macos-15
+          os: macos-26
         - build: linux-i686-gcc
-          os: ubuntu-22.04
+          os: ubuntu-26.04
           arch: i686
         - build: android
-          os: ubuntu-22.04
+          os: ubuntu-26.04
           arch: aarch64-linux-android32
         - build: android-recovery
-          os: ubuntu-22.04
+          os: ubuntu-26.04
           arch: aarch64-linux-android32
         - build: windows-cygwin-64
           os: windows-latest
diff --git a/.github/workflows/qemu.yml b/.github/workflows/qemu.yml
index e01b4061..16d74e29 100644
--- a/.github/workflows/qemu.yml
+++ b/.github/workflows/qemu.yml
@@ -7,7 +7,7 @@ on:
 
 jobs:
   qemu-guest:
-    runs-on: ubuntu-22.04
+    runs-on: ubuntu-26.04
 
     strategy:
       fail-fast: false
@@ -82,7 +82,7 @@ jobs:
             extra_pkgs: sg3-utils
 
     env:
-      DISTRO: debian-12
+      DISTRO: debian-13
       SSHCMD: ssh root@localhost -p 2022
       SCPCMD: scp -P 2022
       CI_TARGET_BUILD: linux
diff --git a/ci/actions-build.sh b/ci/actions-build.sh
index 861ed3a8..2aecbe85 100755
--- a/ci/actions-build.sh
+++ b/ci/actions-build.sh
@@ -38,6 +38,15 @@ main() {
                     ;;
 	    esac
 	    ;;&
+        */linux | */ubuntu | */debian | */fedora)
+            case "${CI_TARGET_ARCH}" in
+                "x86_64")
+                    configure_flags+=(
+                        "--enable-libiscsi"
+                    )
+                    ;;
+            esac
+	    ;;&
         */linux | */ubuntu | */debian | */fedora | */alma | */oracle | */rocky)
             case "${CI_TARGET_ARCH}" in
                 "i686")
@@ -46,7 +55,6 @@ main() {
                     ;;
                 "x86_64")
                     configure_flags+=(
-                        "--enable-libiscsi"
                         "--enable-libnbd"
                     )
                     ;;
diff --git a/ci/actions-install.sh b/ci/actions-install.sh
index 6940e5b9..41ab8439 100755
--- a/ci/actions-install.sh
+++ b/ci/actions-install.sh
@@ -79,7 +79,8 @@ DPKGCFG
     # Architecture-independent packages and packages for which we don't
     # care about the architecture.
     pkgs+=(
-        python3-scipy
+	python3-six
+	python3-scipy
 	python3-sphinx
 	python3-statsmodels
 	sudo
@@ -113,7 +114,6 @@ install_fedora() {
         kernel-devel
         libaio-devel
         libibverbs-devel
-        libiscsi-devel
         libnbd-devel
         libnfs-devel
         libpmem-devel
@@ -134,6 +134,7 @@ install_fedora() {
                 cunit-devel
                 libgfapi-devel
                 python3-statsmodels
+                libiscsi-devel
             )
             ;;
         "rocky" | "alma" | "oracle")
@@ -141,18 +142,20 @@ install_fedora() {
                 CUnit-devel
                 python-pip
             )
-            ;;&
-        "rocky" | "alma")
-            pkgs+=(
-                glusterfs-api-devel
-            )
             ;;
     esac
     dnf install -y "${pkgs[@]}"
 }
 
 install_rhel_clone() {
-    dnf install -y epel-release
+    if [ "${CI_TARGET_OS}" == "oracle" ]; then
+        local ver
+        ver="${CI_TARGET_OS_VER}"
+        dnf install -y "oracle-epel-release-el${ver}"
+    else
+        dnf install -y epel-release
+    fi
+
     install_fedora
 
     # I could not find a python3-statsmodels package in the repos
@@ -160,7 +163,9 @@ install_rhel_clone() {
 }
 
 install_oracle() {
-    dnf config-manager --set-enabled ol9_codeready_builder
+    local ver
+    ver="${CI_TARGET_OS_VER}"
+    dnf config-manager --set-enabled "ol${ver}_codeready_builder"
     install_rhel_clone
 }
 
diff --git a/ioengines.c b/ioengines.c
index a2816817..911a286e 100644
--- a/ioengines.c
+++ b/ioengines.c
@@ -711,6 +711,7 @@ int fio_show_ioengine_help(const char *engine)
 	struct thread_data td;
 	struct ioengine_ops *io_ops;
 	char *sep;
+	char *engine_name;
 	int ret = 1;
 
 	memset(&td, 0, sizeof(struct thread_data));
@@ -724,17 +725,25 @@ int fio_show_ioengine_help(const char *engine)
 		}
 		return 0;
 	}
-	sep = strchr(engine, ',');
+
+	engine_name = strdup(engine);
+	if (!engine_name) {
+		log_err("fio: out of memory\n");
+		return 1;
+	}
+
+	sep = strchr(engine_name, ',');
 	if (sep) {
 		*sep = 0;
 		sep++;
 	}
 
-	td.o.ioengine = (char *)engine;
+	td.o.ioengine = engine_name;
 	td.io_ops = load_ioengine(&td);
 
 	if (!td.io_ops) {
-		log_info("IO engine %s not found\n", engine);
+		log_info("IO engine %s not found\n", engine_name);
+		free(engine_name);
 		return 1;
 	}
 
@@ -744,5 +753,6 @@ int fio_show_ioengine_help(const char *engine)
 		log_info("IO engine %s has no options\n", td.io_ops->name);
 
 	free_ioengine(&td);
+	free(engine_name);
 	return ret;
 }
diff --git a/options.c b/options.c
index a7535e5c..29b86386 100644
--- a/options.c
+++ b/options.c
@@ -34,7 +34,7 @@ static const struct pattern_fmt_desc fmt_desc[] = {
  */
 static char *get_opt_postfix(const char *str)
 {
-	char *p = strstr(str, ":");
+	char *p = (char *)strstr(str, ":");
 
 	if (!p)
 		return NULL;
diff --git a/parse.c b/parse.c
index e2ec4fcc..92de7785 100644
--- a/parse.c
+++ b/parse.c
@@ -484,7 +484,7 @@ static size_t opt_len(const char *str)
 
 	size_t prefix_len = strlen(str);
 	for (i = 0; i < FIO_ARRAY_SIZE(delimiter); i++) {
-		postfix = strchr(str, delimiter[i]);
+		postfix = (char *)strchr(str, delimiter[i]);
 		candidate_len = (size_t)(postfix - str);
 		if (postfix && candidate_len < prefix_len)
 			prefix_len = candidate_len;
@@ -799,7 +799,7 @@ store_option_value:
 		** number of digits after period. Find first
 		** period in entire remaining list each time
 		*/
-		cp2 = strchr(ptr, '.');
+		cp2 = (char *)strchr(ptr, '.');
 		if (cp2 != NULL) {
 			int len = 0;
 
@@ -850,7 +850,7 @@ store_option_value:
 					ret = 0;
 					if (vp->cb)
 						fn = vp->cb;
-					rest = strstr(*cp ?: ptr, ":");
+					rest = (char *)strstr(*cp ?: ptr, ":");
 					if (rest) {
 						if (*cp)
 							*rest = '\0';
diff --git a/server.c b/server.c
index 16ccf52b..34f3f5c0 100644
--- a/server.c
+++ b/server.c
@@ -2702,7 +2702,7 @@ int fio_server_parse_string(const char *str, char **ptr, bool *is_sock,
 	 * If no port seen yet, check if there's a last ',' at the end
 	 */
 	if (!lport) {
-		portp = strchr(host, ',');
+		portp = (char *)strchr(host, ',');
 		if (portp) {
 			*portp = '\0';
 			portp++;