diff --git a/.gitignore b/.gitignore
index 0195a73..e09240a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,4 @@
 /fio-3.20.tar.bz2
 /fio-3.21.tar.bz2
 /fio-3.23.tar.bz2
+/fio-3.24.tar.bz2
diff --git a/0001-fio-fix-dynamic-engines-soname-definition.patch b/0001-fio-fix-dynamic-engines-soname-definition.patch
deleted file mode 100644
index 9039d24..0000000
--- a/0001-fio-fix-dynamic-engines-soname-definition.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 1b2f9943db0d74f4533567b7c8ed54d9c343e3f0 Mon Sep 17 00:00:00 2001
-From: Yigal Korman <ykorman@gmail.com>
-Date: Thu, 17 Sep 2020 21:55:14 +0300
-Subject: [PATCH] fio: fix dynamic engines soname definition
-
-The SONAME of the engines should not match the name of the dependent
-library. Otherwise it confuses the dynamic loader into thinking the
-dependency is already resolved.
-
-Prefixing the name with fio make more sense here.
-
-Signed-off-by: Yigal Korman <ykorman@gmail.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 8e1ebc90..e2d0833c 100644
---- a/Makefile
-+++ b/Makefile
-@@ -256,7 +256,7 @@ define engine_template =
- $(1)_OBJS := $$($(1)_SRCS:.c=.o)
- $$($(1)_OBJS): CFLAGS := -fPIC $$($(1)_CFLAGS) $(CFLAGS)
- engines/lib$(1).so: $$($(1)_OBJS)
--	$$(QUIET_LINK)$(CC) -shared -rdynamic -fPIC -Wl,-soname,lib$(1).so.1 $$($(1)_LIBS) -o $$@ $$<
-+	$$(QUIET_LINK)$(CC) -shared -rdynamic -fPIC -Wl,-soname,fio-$(1).so.1 $$($(1)_LIBS) -o $$@ $$<
- ENGS_OBJS += engines/lib$(1).so
- all install: $(ENGS_OBJS)
- endef
--- 
-2.17.1
-
diff --git a/fio.spec b/fio.spec
index a65bab6..bfe4a31 100644
--- a/fio.spec
+++ b/fio.spec
@@ -1,15 +1,12 @@
 Name:		fio
-Version:	3.23
-Release:	5%{?dist}
+Version:	3.24
+Release:	1%{?dist}
 Summary:	Multithreaded IO generation tool
 
 License:	GPLv2
 URL:		http://git.kernel.dk/?p=fio.git;a=summary
 Source:		http://brick.kernel.dk/snaps/%{name}-%{version}.tar.bz2
 
-# Not upstream yet, see:
-# https://bugzilla.redhat.com/show_bug.cgi?id=1884954#c8
-Patch1:         0001-fio-fix-dynamic-engines-soname-definition.patch
 
 BuildRequires:	gcc
 BuildRequires:	libaio-devel
@@ -23,7 +20,7 @@ BuildRequires:	libpmem-devel
 BuildRequires:	libpmemblk-devel
 %endif
 
-%ifnarch %{arm} i686
+%ifnarch %{arm} %{ix86}
 BuildRequires:	librbd1-devel
 %endif
 
@@ -40,13 +37,12 @@ BuildRequires:	librdmacm-devel
 # subpackages, but allows the engines to be uninstalled if not needed
 # or if the dependencies are too onerous.
 Recommends:     %{name}-engine-libaio
-%ifarch x86-64
-Recommends:     %{name}-engine-dev-dax
 Recommends:     %{name}-engine-http
-%endif
 Recommends:     %{name}-engine-nbd
-%ifarch x86_64
+%ifarch x86-64
+Recommends:     %{name}-engine-dev-dax
 Recommends:     %{name}-engine-pmemblk
+Recommends:     %{name}-engine-libpmem
 %endif
 %ifnarch %{arm} %{ix86}
 Recommends:     %{name}-engine-rados
@@ -71,21 +67,12 @@ Requires:       %{name}%{?_isa} = %{version}-%{release}
 %description engine-libaio
 Linux libaio engine for %{name}.
 
-%ifarch x86_64
-%package engine-dev-dax
-Summary:        PMDK dev-dax engine for %{name}.
-Requires:       %{name}%{?_isa} = %{version}-%{release}
-
-%description engine-dev-dax
-PMDK dev-dax engine for %{name}.
-
 %package engine-http
 Summary:        HTTP engine for %{name}.
 Requires:       %{name}%{?_isa} = %{version}-%{release}
 
 %description engine-http
 HTTP engine for %{name}.
-%endif
 
 %package engine-nbd
 Summary:        Network Block Device engine for %{name}.
