diff --git a/slurm.conf b/slurm.conf
index 505b5f2..f575826 100644
--- a/slurm.conf
+++ b/slurm.conf
@@ -122,7 +122,7 @@ SelectType=select/linear
 #AccountingStoragePort=
 AccountingStorageType=accounting_storage/none
 #AccountingStorageUser=
-AccountingStoreJobComment=YES
+AccountingStoreFlags=job_comment
 ClusterName=cluster
 #DebugFlags=
 #JobCompHost=
diff --git a/slurm.spec b/slurm.spec
index f7c17ce..494e73a 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -15,8 +15,8 @@
 %endif
 
 Name:           slurm
-Version:        20.11.8
-Release:        4%{?dist}
+Version:        21.08.2
+Release:        1%{?dist}
 Summary:        Simple Linux Utility for Resource Management
 License:        GPLv2 and BSD
 URL:            https://slurm.schedmd.com/
@@ -35,6 +35,7 @@ Patch10:        slurm_perlapi_rpaths.patch
 Patch11:        slurm_html_doc_path.patch
 Patch12:        slurm_without_cray.patch
 Patch13:        slurm_check_version.patch
+Patch14:        slurm_detect_pmix_v4.patch
 
 # Other patches
 Patch20:        slurm_pmix_soname.patch
@@ -135,22 +136,6 @@ Summary: Slurm shared libraries
 %description libs
 Slurm shared libraries.
 
-%package pmi
-Summary: The %{name} implementation of libpmi and libpmi2
-Requires: %{name}%{?_isa} = %{version}-%{release}
-Conflicts: pmix-pmi
-%description pmi
-The %{name}-pmi package contains the %{name} implementation of
-the libpmi and libpmi2 libraries.
-
-%package pmi-devel
-Summary: Development files for %{name}-pmi
-Requires: %{name}-pmi%{?_isa} = %{version}-%{release}
-Conflicts: pmix-pmi-devel
-%description pmi-devel
-The %{name}-pmi-devel package contains the development files for
-the libpmi and libpmi2 libraries.
-
 %package rrdtool
 Summary: Slurm rrdtool external sensor plugin
 Requires: %{name}%{?_isa} = %{version}-%{release}
@@ -449,7 +434,8 @@ rm -f %{buildroot}%{_unitdir}/slurmrestd.service
 %{_libdir}/%{name}/auth_jwt.so
 %endif
 %{_libdir}/%{name}/auth_munge.so
-%{_libdir}/%{name}/burst_buffer_generic.so
+%{_libdir}/%{name}/burst_buffer_lua.so
+%{_libdir}/%{name}/cgroup_v1.so
 %{_libdir}/%{name}/cli_filter_*.so
 %{_libdir}/%{name}/core_spec_none.so
 %{_libdir}/%{name}/cred_*.so
@@ -463,7 +449,8 @@ rm -f %{buildroot}%{_unitdir}/slurmrestd.service
 %{_libdir}/%{name}/launch_slurm.so
 %{_libdir}/%{name}/mcs_*.so
 %{_libdir}/%{name}/mpi_*.so
-%{_libdir}/%{name}/node_features_knl_generic.so
+%{_libdir}/%{name}/node_features_*.so
+%{_libdir}/%{name}/openapi_*.so
 %{_libdir}/%{name}/power_none.so
 %{_libdir}/%{name}/preempt_*.so
 %{_libdir}/%{name}/prep_script.so
@@ -472,6 +459,7 @@ rm -f %{buildroot}%{_unitdir}/slurmrestd.service
 %{_libdir}/%{name}/route_*.so
 %{_libdir}/%{name}/sched_*.so
 %{_libdir}/%{name}/select_*.so
+%{_libdir}/%{name}/serializer_*.so
 %{_libdir}/%{name}/site_factor_none.so
 %{_libdir}/%{name}/slurmctld_nonstop.so
 %{_libdir}/%{name}/switch_*.so
@@ -505,6 +493,7 @@ rm -f %{buildroot}%{_unitdir}/slurmrestd.service
 %{_mandir}/man5/job_container.conf.5*
 %{_mandir}/man5/knl.conf.5*
 %{_mandir}/man5/nonstop.conf.5*
+%{_mandir}/man5/oci.conf.5*
 %{_mandir}/man5/slurm.conf.5*
 %{_mandir}/man5/topology.conf.5*
 %{_mandir}/man8/slurmrestd.8*
@@ -523,15 +512,18 @@ rm -f %{buildroot}%{_unitdir}/slurmrestd.service
 %dir %{_libdir}/%{name}/src
 %dir %{_libdir}/%{name}/src/sattach
 %dir %{_libdir}/%{name}/src/srun
