diff --git a/.389-ds-base.metadata b/.389-ds-base.metadata
index 8648fda..1186c8b 100644
--- a/.389-ds-base.metadata
+++ b/.389-ds-base.metadata
@@ -1,2 +1,2 @@
-bb047a562479b91b3a0ef66b45aaee5e43bddac9 SOURCES/389-ds-base-2.0.8.tar.bz2
+3793bb1f6fd7bbc9843438375dfecaa52ed942dd SOURCES/389-ds-base-2.0.11.tar.bz2
 9e06b5cc57fd185379d007696da153893cf73e30 SOURCES/jemalloc-5.2.1.tar.bz2
diff --git a/.gitignore b/.gitignore
index 7738aab..d1e4f79 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-SOURCES/389-ds-base-2.0.8.tar.bz2
+SOURCES/389-ds-base-2.0.11.tar.bz2
 SOURCES/jemalloc-5.2.1.tar.bz2
diff --git a/SOURCES/0001-Issue-4884-server-crashes-when-dnaInterval-attribute.patch b/SOURCES/0001-Issue-4884-server-crashes-when-dnaInterval-attribute.patch
deleted file mode 100644
index 872378b..0000000
--- a/SOURCES/0001-Issue-4884-server-crashes-when-dnaInterval-attribute.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 6e21d41f5d9f6437c00dd0150654415b172e391a Mon Sep 17 00:00:00 2001
-From: Mark Reynolds <mreynolds@redhat.com>
-Date: Wed, 25 Aug 2021 16:54:57 -0400
-Subject: [PATCH 1/3] Issue 4884 - server crashes when dnaInterval attribute is
- set to zero
-
-Bug Description:
-
-A division by zero crash occurs if the dnaInterval is set to zero
-
-Fix Description:
-
-Validate the config value of dnaInterval and adjust it to the
-default/safe value of "1" if needed.
-
-relates: https://github.com/389ds/389-ds-base/issues/4884
-
-Reviewed by: tbordaz(Thanks!)
----
- ldap/servers/plugins/dna/dna.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/ldap/servers/plugins/dna/dna.c b/ldap/servers/plugins/dna/dna.c
-index 928a3f54a..c983ebdd0 100644
---- a/ldap/servers/plugins/dna/dna.c
-+++ b/ldap/servers/plugins/dna/dna.c
-@@ -1025,7 +1025,14 @@ dna_parse_config_entry(Slapi_PBlock *pb, Slapi_Entry *e, int apply)
- 
-     value = slapi_entry_attr_get_charptr(e, DNA_INTERVAL);
-     if (value) {
-+        errno = 0;
-         entry->interval = strtoull(value, 0, 0);
-+        if (entry->interval == 0 || errno == ERANGE) {
-+            slapi_log_err(SLAPI_LOG_WARNING, DNA_PLUGIN_SUBSYSTEM,
-+                          "dna_parse_config_entry - Invalid value for dnaInterval (%s), "
-+                          "Using default value of 1\n", value);
-+            entry->interval = 1;
-+        }
-         slapi_ch_free_string(&value);
-     }
- 
--- 
-2.31.1
-
diff --git a/SOURCES/0002-Issue-4894-IPA-failure-in-ipa-user-del-preserve-4907.patch b/SOURCES/0002-Issue-4894-IPA-failure-in-ipa-user-del-preserve-4907.patch
deleted file mode 100644
index f274d36..0000000
--- a/SOURCES/0002-Issue-4894-IPA-failure-in-ipa-user-del-preserve-4907.patch
+++ /dev/null
@@ -1,296 +0,0 @@
-From faab51b0d14bdf7af013abdd7937f47cc0eb5cdc Mon Sep 17 00:00:00 2001
-From: Simon Pichugin <spichugi@redhat.com>
-Date: Fri, 10 Sep 2021 14:17:41 -0700
-Subject: [PATCH] Issue 4894 - IPA failure in ipa user-del --preserve (#4907)
-
-Bug Description: Starting with 389-ds 2.0.8 on rawhide,
-any call to ipa user-del --preserve fails with
-This entry already exists.
-
-Fix Description: We should split 'dn' parameter in searchAllSubtrees
-into parent and target. As one of them is used for excluding the
-subtree checks and another one for searching.
-Improve 'superior' processing when we don't change the parent.
-Rename variables in a more sane way.
-
-Fixes: https://github.com/389ds/389-ds-base/issues/4894
-
-Reviewed by: @Firstyear, @tbordaz, @progier389 (Thanks!)
----
- ldap/servers/plugins/uiduniq/uid.c | 78 +++++++++++++++---------------
- 1 file changed, 39 insertions(+), 39 deletions(-)
-
-diff --git a/ldap/servers/plugins/uiduniq/uid.c b/ldap/servers/plugins/uiduniq/uid.c
-index 9924623a7..5b763b551 100644
---- a/ldap/servers/plugins/uiduniq/uid.c
-+++ b/ldap/servers/plugins/uiduniq/uid.c
-@@ -770,13 +770,13 @@ search_one_berval(Slapi_DN *baseDN, const char **attrNames, const struct berval
-  *
-  * Return:
-  *   LDAP_SUCCESS - no matches, or the attribute matches the
-- *     target dn.
-+ *     source (target) dn.
-  *   LDAP_CONSTRAINT_VIOLATION - an entry was found that already
-  *     contains the attribute value.
-  *   LDAP_OPERATIONS_ERROR - a server failure.
-  */
- static int
--searchAllSubtrees(Slapi_DN **subtrees, Slapi_DN **exclude_subtrees, const char **attrNames, Slapi_Attr *attr, struct berval **values, const char *requiredObjectClass, Slapi_DN *dn, PRBool unique_in_all_subtrees)
-+searchAllSubtrees(Slapi_DN **subtrees, Slapi_DN **exclude_subtrees, const char **attrNames, Slapi_Attr *attr, struct berval **values, const char *requiredObjectClass, Slapi_DN *destinationSDN, Slapi_DN *sourceSDN, PRBool unique_in_all_subtrees)
- {
-     int result = LDAP_SUCCESS;
-     int i;
-@@ -788,12 +788,12 @@ searchAllSubtrees(Slapi_DN **subtrees, Slapi_DN **exclude_subtrees, const char *
-            * are unique in all the monitored subtrees
-            */
- 
--        /* First check the target entry is in one of
-+        /* First check the destination entry is in one of
-            * the monitored subtree, so adding 'values' would
-            * violate constraint
-            */
-         for (i = 0; subtrees && subtrees[i]; i++) {
--            if (slapi_sdn_issuffix(dn, subtrees[i])) {
-+            if (slapi_sdn_issuffix(destinationSDN, subtrees[i])) {
-                 in_a_subtree = PR_TRUE;
-                 break;
-             }
-@@ -808,7 +808,7 @@ searchAllSubtrees(Slapi_DN **subtrees, Slapi_DN **exclude_subtrees, const char *
-     if (exclude_subtrees != NULL) {
-         PRBool in_a_subtree = PR_FALSE;
-         for (i = 0; exclude_subtrees && exclude_subtrees[i]; i++) {
--            if (slapi_sdn_issuffix(dn, exclude_subtrees[i])) {
-+            if (slapi_sdn_issuffix(destinationSDN, exclude_subtrees[i])) {
-                 in_a_subtree = PR_TRUE;
-                 break;
-             }
-@@ -820,7 +820,7 @@ searchAllSubtrees(Slapi_DN **subtrees, Slapi_DN **exclude_subtrees, const char *
- 
-     /*
-    * For each DN in the managed list, do uniqueness checking if
--   * the target DN is a subnode in the tree.
-+   * the destination (target) DN is a subnode in the tree.
-    */
-     for (i = 0; subtrees && subtrees[i]; i++) {
-         Slapi_DN *sufdn = subtrees[i];
-@@ -828,8 +828,8 @@ searchAllSubtrees(Slapi_DN **subtrees, Slapi_DN **exclude_subtrees, const char *
-      * The DN should already be normalized, so we don't have to
-      * worry about that here.
-      */
--        if (unique_in_all_subtrees || slapi_sdn_issuffix(dn, sufdn)) {
--            result = search(sufdn, attrNames, attr, values, requiredObjectClass, dn, exclude_subtrees);
-+        if (unique_in_all_subtrees || slapi_sdn_issuffix(destinationSDN, sufdn)) {
-+            result = search(sufdn, attrNames, attr, values, requiredObjectClass, sourceSDN, exclude_subtrees);
-             if (result)
-                 break;
-         }
-@@ -903,20 +903,20 @@ getArguments(Slapi_PBlock *pb, char **attrName, char **markerObjectClass, char *
-  *
-  * Return:
-  *   LDAP_SUCCESS - no matches, or the attribute matches the
-- *     target dn.
-+ *     source (target) dn.
-  *   LDAP_CONSTRAINT_VIOLATION - an entry was found that already
-  *     contains the attribute value.
-  *   LDAP_OPERATIONS_ERROR - a server failure.
-  */
- static int
--findSubtreeAndSearch(Slapi_DN *parentDN, const char **attrNames, Slapi_Attr *attr, struct berval **values, const char *requiredObjectClass, Slapi_DN *target, const char *markerObjectClass, Slapi_DN **excludes)
-+findSubtreeAndSearch(Slapi_DN *destinationSDN, const char **attrNames, Slapi_Attr *attr, struct berval **values, const char *requiredObjectClass, Slapi_DN *sourceSDN, const char *markerObjectClass, Slapi_DN **excludes)
- {
-     int result = LDAP_SUCCESS;
-     Slapi_PBlock *spb = NULL;
-     Slapi_DN *curpar = slapi_sdn_new();
-     Slapi_DN *newpar = NULL;
- 
--    slapi_sdn_get_parent(parentDN, curpar);
-+    slapi_sdn_get_parent(destinationSDN, curpar);
-     while (slapi_sdn_get_dn(curpar) != NULL) {
-         if ((spb = dnHasObjectClass(curpar, markerObjectClass))) {
-             freePblock(spb);
-@@ -925,7 +925,7 @@ findSubtreeAndSearch(Slapi_DN *parentDN, const char **attrNames, Slapi_Attr *att
-            * to have the attribute already.
-            */
-             result = search(curpar, attrNames, attr, values, requiredObjectClass,
--                            target, excludes);
-+                            sourceSDN, excludes);
-             break;
-         }
-         newpar = slapi_sdn_new();
-@@ -964,7 +964,7 @@ preop_add(Slapi_PBlock *pb)
-     int err;
-     char *markerObjectClass = NULL;
-     char *requiredObjectClass = NULL;
--    Slapi_DN *sdn = NULL;
-+    Slapi_DN *targetSDN = NULL;
-     int isupdatedn;
-     Slapi_Entry *e;
-     Slapi_Attr *attr;
-@@ -998,16 +998,16 @@ preop_add(Slapi_PBlock *pb)
-     attr_friendly = config->attr_friendly;
- 
-     /*
--     * Get the target DN for this add operation
-+     * Get the target SDN for this add operation
-      */
--    err = slapi_pblock_get(pb, SLAPI_ADD_TARGET_SDN, &sdn);
-+    err = slapi_pblock_get(pb, SLAPI_ADD_TARGET_SDN, &targetSDN);
-     if (err) {
-         result = uid_op_error(51);
-         break;
-     }
- 
- #ifdef DEBUG
--    slapi_log_err(SLAPI_LOG_PLUGIN, plugin_name, "preop_add - ADD target=%s\n", slapi_sdn_get_dn(sdn));
-+    slapi_log_err(SLAPI_LOG_PLUGIN, plugin_name, "preop_add - ADD target=%s\n", slapi_sdn_get_dn(targetSDN));
- #endif
- 
-     /*
-@@ -1040,13 +1040,13 @@ preop_add(Slapi_PBlock *pb)
-                  */
-             if (NULL != markerObjectClass) {
-                 /* Subtree defined by location of marker object class */
--                result = findSubtreeAndSearch(sdn, attrNames, attr, NULL,
--                                              requiredObjectClass, sdn,
-+                result = findSubtreeAndSearch(targetSDN, attrNames, attr, NULL,
-+                                              requiredObjectClass, targetSDN,
-                                               markerObjectClass, config->exclude_subtrees);
-             } else {
-                 /* Subtrees listed on invocation line */
-                 result = searchAllSubtrees(config->subtrees, config->exclude_subtrees, attrNames, attr, NULL,
--                                           requiredObjectClass, sdn, config->unique_in_all_subtrees);
-+                                           requiredObjectClass, targetSDN, targetSDN, config->unique_in_all_subtrees);
-             }
-             if (result != LDAP_SUCCESS) {
-                 break;
-@@ -1120,7 +1120,7 @@ preop_modify(Slapi_PBlock *pb)
-     int modcount = 0;
-     int ii;
-     LDAPMod *mod;
--    Slapi_DN *sdn = NULL;
-+    Slapi_DN *targetSDN = NULL;
-     int isupdatedn;
-     int i = 0;
- 
-@@ -1186,8 +1186,8 @@ preop_modify(Slapi_PBlock *pb)
-         break; /* no mods to check, we are done */
-     }
- 
--    /* Get the target DN */
--    err = slapi_pblock_get(pb, SLAPI_MODIFY_TARGET_SDN, &sdn);
-+    /* Get the target SDN */
-+    err = slapi_pblock_get(pb, SLAPI_MODIFY_TARGET_SDN, &targetSDN);
-     if (err) {
-         result = uid_op_error(11);
-         break;
-@@ -1197,7 +1197,7 @@ preop_modify(Slapi_PBlock *pb)
-      * Check if it has the required object class
-      */
-     if (requiredObjectClass &&
--        !(spb = dnHasObjectClass(sdn, requiredObjectClass))) {
-+        !(spb = dnHasObjectClass(targetSDN, requiredObjectClass))) {
-         break;
-     }
- 
-@@ -1213,13 +1213,13 @@ preop_modify(Slapi_PBlock *pb)
-         mod = checkmods[ii];
-         if (NULL != markerObjectClass) {
-             /* Subtree defined by location of marker object class */
--            result = findSubtreeAndSearch(sdn, attrNames, NULL,
-+            result = findSubtreeAndSearch(targetSDN, attrNames, NULL,
-                                           mod->mod_bvalues, requiredObjectClass,
--                                          sdn, markerObjectClass, config->exclude_subtrees);
-+                                          targetSDN, markerObjectClass, config->exclude_subtrees);
-         } else {
-             /* Subtrees listed on invocation line */
-             result = searchAllSubtrees(config->subtrees, config->exclude_subtrees, attrNames, NULL,
--                                       mod->mod_bvalues, requiredObjectClass, sdn, config->unique_in_all_subtrees);
-+                                       mod->mod_bvalues, requiredObjectClass, targetSDN, targetSDN, config->unique_in_all_subtrees);
-         }
-     }
-     END
-@@ -1271,8 +1271,8 @@ preop_modrdn(Slapi_PBlock *pb)
-     int err;
-     char *markerObjectClass = NULL;
-     char *requiredObjectClass = NULL;
--    Slapi_DN *sdn = NULL;
--    Slapi_DN *superior;
-+    Slapi_DN *sourceSDN = NULL;
-+    Slapi_DN *destinationSDN;
-     char *rdn;
-     int deloldrdn = 0;
-     int isupdatedn;
-@@ -1311,14 +1311,14 @@ preop_modrdn(Slapi_PBlock *pb)
-     }
- 
-     /* Get the DN of the entry being renamed */
--    err = slapi_pblock_get(pb, SLAPI_MODRDN_TARGET_SDN, &sdn);
-+    err = slapi_pblock_get(pb, SLAPI_MODRDN_TARGET_SDN, &sourceSDN);
-     if (err) {
-         result = uid_op_error(31);
-         break;
-     }
- 
-     /* Get superior value - unimplemented in 3.0/4.0/5.0 DS */
--    err = slapi_pblock_get(pb, SLAPI_MODRDN_NEWSUPERIOR_SDN, &superior);
-+    err = slapi_pblock_get(pb, SLAPI_MODRDN_NEWSUPERIOR_SDN, &destinationSDN);
-     if (err) {
-         result = uid_op_error(32);
-         break;
-@@ -1326,11 +1326,11 @@ preop_modrdn(Slapi_PBlock *pb)
- 
-     /*
-      * No superior means the entry is just renamed at
--     * its current level in the tree.  Use the target DN for
-+     * its current level in the tree.  Use the source SDN for
-      * determining which managed tree this belongs to
-      */
--    if (!superior)
--        superior = sdn;
-+    if (!destinationSDN)
-+        slapi_sdn_get_parent(sourceSDN, destinationSDN);
- 
-     /* Get the new RDN - this has the attribute values */
-     err = slapi_pblock_get(pb, SLAPI_MODRDN_NEWRDN, &rdn);
-@@ -1352,10 +1352,10 @@ preop_modrdn(Slapi_PBlock *pb)
- 
-     /* Get the entry that is being renamed so we can make a dummy copy
-      * of what it will look like after the rename. */
--    err = slapi_search_get_entry(&entry_pb, sdn, NULL, &e, plugin_identity);
-+    err = slapi_search_get_entry(&entry_pb, sourceSDN, NULL, &e, plugin_identity);
-     if (err != LDAP_SUCCESS) {
-         result = uid_op_error(35);
--        /* We want to return a no such object error if the target doesn't exist. */
-+        /* We want to return a no such object error if the source SDN doesn't exist. */
-         if (err == LDAP_NO_SUCH_OBJECT) {
-             result = err;
-         }
-@@ -1364,7 +1364,7 @@ preop_modrdn(Slapi_PBlock *pb)
- 
-     /* Apply the rename operation to the dummy entry. */
-     /* slapi_entry_rename does not expect rdn normalized */
--    err = slapi_entry_rename(e, rdn, deloldrdn, superior);
-+    err = slapi_entry_rename(e, rdn, deloldrdn, destinationSDN);
-     if (err != LDAP_SUCCESS) {
-         result = uid_op_error(36);
-         break;
-@@ -1392,13 +1392,13 @@ preop_modrdn(Slapi_PBlock *pb)
-              */
-             if (NULL != markerObjectClass) {
-                 /* Subtree defined by location of marker object class */
--                result = findSubtreeAndSearch(slapi_entry_get_sdn(e), attrNames, attr, NULL,
--                                              requiredObjectClass, superior,
-+                result = findSubtreeAndSearch(destinationSDN, attrNames, attr, NULL,
-+                                              requiredObjectClass, sourceSDN,
-                                               markerObjectClass, config->exclude_subtrees);
-             } else {
-                 /* Subtrees listed on invocation line */
-                 result = searchAllSubtrees(config->subtrees, config->exclude_subtrees, attrNames, attr, NULL,
--                                           requiredObjectClass, superior, config->unique_in_all_subtrees);
-+                                           requiredObjectClass, destinationSDN, sourceSDN, config->unique_in_all_subtrees);
-             }
-             if (result != LDAP_SUCCESS) {
-                 break;
--- 
-2.31.1
-
diff --git a/SOURCES/0003-Issue-4169-backport-lib389-cert-list-fix.patch b/SOURCES/0003-Issue-4169-backport-lib389-cert-list-fix.patch
deleted file mode 100644
index 1d851a6..0000000
--- a/SOURCES/0003-Issue-4169-backport-lib389-cert-list-fix.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 91b90f583bf4046325438954523c78ea4f33d607 Mon Sep 17 00:00:00 2001
-From: Mark Reynolds <mreynolds@redhat.com>
-Date: Fri, 10 Sep 2021 09:39:57 -0400
-Subject: [PATCH] Issue 4169 - backport lib389 cert list fix
-
-Description:  We didn't call ensure_str() on the output from certutil
-commands
-
-relates:  https://github.com/389ds/389-ds-base/issues/4169
-
-Reviewed by: mreynolds(one line commit rule)
----
- src/lib389/lib389/nss_ssl.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/lib389/lib389/nss_ssl.py b/src/lib389/lib389/nss_ssl.py
-index 1cd2768f1..6dc0c26d3 100644
---- a/src/lib389/lib389/nss_ssl.py
-+++ b/src/lib389/lib389/nss_ssl.py
-@@ -325,7 +325,7 @@ only.
-         ]
-         self.log.debug("nss cmd: %s", format_cmd_list(cmd))
-         try:
--            certdetails = check_output(cmd, stderr=subprocess.STDOUT, encoding='utf-8')
-+            certdetails = ensure_str(check_output(cmd, stderr=subprocess.STDOUT, encoding='utf-8'))
-         except subprocess.CalledProcessError as e:
-             raise ValueError(e.output.decode('utf-8').rstrip())
-         end_date_str = certdetails.split("Not After : ")[1].split("\n")[0]
-@@ -905,7 +905,7 @@ only.
-         except subprocess.CalledProcessError as e:
-             raise ValueError(e.output.decode('utf-8').rstrip())
- 
--        return result
-+        return ensure_str(result)
- 
- 
-     def get_cert_details(self, nickname):
--- 
-2.31.1
-
diff --git a/SOURCES/389-ds-base-revert-db-home-fix.patch b/SOURCES/389-ds-base-revert-db-home-fix.patch
new file mode 100644
index 0000000..c4f41d9
--- /dev/null
+++ b/SOURCES/389-ds-base-revert-db-home-fix.patch
@@ -0,0 +1,49 @@
+From ec74c73eaa56271ce74e985ab6a69b36e98488e4 Mon Sep 17 00:00:00 2001
+From: Simon Pichugin <spichugi@redhat.com>
+Date: Wed, 24 Nov 2021 08:35:17 -0800
+Subject: [PATCH] Revert "Issue 2790 - Set db home directory by default"
+
+This reverts commit 269f1f8e879a6fc098bb8cff780df6915e8ecb38.
+---
+ ldap/admin/src/defaults.inf.in      | 2 +-
+ src/lib389/lib389/instance/setup.py | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/ldap/admin/src/defaults.inf.in b/ldap/admin/src/defaults.inf.in
+index 28f908bcd..96a3b3eb1 100644
+--- a/ldap/admin/src/defaults.inf.in
++++ b/ldap/admin/src/defaults.inf.in
+@@ -59,7 +59,7 @@ access_log = @localstatedir@/log/dirsrv/slapd-{instance_name}/access
+ audit_log = @localstatedir@/log/dirsrv/slapd-{instance_name}/audit
+ error_log = @localstatedir@/log/dirsrv/slapd-{instance_name}/errors
+ db_dir = @localstatedir@/lib/dirsrv/slapd-{instance_name}/db
+-db_home_dir = /dev/shm/slapd-{instance_name}
++db_home_dir = @localstatedir@/lib/dirsrv/slapd-{instance_name}/db
+ backup_dir = @localstatedir@/lib/dirsrv/slapd-{instance_name}/bak
+ ldif_dir = @localstatedir@/lib/dirsrv/slapd-{instance_name}/ldif
+ 
+diff --git a/src/lib389/lib389/instance/setup.py b/src/lib389/lib389/instance/setup.py
+index 0669e5856..4cbdda4fc 100644
+--- a/src/lib389/lib389/instance/setup.py
++++ b/src/lib389/lib389/instance/setup.py
+@@ -775,7 +775,7 @@ class SetupDs(object):
+         self.log.info("Create file system structures ...")
+         # Create all the needed paths
+         # we should only need to make bak_dir, cert_dir, config_dir, db_dir, ldif_dir, lock_dir, log_dir, run_dir?
+-        for path in ('backup_dir', 'cert_dir', 'db_dir', 'db_home_dir', 'ldif_dir', 'lock_dir', 'log_dir', 'run_dir'):
++        for path in ('backup_dir', 'cert_dir', 'db_dir', 'ldif_dir', 'lock_dir', 'log_dir', 'run_dir'):
+             self.log.debug("ACTION: creating %s", slapd[path])
+             try:
+                 os.umask(0o007)  # For parent dirs that get created -> sets 770 for perms
+@@ -912,7 +912,7 @@ class SetupDs(object):
+         if general['selinux']:
+             self.log.info("Perform SELinux labeling ...")
+             selinux_paths = ('backup_dir', 'cert_dir', 'config_dir', 'db_dir',
+-                             'ldif_dir', 'lock_dir', 'log_dir', 'db_home_dir',
++                             'ldif_dir', 'lock_dir', 'log_dir',
+                              'run_dir', 'schema_dir', 'tmp_dir')
+             for path in selinux_paths:
+                 selinux_restorecon(slapd[path])
+-- 
+2.31.1
+
diff --git a/SPECS/389-ds-base.spec b/SPECS/389-ds-base.spec
index 4e55987..1008486 100644
--- a/SPECS/389-ds-base.spec
+++ b/SPECS/389-ds-base.spec
@@ -46,8 +46,8 @@ ExcludeArch: i686
 
 Summary:          389 Directory Server (base)
 Name:             389-ds-base
-Version:          2.0.8
-Release:          6%{?dist}
+Version:          2.0.11
+Release:          3%{?dist}
 License:          GPLv3+ and ASL 2.0 and MPLv2.0 and Boost
 URL:              https://www.port389.org
 Conflicts:        selinux-policy-base < 3.9.8
@@ -58,86 +58,91 @@ Obsoletes:        %{name}-legacy-tools-debuginfo < 1.4.4.6
 Provides:         ldif2ldbm >= 0
 
 ##### Bundled cargo crates list - START #####
-Provides:  bundled(crate(ahash)) = 0.7.2
+Provides:  bundled(crate(ahash)) = 0.7.6
 Provides:  bundled(crate(ansi_term)) = 0.11.0
 Provides:  bundled(crate(atty)) = 0.2.14
 Provides:  bundled(crate(autocfg)) = 1.0.1
 Provides:  bundled(crate(base64)) = 0.13.0
-Provides:  bundled(crate(bitflags)) = 1.2.1
+Provides:  bundled(crate(bitflags)) = 1.3.2
 Provides:  bundled(crate(byteorder)) = 1.4.3
 Provides:  bundled(crate(cbindgen)) = 0.9.1
-Provides:  bundled(crate(cc)) = 1.0.67
+Provides:  bundled(crate(cc)) = 1.0.72
 Provides:  bundled(crate(cfg-if)) = 1.0.0
 Provides:  bundled(crate(clap)) = 2.33.3
-Provides:  bundled(crate(concread)) = 0.2.9
-Provides:  bundled(crate(crossbeam)) = 0.8.0
+Provides:  bundled(crate(concread)) = 0.2.19
+Provides:  bundled(crate(crossbeam)) = 0.8.1
 Provides:  bundled(crate(crossbeam-channel)) = 0.5.1
-Provides:  bundled(crate(crossbeam-deque)) = 0.8.0
-Provides:  bundled(crate(crossbeam-epoch)) = 0.9.3
-Provides:  bundled(crate(crossbeam-queue)) = 0.3.1
-Provides:  bundled(crate(crossbeam-utils)) = 0.8.3
+Provides:  bundled(crate(crossbeam-deque)) = 0.8.1
+Provides:  bundled(crate(crossbeam-epoch)) = 0.9.5
+Provides:  bundled(crate(crossbeam-queue)) = 0.3.2
+Provides:  bundled(crate(crossbeam-utils)) = 0.8.5
 Provides:  bundled(crate(entryuuid)) = 0.1.0
 Provides:  bundled(crate(entryuuid_syntax)) = 0.1.0
 Provides:  bundled(crate(fernet)) = 0.1.4
 Provides:  bundled(crate(foreign-types)) = 0.3.2
 Provides:  bundled(crate(foreign-types-shared)) = 0.1.1
-Provides:  bundled(crate(getrandom)) = 0.2.2
-Provides:  bundled(crate(hermit-abi)) = 0.1.18
-Provides:  bundled(crate(instant)) = 0.1.9
-Provides:  bundled(crate(itoa)) = 0.4.7
-Provides:  bundled(crate(jobserver)) = 0.1.21
+Provides:  bundled(crate(getrandom)) = 0.2.3
+Provides:  bundled(crate(hashbrown)) = 0.11.2
+Provides:  bundled(crate(hermit-abi)) = 0.1.19
+Provides:  bundled(crate(instant)) = 0.1.12
+Provides:  bundled(crate(itoa)) = 0.4.8
+Provides:  bundled(crate(jobserver)) = 0.1.24
 Provides:  bundled(crate(lazy_static)) = 1.4.0
-Provides:  bundled(crate(libc)) = 0.2.93
+Provides:  bundled(crate(libc)) = 0.2.107
 Provides:  bundled(crate(librnsslapd)) = 0.1.0
 Provides:  bundled(crate(librslapd)) = 0.1.0
-Provides:  bundled(crate(lock_api)) = 0.4.3
+Provides:  bundled(crate(lock_api)) = 0.4.5
 Provides:  bundled(crate(log)) = 0.4.14
-Provides:  bundled(crate(memoffset)) = 0.6.3
-Provides:  bundled(crate(once_cell)) = 1.7.2
-Provides:  bundled(crate(openssl)) = 0.10.35
-Provides:  bundled(crate(openssl-sys)) = 0.9.65
-Provides:  bundled(crate(parking_lot)) = 0.11.1
-Provides:  bundled(crate(parking_lot_core)) = 0.8.3
+Provides:  bundled(crate(lru)) = 0.6.6
+Provides:  bundled(crate(memoffset)) = 0.6.4
+Provides:  bundled(crate(once_cell)) = 1.8.0
+Provides:  bundled(crate(openssl)) = 0.10.38
+Provides:  bundled(crate(openssl-sys)) = 0.9.71
+Provides:  bundled(crate(parking_lot)) = 0.11.2
+Provides:  bundled(crate(parking_lot_core)) = 0.8.5
 Provides:  bundled(crate(paste)) = 0.1.18
 Provides:  bundled(crate(paste-impl)) = 0.1.18
-Provides:  bundled(crate(pkg-config)) = 0.3.19
-Provides:  bundled(crate(ppv-lite86)) = 0.2.10
+Provides:  bundled(crate(pin-project-lite)) = 0.2.7
+Provides:  bundled(crate(pkg-config)) = 0.3.22
+Provides:  bundled(crate(ppv-lite86)) = 0.2.15
 Provides:  bundled(crate(proc-macro-hack)) = 0.5.19
-Provides:  bundled(crate(proc-macro2)) = 1.0.26
+Provides:  bundled(crate(proc-macro2)) = 1.0.32
 Provides:  bundled(crate(pwdchan)) = 0.1.0
-Provides:  bundled(crate(quote)) = 1.0.9
-Provides:  bundled(crate(rand)) = 0.8.3
-Provides:  bundled(crate(rand_chacha)) = 0.3.0
-Provides:  bundled(crate(rand_core)) = 0.6.2
-Provides:  bundled(crate(rand_hc)) = 0.3.0
-Provides:  bundled(crate(redox_syscall)) = 0.2.6
+Provides:  bundled(crate(quote)) = 1.0.10
+Provides:  bundled(crate(rand)) = 0.8.4
+Provides:  bundled(crate(rand_chacha)) = 0.3.1
+Provides:  bundled(crate(rand_core)) = 0.6.3
+Provides:  bundled(crate(rand_hc)) = 0.3.1
+Provides:  bundled(crate(redox_syscall)) = 0.2.10
 Provides:  bundled(crate(remove_dir_all)) = 0.5.3
 Provides:  bundled(crate(ryu)) = 1.0.5
 Provides:  bundled(crate(scopeguard)) = 1.1.0
-Provides:  bundled(crate(serde)) = 1.0.125
-Provides:  bundled(crate(serde_derive)) = 1.0.125
-Provides:  bundled(crate(serde_json)) = 1.0.64
+Provides:  bundled(crate(serde)) = 1.0.130
+Provides:  bundled(crate(serde_derive)) = 1.0.130
+Provides:  bundled(crate(serde_json)) = 1.0.71
 Provides:  bundled(crate(slapd)) = 0.1.0
 Provides:  bundled(crate(slapi_r_plugin)) = 0.1.0
-Provides:  bundled(crate(smallvec)) = 1.6.1
+Provides:  bundled(crate(smallvec)) = 1.7.0
 Provides:  bundled(crate(strsim)) = 0.8.0
-Provides:  bundled(crate(syn)) = 1.0.69
-Provides:  bundled(crate(synstructure)) = 0.12.4
+Provides:  bundled(crate(syn)) = 1.0.81
+Provides:  bundled(crate(synstructure)) = 0.12.6
 Provides:  bundled(crate(tempfile)) = 3.2.0
 Provides:  bundled(crate(textwrap)) = 0.11.0
+Provides:  bundled(crate(tokio)) = 1.14.0
+Provides:  bundled(crate(tokio-macros)) = 1.6.0
 Provides:  bundled(crate(toml)) = 0.5.8
-Provides:  bundled(crate(unicode-width)) = 0.1.8
-Provides:  bundled(crate(unicode-xid)) = 0.2.1
+Provides:  bundled(crate(unicode-width)) = 0.1.9
+Provides:  bundled(crate(unicode-xid)) = 0.2.2
 Provides:  bundled(crate(uuid)) = 0.8.2
-Provides:  bundled(crate(vcpkg)) = 0.2.11
+Provides:  bundled(crate(vcpkg)) = 0.2.15
 Provides:  bundled(crate(vec_map)) = 0.8.2
 Provides:  bundled(crate(version_check)) = 0.9.3
 Provides:  bundled(crate(wasi)) = 0.10.2+wasi_snapshot_preview1
 Provides:  bundled(crate(winapi)) = 0.3.9
 Provides:  bundled(crate(winapi-i686-pc-windows-gnu)) = 0.4.0
 Provides:  bundled(crate(winapi-x86_64-pc-windows-gnu)) = 0.4.0
-Provides:  bundled(crate(zeroize)) = 1.2.0
-Provides:  bundled(crate(zeroize_derive)) = 1.0.1
+Provides:  bundled(crate(zeroize)) = 1.4.3
+Provides:  bundled(crate(zeroize_derive)) = 1.2.2
 ##### Bundled cargo crates list - END #####
 
 BuildRequires:    nspr-devel
@@ -256,9 +261,9 @@ Source2:          %{name}-devel.README
 %if %{bundle_jemalloc}
 Source3:          https://github.com/jemalloc/%{jemalloc_name}/releases/download/%{jemalloc_ver}/%{jemalloc_name}-%{jemalloc_ver}.tar.bz2
 %endif
-Patch01:          0001-Issue-4884-server-crashes-when-dnaInterval-attribute.patch
-Patch02:          0002-Issue-4894-IPA-failure-in-ipa-user-del-preserve-4907.patch
-Patch03:          0003-Issue-4169-backport-lib389-cert-list-fix.patch
+
+# The patch should be removed after selinux-policy bz2015928 is fixed
+Patch0: 389-ds-base-revert-db-home-fix.patch
 
 %description
 389 Directory Server is an LDAPv3 compliant server.  The base package includes
@@ -437,8 +442,7 @@ autoreconf -fiv
            --with-systemdgroupname=%{groupname}  \
            --libexecdir=%{_libexecdir}/%{pkgname} \
            $NSSARGS $ASAN_FLAGS $RUST_FLAGS $CLANG_FLAGS $COCKPIT_FLAGS \
-           --enable-cmocka \
-           --enable-perl
+           --enable-cmocka --enable-new-dtags
 
 
 # lib389
@@ -708,6 +712,21 @@ exit 0
 %endif
 
 %changelog
+* Thu Nov 25 2021 Viktor Ashirov <vashirov@redhat.com> - 2.0.11-3
+- Bump version to 2.0.11-3
+- rebuilt
+
+* Thu Nov 25 2021 Thierry Bordaz <tbordaz@redhat.com> - 2.0.11-2
+- Bump version to 2.0.11-2
+- Revert commit "Set db home directory by default"
+
+* Thu Nov 18 2021 Mark Reynolds <mreynolds@redhat.com> - 2.0.11-1
+- Bump version to 2.0.11-1
+- Resolves: Bug 2024693 - Rebase RHEL 9.0 with 389-ds-base
+- Resolves: Bug 2015996 - Log the Auto Member invalid regex rules in the LDAP errors log
+- Resolves: Bug 2020554 - ipa user-add fails with "gecos: value invalid per syntax: Invalid syntax"
+- Resolves: Bug 1779685 - PBKDF2 hashing does not work in FIPS mode
+
 * Fri Sep 17 2021 Mark Reynolds <mreynolds@redhat.com> - 2.0.8-6
 - Bump version to 2.0.8-6
 - Resolves: Bug 2000420 - Not able to preserve users using "ipa user-del --preserve"