@@ -95,12 +82,36 @@ Requires:       %{name}%{?_isa} = %{version}-%{release}
 Network Block Device (NBD) engine for %{name}.
 
 %ifarch x86_64
+%package engine-dev-dax
+Summary:        PMDK dev-dax engine for %{name}.
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+
+%description engine-dev-dax
+dev-dax engine for %{name}.
+Read and write using device DAX to a persistent memory device
+(e.g., /dev/dax0.0) through the PMDK libpmem library.
+%endif
+
+%ifarch x86_64
 %package engine-pmemblk
 Summary:        PMDK pmemblk engine for %{name}.
 Requires:       %{name}%{?_isa} = %{version}-%{release}
 
 %description engine-pmemblk
-PMDK pmemblk engine for %{name}.
+pmemblk engine for %{name}.
+Read and write using filesystem DAX to a file on a filesystem mounted with
+DAX on a persistent memory device through the PMDK libpmemblk library.
+%endif
+
+%ifarch x86_64
+%package engine-libpmem
+Summary:        PMDK pmemblk engine for %{name}.
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+
+%description engine-libpmem
+libpmem engine for %{name}.
+Read and write using mmap I/O to a file on a filesystem mounted with DAX
+on a persistent memory device through the PMDK libpmem library.
 %endif
 
 %ifnarch %{arm} %{ix86}
@@ -138,9 +149,8 @@ pathfix.py -i %{__python3} -pn \
  tools/plot/fio2gnuplot \
  t/steadystate_tests.py
 
-# Edit /usr/lib path in os/os-linux.h to match Fedora conventions.
-sed -e 's,/usr/lib/,%{_libdir}/,g' -i os/os-linux.h
-
+# Edit /usr/local/lib path in os/os-linux.h to match Fedora conventions.
+sed -e 's,/usr/local/lib/,%{_libdir}/,g' -i os/os-linux.h
 
 %build
 ./configure --disable-optimizations --enable-libnbd --dynamic-libengines
@@ -159,39 +169,48 @@ make install prefix=%{_prefix} mandir=%{_mandir} libdir=%{_libdir}/fio DESTDIR=$
 %{_mandir}/man1/*
 %{_datadir}/%{name}/*
 
-%files engine-libaio
-%{_libdir}/fio/libaio.so
-
 %ifarch x86_64
 %files engine-dev-dax
-%{_libdir}/fio/libdev-dax.so
+%{_libdir}/fio/fio-dev-dax.so
+%endif
 
 %files engine-http
-%{_libdir}/fio/libhttp.so
+%{_libdir}/fio/fio-http.so
+
+%files engine-libaio
+%{_libdir}/fio/fio-libaio.so
+
+%ifarch x86_64
+%files engine-libpmem
+%{_libdir}/fio/fio-libpmem.so
 %endif
 
 %files engine-nbd
-%{_libdir}/fio/libnbd.so
+%{_libdir}/fio/fio-nbd.so
 
 %ifarch x86_64
 %files engine-pmemblk
-%{_libdir}/fio/libpmemblk.so
+%{_libdir}/fio/fio-pmemblk.so
 %endif
 
 %ifnarch %{arm} %{ix86}
 %files engine-rados
-%{_libdir}/fio/librados.so
+%{_libdir}/fio/fio-rados.so
 
 %files engine-rbd
-%{_libdir}/fio/librbd.so
+%{_libdir}/fio/fio-rbd.so
 %endif
 
 %ifnarch %{arm}
 %files engine-rdma
-%{_libdir}/fio/librdma.so
+%{_libdir}/fio/fio-rdma.so
 %endif
 
 %changelog
+* Thu Nov 12 2020 Eric Sandeen <sandeen@redhat.com> 3.24-1
+- New upstream version
+- Fix dynamic engine loading (#bz1894616)
+
 * Mon Oct 05 2020 Richard W.M. Jones <rjones@redhat.com> 3.23-5
 - Disable automatic provides for fio engines (RHBZ#1884954).
 - Apply patch to change SONAME of fio engines (see comment 8 of above bug).
diff --git a/sources b/sources
index 5521aed..f167c12 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (fio-3.23.tar.bz2) = 242ce7b6673243e8544610619806490da6c527f86cebc803442c7504845ba5dcc186bb404da33c40a263f9558543497efc757cf10c370f66e2de330d7e149610
+SHA512 (fio-3.24.tar.bz2) = 909131ed70cd2c3874138c9f8e005d184bf2afa7de4ffd3dd1251b09f3ba45e34caaefc2e6b63261b3b1284e1f5a9ab6219f697780ddbd890f103187d7cbf7c9