+%{_includedir}/%{name}/pmi*.h
 %{_includedir}/%{name}/slurm.h
 %{_includedir}/%{name}/slurm_errno.h
+%{_includedir}/%{name}/slurm_version.h
 %{_includedir}/%{name}/slurmdb.h
 %{_includedir}/%{name}/smd_ns.h
 %{_includedir}/%{name}/spank.h
+%{_libdir}/libpmi.so
+%{_libdir}/libpmi2.so
 %{_libdir}/libslurm.so
 %{_libdir}/%{name}/src/sattach/sattach.wrapper.c
 %{_libdir}/%{name}/src/srun/srun.wrapper.c
-%{_mandir}/man3/*.3.*
 
 # ---------
 # Slurm-doc
@@ -571,27 +563,12 @@ fi
 # ----------
 
 %files libs
+%{_libdir}/libpmi.so.0*
+%{_libdir}/libpmi2.so.0*
 %{_libdir}/libslurm.so.*
 %{_libdir}/libslurmfull-*.so
 %{_libdir}/libslurm_pmi-*.so
 
-# ---------
-# Slurm-pmi
-# ---------
-
-%files pmi
-%{_libdir}/libpmi.so.0*
-%{_libdir}/libpmi2.so.0*
-
-# ---------------
-# Slurm-pmi-devel
-# ---------------
-
-%files pmi-devel
-%{_includedir}/%{name}/pmi*.h
-%{_libdir}/libpmi.so
-%{_libdir}/libpmi2.so
-
 # -------------
 # Slurm-rrdtool
 # -------------
@@ -769,6 +746,11 @@ fi
 %systemd_postun_with_restart slurmdbd.service
 
 %changelog
+* Fri Oct 8 2021 Philip Kovacs <pkfed@fedoraproject.org> - 21.08.2-1
+- Update to 21.08.2
+- Added Fedora patches to support pmix v4
+- Remove slurm-pmi(-devel) subpackages
+
 * Tue Aug 10 2021 Orion Poplawski <orion@nwra.com> - 20.11.8-4
 - Rebuild for hdf5 1.10.7
 
diff --git a/slurm_detect_pmix_v4.patch b/slurm_detect_pmix_v4.patch
new file mode 100644
index 0000000..032fb79
--- /dev/null
+++ b/slurm_detect_pmix_v4.patch
@@ -0,0 +1,14 @@
+diff --git a/auxdir/x_ac_pmix.m4 b/auxdir/x_ac_pmix.m4
+index f40d39fa8e..f5221bf8cf 100755
+--- a/auxdir/x_ac_pmix.m4
++++ b/auxdir/x_ac_pmix.m4
+@@ -188,7 +188,8 @@ AC_DEFUN([X_AC_PMIX],
+ 
+   AM_CONDITIONAL(HAVE_PMIX, [test $_x_ac_pmix_v1_found = "1"] ||
+                 [test $_x_ac_pmix_v2_found = "1"] ||
+-                [test $_x_ac_pmix_v3_found = "1"] )
++                [test $_x_ac_pmix_v3_found = "1"] ||
++                [test $_x_ac_pmix_v4_found = "1"])
+   AM_CONDITIONAL(HAVE_PMIX_V1, [test $_x_ac_pmix_v1_found = "1"])
+   AM_CONDITIONAL(HAVE_PMIX_V2, [test $_x_ac_pmix_v2_found = "1"])
+   AM_CONDITIONAL(HAVE_PMIX_V3, [test $_x_ac_pmix_v3_found = "1"])
diff --git a/slurm_pmix_soname.patch b/slurm_pmix_soname.patch
index 39ee74f..633dd81 100644
--- a/slurm_pmix_soname.patch
+++ b/slurm_pmix_soname.patch
@@ -1,10 +1,22 @@
 diff --git a/src/plugins/mpi/pmix/mpi_pmix.c b/src/plugins/mpi/pmix/mpi_pmix.c
-index 1bf287ff44..8702a2bd17 100644
+index 69c5191112..1d0080dd77 100644
 --- a/src/plugins/mpi/pmix/mpi_pmix.c
 +++ b/src/plugins/mpi/pmix/mpi_pmix.c
-@@ -109,7 +109,7 @@ static void *_libpmix_open(void)
+@@ -87,6 +87,8 @@ const char plugin_type[] = "mpi/pmix_v1";
+ const char plugin_type[] = "mpi/pmix_v2";
+ #elif (HAVE_PMIX_VER == 3)
+ const char plugin_type[] = "mpi/pmix_v3";
++#elif (HAVE_PMIX_VER == 4)
++const char plugin_type[] = "mpi/pmix_v4";
+ #endif
+ 
+ const uint32_t plugin_version = SLURM_VERSION_NUMBER;
+@@ -112,8 +114,10 @@ static void *_libpmix_open(void)
+ 	xstrfmtcat(full_path, "%s/", PMIXP_V2_LIBPATH);
  #elif defined PMIXP_V3_LIBPATH
  	xstrfmtcat(full_path, "%s/", PMIXP_V3_LIBPATH);
++#elif defined PMIXP_V4_LIBPATH
++	xstrfmtcat(full_path, "%s/", PMIXP_V4_LIBPATH);
  #endif
 -	xstrfmtcat(full_path, "libpmix.so");
 +	xstrfmtcat(full_path, "libpmix.so.2");
@@ -12,10 +24,10 @@ index 1bf287ff44..8702a2bd17 100644
  	lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
  	xfree(full_path);
 diff --git a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
-index f6c91adc93..6021faa01e 100644
+index 44013246e3..96c40b5c3a 100644
 --- a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
 +++ b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
-@@ -167,7 +167,7 @@ static int _load_ucx_lib()
+@@ -169,7 +169,7 @@ static int _load_ucx_lib()
  	 * we have from autoconf
  	 */
  	char *full_path = NULL;
@@ -24,7 +36,7 @@ index f6c91adc93..6021faa01e 100644
  	_ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
  	xfree(full_path);
  	if (_ucx_lib_handler) {
-@@ -178,7 +178,7 @@ static int _load_ucx_lib()
+@@ -180,7 +180,7 @@ static int _load_ucx_lib()
  	 * known by dynamic linker.
  	 */
  #endif
diff --git a/slurm_without_cray.patch b/slurm_without_cray.patch
index c05191a..f917445 100644
--- a/slurm_without_cray.patch
+++ b/slurm_without_cray.patch
@@ -1,21 +1,21 @@
 diff --git a/contribs/Makefile.am b/contribs/Makefile.am
-index 3f6fac0a85..6c466b4eb5 100644
+index f08b1b0440..110dd03757 100644
 --- a/contribs/Makefile.am
 +++ b/contribs/Makefile.am
 @@ -1 +1 @@
--SUBDIRS = cray lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
-+SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
+-SUBDIRS = cray lua nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
++SUBDIRS = lua nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
 diff --git a/src/plugins/burst_buffer/Makefile.am b/src/plugins/burst_buffer/Makefile.am
-index c187bb83bd..aabd7f3fe8 100644
+index e55b18af47..3c4cf98f2c 100644
 --- a/src/plugins/burst_buffer/Makefile.am
 +++ b/src/plugins/burst_buffer/Makefile.am
-@@ -2,6 +2,3 @@
+@@ -3,5 +3,5 @@
+ SUBDIRS = common
  
- SUBDIRS = generic
- 
--if WITH_JSON_PARSER
--SUBDIRS += datawarp
--endif
+ if WITH_JSON_PARSER
+-SUBDIRS += datawarp lua
++SUBDIRS += lua
+ endif
 diff --git a/src/plugins/core_spec/Makefile.am b/src/plugins/core_spec/Makefile.am
 index 44b1ed67c0..f06bc541d7 100644
 --- a/src/plugins/core_spec/Makefile.am
@@ -50,14 +50,14 @@ index 4d055e2030..1a44dfb2ab 100644
  SUBDIRS += pmix
  endif
 diff --git a/src/plugins/node_features/Makefile.am b/src/plugins/node_features/Makefile.am
-index f5ef036303..d955c51ba1 100644
+index b065610c2b..c3745f42b6 100644
 --- a/src/plugins/node_features/Makefile.am
 +++ b/src/plugins/node_features/Makefile.am
 @@ -1,3 +1,3 @@
  # Makefile for node_features plugins
  
--SUBDIRS = knl_cray knl_generic
-+SUBDIRS = knl_generic
+-SUBDIRS = helpers knl_cray knl_generic
++SUBDIRS = helpers knl_generic
 diff --git a/src/plugins/power/Makefile.am b/src/plugins/power/Makefile.am
 index ccde44c322..c6171740c1 100644
 --- a/src/plugins/power/Makefile.am
diff --git a/sources b/sources
index 1d786b3..fbefb25 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (slurm-20.11.8.tar.bz2) = f67e6ebafef07eda9776a4545f0bf28a926f3c2e1269ce22a422a708d6d743df93e5fd87fa454f652f1e933ff9e233a49b8c27afa04d5717266d690098d88a06
+SHA512 (slurm-21.08.2.tar.bz2) = cb65093a0ac1587b95deb17096bad108d16c4aaae29008deb037a36ef929035cc3b866d68ef0a54dc8d14f777402846919b5616c1b31f32c6c7cd82eb3ef99e7