diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c794bb6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/udisks-2.9.2.tar.bz2
diff --git a/.udisks2.metadata b/.udisks2.metadata
new file mode 100644
index 0000000..cfa44e3
--- /dev/null
+++ b/.udisks2.metadata
@@ -0,0 +1 @@
+15aaadab7f6ce2ddc4c6ca114019241cd1152f04 SOURCES/udisks-2.9.2.tar.bz2
diff --git a/SOURCES/ignore-apple-boot-part.patch b/SOURCES/ignore-apple-boot-part.patch
new file mode 100644
index 0000000..0c57303
--- /dev/null
+++ b/SOURCES/ignore-apple-boot-part.patch
@@ -0,0 +1,25 @@
+From b9863c11601e199420a375e13505e2b795de77c5 Mon Sep 17 00:00:00 2001
+From: Frederick Grose <4335897+FGrose@users.noreply.github.com>
+Date: Tue, 9 Feb 2021 19:02:01 -0500
+Subject: [PATCH] 80-udisks2.rules: Ignore Apple boot partition from
+ livecd-tools
+
+https://github.com/livecd-tools/livecd-tools/pull/176 creates a new boot
+partition with livecd-iso-to-disk from Fedora Live .iso files that UDISKS
+should ignore.
+---
+ data/80-udisks2.rules | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/data/80-udisks2.rules b/data/80-udisks2.rules
+index fb50f48a0..d6fa072fd 100644
+--- a/data/80-udisks2.rules
++++ b/data/80-udisks2.rules
+@@ -122,6 +122,7 @@ ENV{ID_PART_ENTRY_SCHEME}=="mac", ENV{ID_PART_ENTRY_TYPE}=="Apple_Bootstrap", EN
+ 
+ # Apple Boot partitions
+ ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_TYPE}=="426f6f74-0000-11aa-aa11-00306543ecac", ENV{UDISKS_IGNORE}="1"
++ENV{ID_FS_LABEL}=="ANACONDA", ENV{ID_PART_ENTRY_TYPE}=="48465300-0000-11aa-aa11-00306543ecac|0xaf", ENV{UDISKS_IGNORE}="1"
+ 
+ # special DOS partition types (EFI, hidden, etc.) and RAID/LVM
+ # see http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
diff --git a/SOURCES/udisks-2.10.0-Ignore-Extended-Boot-Loader-GPT-partition.patch b/SOURCES/udisks-2.10.0-Ignore-Extended-Boot-Loader-GPT-partition.patch
new file mode 100644
index 0000000..1f98913
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-Ignore-Extended-Boot-Loader-GPT-partition.patch
@@ -0,0 +1,29 @@
+From 79eed9aa35fbf1c5131b44b50b407742f68e2f61 Mon Sep 17 00:00:00 2001
+From: Florian Ziegler <florian.ziegler@posteo.de>
+Date: Sat, 17 Apr 2021 13:31:31 +0200
+Subject: [PATCH 8/8] Ignore "Extended Boot Loader" GPT partition
+
+---
+ data/80-udisks2.rules | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/data/80-udisks2.rules b/data/80-udisks2.rules
+index fb50f48a..39bfa28b 100644
+--- a/data/80-udisks2.rules
++++ b/data/80-udisks2.rules
+@@ -135,6 +135,12 @@ ENV{ID_PART_ENTRY_SCHEME}=="gpt", \
+   ENV{ID_PART_ENTRY_TYPE}=="c12a7328-f81f-11d2-ba4b-00a0c93ec93b|21686148-6449-6e6f-744e-656564454649|a19d880f-05fc-4d3b-a006-743f0f84911e|e6d6d379-f507-44c2-a23c-238f2a3df928|e3c9e316-0b5c-4db8-817d-f92df00215ae|de94bba4-06d1-4d40-a16a-bfd50179d6ac", \
+   ENV{UDISKS_IGNORE}="1"
+ 
++# special Extended Boot Loader partition (XBOOTLDR)
++# see https://systemd.io/BOOT_LOADER_SPECIFICATION/
++ENV{ID_PART_ENTRY_SCHEME}=="gpt", \
++  ENV{ID_PART_ENTRY_TYPE}=="bc13c2ff-59e6-4262-a352-b275fd6f7172", \
++  ENV{UDISKS_IGNORE}="1"
++
+ # ZFS member partitions
+ ENV{ID_PART_ENTRY_SCHEME}=="gpt", \
+   ENV{ID_FS_TYPE}=="zfs_member", ENV{ID_PART_ENTRY_TYPE}=="6a898cc3-1dd2-11b2-99a6-080020736631", \
+-- 
+2.30.2
+
diff --git a/SOURCES/udisks-2.10.0-ata_conf_apply_GTask.patch b/SOURCES/udisks-2.10.0-ata_conf_apply_GTask.patch
new file mode 100644
index 0000000..077fada
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-ata_conf_apply_GTask.patch
@@ -0,0 +1,60 @@
+commit 6ff556afabd490feb6c4b29f9e91e81d64e2c0ed
+Author: Tomas Bzatek <tbzatek@redhat.com>
+Date:   Tue Mar 23 12:56:40 2021 +0100
+
+    udiskslinuxdriveata: Use GTask to apply configuration in a thread
+    
+    Should fix a leaking GThread without a need to join or track it anyhow.
+
+diff --git a/src/udiskslinuxdriveata.c b/src/udiskslinuxdriveata.c
+index 5ebdcd76..2de138cd 100644
+--- a/src/udiskslinuxdriveata.c
++++ b/src/udiskslinuxdriveata.c
+@@ -1625,10 +1625,13 @@ apply_conf_data_free (ApplyConfData *data)
+   g_free (data);
+ }
+ 
+-static gpointer
+-apply_configuration_thread_func (gpointer user_data)
++static void
++apply_configuration_thread_func (GTask        *task,
++                                 gpointer      source_object,
++                                 gpointer      task_data,
++                                 GCancellable *cancellable)
+ {
+-  ApplyConfData *data = user_data;
++  ApplyConfData *data = task_data;
+   UDisksDaemon *daemon;
+   const gchar *device_file = NULL;
+   gint fd = -1;
+@@ -1799,8 +1802,6 @@ apply_configuration_thread_func (gpointer user_data)
+  out:
+   if (fd != -1)
+     close (fd);
+-  apply_conf_data_free (data);
+-  return NULL;
+ }
+ 
+ /**
+@@ -1819,6 +1820,7 @@ udisks_linux_drive_ata_apply_configuration (UDisksLinuxDriveAta *drive,
+ {
+   gboolean has_conf = FALSE;
+   ApplyConfData *data = NULL;
++  GTask *task;
+ 
+   data = g_new0 (ApplyConfData, 1);
+   data->ata_pm_standby = -1;
+@@ -1862,9 +1864,10 @@ udisks_linux_drive_ata_apply_configuration (UDisksLinuxDriveAta *drive,
+   /* this can easily take a long time and thus block (the drive may be in standby mode
+    * and needs to spin up) - so run it in a thread
+    */
+-  g_thread_new ("apply-conf-thread",
+-                apply_configuration_thread_func,
+-                data);
++  task = g_task_new (data->object, NULL, NULL, NULL);
++  g_task_set_task_data (task, data, (GDestroyNotify) apply_conf_data_free);
++  g_task_run_in_thread (task, apply_configuration_thread_func);
++  g_object_unref (task);
+ 
+   data = NULL; /* don't free data below */
+ 
diff --git a/SOURCES/udisks-2.10.0-dosfstools_4.2-reread_part.patch b/SOURCES/udisks-2.10.0-dosfstools_4.2-reread_part.patch
new file mode 100644
index 0000000..414c830
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-dosfstools_4.2-reread_part.patch
@@ -0,0 +1,24 @@
+commit d58ebcc32b583371dd73ab7f4c7be5191674ca62
+Author: Tomas Bzatek <tbzatek@redhat.com>
+Date:   Wed Mar 17 18:52:22 2021 +0100
+
+    udiskslinuxblock: Re-read partition table after creating FAT filesystem
+    
+    Might not be needed after reverting mkfs.vfat behaviour back
+    to the legacy way, added just as a precautionary measure.
+
+diff --git a/src/udiskslinuxblock.c b/src/udiskslinuxblock.c
+index 901426ad..69161b61 100644
+--- a/src/udiskslinuxblock.c
++++ b/src/udiskslinuxblock.c
+@@ -2913,7 +2913,9 @@ static inline gboolean
+ need_partprobe_after_mkfs (const gchar *fs_type)
+ {
+   /* udftools makes fake MBR since the 2.0 release */
+-  return (g_strcmp0 (fs_type, "udf") == 0);
++  /* dosfstools makes fake MBR since the 4.2 release */
++  return (g_strcmp0 (fs_type, "udf") == 0 ||
++          g_strcmp0 (fs_type, "vfat") == 0);
+ }
+ 
+ void
diff --git a/SOURCES/udisks-2.10.0-dosfstools_4.2.patch b/SOURCES/udisks-2.10.0-dosfstools_4.2.patch
new file mode 100644
index 0000000..2764315
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-dosfstools_4.2.patch
@@ -0,0 +1,75 @@
+commit ef1979d8cbfb8ad976de0af21a70f8c0f98fbbe9
+Author: Tomas Bzatek <tbzatek@redhat.com>
+Date:   Wed Mar 17 18:50:19 2021 +0100
+
+    udiskslinuxfsinfo: Add dosfstools >= 4.2 quirks
+    
+    Reverting back the legacy behaviour with no protective (fake) MBR
+    created while making new FAT filesystem on an unpartitioned block device.
+    
+    Added a label clear functionality as well.
+
+diff --git a/src/udiskslinuxfsinfo.c b/src/udiskslinuxfsinfo.c
+index 15af26c8..f18b9b80 100644
+--- a/src/udiskslinuxfsinfo.c
++++ b/src/udiskslinuxfsinfo.c
+@@ -21,6 +21,8 @@
+ #include <string.h>
+ #include <glib.h>
+ 
++#include <blockdev/exec.h>
++
+ #include "config.h"
+ #include "udiskslinuxfsinfo.h"
+ #include "udisksconfigmanager.h"
+@@ -236,6 +238,19 @@ const FSInfo _fs_info[] =
+     },
+   };
+ 
++/* workaround for dosfstools >= 4.2 */
++static const FSInfo vfat_dosfstools_42 =
++    {
++      FS_VFAT,
++      "fatlabel $DEVICE $LABEL",
++      "fatlabel --reset $DEVICE",
++      FALSE, /* supports_online_label_rename */
++      FALSE, /* supports_owners */
++      "mkfs.vfat -I -n $LABEL --mbr=n $DEVICE",
++      NULL,
++      NULL, /* option_no_discard */
++    };
++
+ /**
+  * get_fs_info:
+  *
+@@ -248,6 +263,7 @@ const FSInfo _fs_info[] =
+ const FSInfo *
+ get_fs_info (const gchar *fstype)
+ {
++  const FSInfo *info = NULL;
+   guint n;
+ 
+   g_return_val_if_fail (fstype != NULL, NULL);
+@@ -255,10 +271,20 @@ get_fs_info (const gchar *fstype)
+   for (n = 0; n < sizeof(_fs_info)/sizeof(FSInfo); n++)
+     {
+       if (strcmp (_fs_info[n].fstype, fstype) == 0)
+-        return &_fs_info[n];
++        {
++          info = &_fs_info[n];
++          break;
++        }
++    }
++
++  /* dosfstools >= 4.2 workaround */
++  if (g_str_equal (fstype, FS_VFAT) &&
++      bd_utils_check_util_version ("mkfs.vfat", "4.2", "--help", "mkfs.fat\\s+([\\d\\.]+).+", NULL))
++    {
++      info = &vfat_dosfstools_42;
+     }
+ 
+-  return NULL;
++  return info;
+ }
+ 
+ /**
diff --git a/SOURCES/udisks-2.10.0-g_mkdtemp-leak.patch b/SOURCES/udisks-2.10.0-g_mkdtemp-leak.patch
new file mode 100644
index 0000000..58d58cd
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-g_mkdtemp-leak.patch
@@ -0,0 +1,32 @@
+From fcdec5d58ba2bbe6d7ecf7168ab1a11282763041 Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <tbzatek@redhat.com>
+Date: Fri, 16 Apr 2021 18:15:03 +0200
+Subject: [PATCH 5/8] udiskslinuxfilesystemhelpers: Fix leaking string in case
+ g_mkdtemp() fails
+
+---
+ src/udiskslinuxfilesystemhelpers.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/udiskslinuxfilesystemhelpers.c b/src/udiskslinuxfilesystemhelpers.c
+index 74d83152..7c5fc037 100644
+--- a/src/udiskslinuxfilesystemhelpers.c
++++ b/src/udiskslinuxfilesystemhelpers.c
+@@ -142,11 +142,11 @@ take_filesystem_ownership (const gchar  *device,
+       else
+         {
+           /* device is not mounted, we need to mount it */
+-          mountpoint = g_mkdtemp (g_strdup ("/run/udisks2/temp-mount-XXXXXX"));
+-          if (mountpoint == NULL)
++          mountpoint = g_strdup ("/run/udisks2/temp-mount-XXXXXX");
++          if (g_mkdtemp (mountpoint) == NULL)
+             {
+               g_set_error (error, UDISKS_ERROR, UDISKS_ERROR_FAILED,
+-                           "Cannot create temporary mountpoint.");
++                           "Cannot create temporary mountpoint: %m.");
+               success = FALSE;
+               goto out;
+             }
+-- 
+2.30.2
+
diff --git a/SOURCES/udisks-2.10.0-mdraid-g_source_attach.patch b/SOURCES/udisks-2.10.0-mdraid-g_source_attach.patch
new file mode 100644
index 0000000..9fb9911
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-mdraid-g_source_attach.patch
@@ -0,0 +1,44 @@
+From cd458666a93fe9d07f3718e88f3169f01a11a63e Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <tbzatek@redhat.com>
+Date: Fri, 16 Apr 2021 18:36:16 +0200
+Subject: [PATCH 7/8] udiskslinuxmdraidobject: Handle source attach failure
+ gracefully
+
+Only negligible theoretical chance to hit this, reported by Coverity.
+---
+ src/udiskslinuxmdraidobject.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/src/udiskslinuxmdraidobject.c b/src/udiskslinuxmdraidobject.c
+index 20ca89c5..828c7058 100644
+--- a/src/udiskslinuxmdraidobject.c
++++ b/src/udiskslinuxmdraidobject.c
+@@ -468,7 +468,8 @@ watch_attr (UDisksLinuxDevice *device,
+   GError *error = NULL;
+   gchar *path = NULL;
+   GIOChannel *channel = NULL;
+-  GSource *ret = NULL;;
++  GSource *ret = NULL;
++  guint source_id;
+ 
+   g_return_val_if_fail (UDISKS_IS_LINUX_DEVICE (device), NULL);
+ 
+@@ -478,9 +479,14 @@ watch_attr (UDisksLinuxDevice *device,
+     {
+       ret = g_io_create_watch (channel, G_IO_ERR);
+       g_source_set_callback (ret, callback, user_data, NULL);
+-      g_source_attach (ret, g_main_context_get_thread_default ());
++      source_id = g_source_attach (ret, g_main_context_get_thread_default ());
+       g_source_unref (ret);
+       g_io_channel_unref (channel); /* the keeps a reference to this object */
++      if (source_id == 0)
++        {
++          /* something bad happened while attaching the source */
++          ret = NULL;
++        }
+     }
+   else
+     {
+-- 
+2.30.2
+
diff --git a/SOURCES/udisks-2.10.0-mdraid-iochannel-data.patch b/SOURCES/udisks-2.10.0-mdraid-iochannel-data.patch
new file mode 100644
index 0000000..51daf79
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-mdraid-iochannel-data.patch
@@ -0,0 +1,47 @@
+From 0353b5f2f9c586d872750423259b6ef6cc375625 Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <tbzatek@redhat.com>
+Date: Fri, 16 Apr 2021 18:22:46 +0200
+Subject: [PATCH 6/8] udiskslinuxmdraidobject: Optimize unused data out from
+ the g_io_channel_read_to_end() call
+
+Looking into glib sources the g_io_channel_read_to_end() function
+can handle NULL output pointers just fine and since the data is thrown
+right away it's pointless to have them assigned.
+---
+ src/udiskslinuxmdraidobject.c | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/src/udiskslinuxmdraidobject.c b/src/udiskslinuxmdraidobject.c
+index 759ff5f4..20ca89c5 100644
+--- a/src/udiskslinuxmdraidobject.c
++++ b/src/udiskslinuxmdraidobject.c
+@@ -503,8 +503,6 @@ attr_changed (GIOChannel   *channel,
+   UDisksLinuxMDRaidObject *object = UDISKS_LINUX_MDRAID_OBJECT (user_data);
+   gboolean bail = FALSE;
+   GError *error = NULL;
+-  gchar *str = NULL;
+-  gsize len = 0;
+ 
+   if (cond & ~G_IO_ERR)
+     goto out;
+@@ -518,7 +516,7 @@ attr_changed (GIOChannel   *channel,
+       goto out;
+     }
+ 
+-  if (g_io_channel_read_to_end (channel, &str, &len, &error) != G_IO_STATUS_NORMAL)
++  if (g_io_channel_read_to_end (channel, NULL, NULL, &error) != G_IO_STATUS_NORMAL)
+     {
+       udisks_debug ("Error reading (uuid %s): %s (%s, %d)",
+                     object->uuid, error->message, g_quark_to_string (error->domain), error->code);
+@@ -527,8 +525,6 @@ attr_changed (GIOChannel   *channel,
+       goto out;
+     }
+ 
+-  g_free (str);
+-
+   /* synthesize uevent */
+   if (object->raid_device != NULL)
+     udisks_linux_mdraid_object_uevent (object, "change", object->raid_device, FALSE);
+-- 
+2.30.2
+
diff --git a/SOURCES/udisks-2.10.0-module-names.patch b/SOURCES/udisks-2.10.0-module-names.patch
new file mode 100644
index 0000000..a1a6619
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-module-names.patch
@@ -0,0 +1,136 @@
+commit e062c17e3829f3c04c25b5f6fc17ccc4491befa8
+Author: Tomas Bzatek <tbzatek@redhat.com>
+Date:   Tue Mar 23 16:48:08 2021 +0100
+
+    modules: Limit module name to alphanumeric characters and -_ separators
+    
+    A hardening feature as long as the module name is directly involved
+    in filename creation.
+
+diff --git a/doc/udisks2-sections.txt.daemon.sections.in b/doc/udisks2-sections.txt.daemon.sections.in
+index 16eaf74e..204ca897 100644
+--- a/doc/udisks2-sections.txt.daemon.sections.in
++++ b/doc/udisks2-sections.txt.daemon.sections.in
+@@ -312,6 +312,7 @@ udisks_daemon_util_get_free_mdraid_device
+ udisks_ata_identify_get_word
+ udisks_daemon_util_trigger_uevent
+ udisks_daemon_util_trigger_uevent_sync
++udisks_module_validate_name
+ </SECTION>
+ 
+ <SECTION>
+diff --git a/src/udisksconfigmanager.c b/src/udisksconfigmanager.c
+index 9558e276..5868e864 100644
+--- a/src/udisksconfigmanager.c
++++ b/src/udisksconfigmanager.c
+@@ -26,6 +26,7 @@
+ #include "udiskslogging.h"
+ #include "udisksdaemontypes.h"
+ #include "udisksconfigmanager.h"
++#include "udisksdaemonutil.h"
+ 
+ struct _UDisksConfigManager {
+   GObject parent_instance;
+@@ -60,6 +61,8 @@ enum
+ #define DEFAULTS_GROUP_NAME "defaults"
+ #define DEFAULTS_ENCRYPTION_KEY "encryption"
+ 
++#define MODULES_ALL_ARG "*"
++
+ static void
+ udisks_config_manager_get_property (GObject    *object,
+                                     guint       property_id,
+@@ -170,7 +173,16 @@ parse_config_file (UDisksConfigManager         *manager,
+             {
+               modules_tmp = modules;
+               for (module_i = *modules_tmp; module_i; module_i = *++modules_tmp)
+-                *out_modules = g_list_append (*out_modules, g_strdup (g_strstrip (module_i)));
++                {
++                  g_strstrip (module_i);
++                  if (! udisks_module_validate_name (module_i) && !g_str_equal (module_i, MODULES_ALL_ARG))
++                    {
++                      g_warning ("Invalid module name '%s' specified in the %s config file.",
++                                 module_i, conf_filename);
++                      continue;
++                    }
++                  *out_modules = g_list_append (*out_modules, g_strdup (module_i));
++                }
+               g_strfreev (modules);
+             }
+         }
+@@ -397,7 +409,7 @@ udisks_config_manager_get_modules_all (UDisksConfigManager *manager)
+ 
+   parse_config_file (manager, NULL, NULL, &modules);
+ 
+-  ret = !modules || (g_strcmp0 (modules->data, "*") == 0 && g_list_length (modules) == 1);
++  ret = !modules || (g_strcmp0 (modules->data, MODULES_ALL_ARG) == 0 && g_list_length (modules) == 1);
+ 
+   g_list_free_full (modules, (GDestroyNotify) g_free);
+ 
+diff --git a/src/udisksdaemonutil.c b/src/udisksdaemonutil.c
+index 60134765..1695b524 100644
+--- a/src/udisksdaemonutil.c
++++ b/src/udisksdaemonutil.c
+@@ -1880,3 +1880,29 @@ udisks_daemon_util_trigger_uevent_sync (UDisksDaemon *daemon,
+ }
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
++
++/**
++ * udisks_module_validate_name:
++ * @module_name: A udisks2 module name.
++ *
++ * Checks the string for a valid udisks2 module name. Only alphanumeric characters
++ * along with the '-' and '_' separators are permitted.
++ *
++ * Returns: %TRUE if the string is a valid udisks2 module name, %FALSE otherwise.
++ */
++gboolean
++udisks_module_validate_name (const gchar *module_name)
++{
++  int i;
++
++  for (i = 0; module_name[i] != '\0'; i++)
++    /* going ASCII, will disqualify any UTF-* string */
++    if (! g_ascii_isalnum (module_name[i]) &&
++        module_name[i] != '-' &&
++        module_name[i] != '_')
++      return FALSE;
++
++  return TRUE;
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
+diff --git a/src/udisksdaemonutil.h b/src/udisksdaemonutil.h
+index 2d7ac981..df584de4 100644
+--- a/src/udisksdaemonutil.h
++++ b/src/udisksdaemonutil.h
+@@ -129,6 +129,8 @@ gchar *udisks_daemon_util_get_free_mdraid_device (void);
+ 
+ guint16 udisks_ata_identify_get_word (const guchar *identify_data, guint word_number);
+ 
++gboolean udisks_module_validate_name (const gchar *module_name);
++
+ /* Utility macro for policy verification. */
+ #define UDISKS_DAEMON_CHECK_AUTHORIZATION(daemon,                   \
+                                           object,                   \
+diff --git a/src/udiskslinuxmanager.c b/src/udiskslinuxmanager.c
+index 8af65d97..26d8a5d7 100644
+--- a/src/udiskslinuxmanager.c
++++ b/src/udiskslinuxmanager.c
+@@ -956,6 +956,15 @@ handle_enable_module (UDisksManager         *object,
+   UDisksLinuxManager *manager = UDISKS_LINUX_MANAGER (object);
+   EnableModulesData *data;
+ 
++  if (! udisks_module_validate_name (arg_name))
++    {
++      g_dbus_method_invocation_return_error (invocation,
++                                             G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
++                                             "Requested module name '%s' is not a valid udisks2 module name.",
++                                             arg_name);
++      return TRUE;
++    }
++
+   if (! arg_enable)
+     {
+       /* TODO: implement proper module unloading */
diff --git a/SOURCES/udisks-2.10.0-tests-drive_ata-apm.patch b/SOURCES/udisks-2.10.0-tests-drive_ata-apm.patch
new file mode 100644
index 0000000..32c11ad
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-tests-drive_ata-apm.patch
@@ -0,0 +1,64 @@
+From c21ad308b1313a35cafa1664e5eb4772925bc005 Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <tbzatek@redhat.com>
+Date: Thu, 22 Apr 2021 18:05:29 +0200
+Subject: [PATCH 1/2] tests: Mark Drive.ATA tests as unstable
+
+Some of the tests operate on physical ATA drives, comparing values between
+smartctl output and udisks. Different libraries used, different approach
+to retrieve some ATA features and values. Turned out this is not working
+correctly on some SATA disks with each approach giving slightly different
+results, presumably for the quirks in place.
+---
+ src/tests/dbus-tests/test_drive_ata.py | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/tests/dbus-tests/test_drive_ata.py b/src/tests/dbus-tests/test_drive_ata.py
+index 3187367e..e91bd02f 100644
+--- a/src/tests/dbus-tests/test_drive_ata.py
++++ b/src/tests/dbus-tests/test_drive_ata.py
+@@ -4,7 +4,7 @@ import re
+ import unittest
+ import time
+ 
+-from udiskstestcase import UdisksTestCase
++import udiskstestcase
+ 
+ SMART_CMDLINE_FAIL      = 1 << 0
+ SMART_OPEN_READ_FAIL    = 1 << 1
+@@ -32,7 +32,7 @@ def _get_sata_disks():
+ 
+ 
+ for disk in _get_sata_disks():
+-    ret, out = UdisksTestCase.run_command("smartctl -a /dev/%s" % disk)
++    ret, out = udiskstestcase.UdisksTestCase.run_command("smartctl -a /dev/%s" % disk)
+ 
+     # Only the following bits in the exit status mean the device failed to
+     # provide valid SMART data, others may be set for different reasons (see
+@@ -46,7 +46,7 @@ for disk in _get_sata_disks():
+     else:
+         smart_unsupported.add(disk)
+ 
+-class UdisksDriveAtaTest(UdisksTestCase):
++class UdisksDriveAtaTest(udiskstestcase.UdisksTestCase):
+     '''Noninvasive tests for the Drive.Ata interface'''
+ 
+     def get_smart_setting(self, disk, attr, out_prefix):
+@@ -102,6 +102,7 @@ class UdisksDriveAtaTest(UdisksTestCase):
+             intro_data = drive_intro.Introspect()
+             self.assertNotIn('interface name="org.freedesktop.UDisks2.Drive.Ata"', intro_data)
+ 
++    @udiskstestcase.tag_test(udiskstestcase.TestTags.UNSTABLE)
+     @unittest.skipUnless(smart_supported, "No disks supporting S.M.A.R.T. available")
+     def test_properties(self):
+         for disk in smart_supported:
+@@ -148,6 +149,7 @@ class UdisksDriveAtaTest(UdisksTestCase):
+                 # ninth field is the raw value
+                 self.assertEqual(int(pwon_s.value / 3600), int(pwon_attr[8]))
+ 
++    @udiskstestcase.tag_test(udiskstestcase.TestTags.UNSTABLE)
+     @unittest.skipUnless(smart_supported, "No disks supporting S.M.A.R.T. available")
+     def test_smart_get_attributes(self):
+         for disk in smart_supported:
+-- 
+2.30.2
+
diff --git a/SOURCES/udisks-2.10.0-tests-no-dev_disk-by-path.patch b/SOURCES/udisks-2.10.0-tests-no-dev_disk-by-path.patch
new file mode 100644
index 0000000..044a8aa
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-tests-no-dev_disk-by-path.patch
@@ -0,0 +1,43 @@
+From 1358d1e5208d71d5a70f17a242eda00f079a9d0b Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <tbzatek@redhat.com>
+Date: Thu, 22 Apr 2021 18:20:48 +0200
+Subject: [PATCH 2/2] tests: Handle missing /dev/disk/by-path gracefully
+
+Limited testing environments may not have this path always available.
+---
+ src/tests/dbus-tests/test_drive_ata.py | 19 +++++++++++--------
+ 1 file changed, 11 insertions(+), 8 deletions(-)
+
+diff --git a/src/tests/dbus-tests/test_drive_ata.py b/src/tests/dbus-tests/test_drive_ata.py
+index e91bd02f..37740c60 100644
+--- a/src/tests/dbus-tests/test_drive_ata.py
++++ b/src/tests/dbus-tests/test_drive_ata.py
+@@ -20,14 +20,17 @@ DISK_PATH = "/dev/disk/by-path/"
+ 
+ def _get_sata_disks():
+     sata_disks = []
+-    by_path = os.listdir(DISK_PATH)
+-    for dev in by_path:
+-        if "ata" in dev and "part" not in dev:
+-            path = os.path.realpath(os.path.join(DISK_PATH, dev))
+-            name = os.path.basename(path)
+-            if name.startswith("sd"):
+-                # ignore devices like CD drives etc.
+-                sata_disks.append(name)
++    try:
++        by_path = os.listdir(DISK_PATH)
++        for dev in by_path:
++            if "ata" in dev and "part" not in dev:
++                path = os.path.realpath(os.path.join(DISK_PATH, dev))
++                name = os.path.basename(path)
++                if name.startswith("sd"):
++                    # ignore devices like CD drives etc.
++                    sata_disks.append(name)
++    except:
++        pass
+     return sata_disks
+ 
+ 
+-- 
+2.30.2
+
diff --git a/SPECS/udisks2.spec b/SPECS/udisks2.spec
new file mode 100644
index 0000000..3780351
--- /dev/null
+++ b/SPECS/udisks2.spec
@@ -0,0 +1,651 @@
+%global glib2_version                   2.50
+%global gobject_introspection_version   1.30.0
+%global polkit_version                  0.102
+%global systemd_version                 208
+%global libatasmart_version             0.17
+%global dbus_version                    1.4.0
+%global with_gtk_doc                    1
+%global libblockdev_version             2.25
+
+%define with_bcache                     1
+%define with_btrfs                      1
+%define with_lsm                        1
+%define with_zram                       1
+%define with_lvmcache                   1
+
+# valid options are 'luks1' or 'luks2'
+%define default_luks_encryption         luks1
+
+%define is_fedora                       0%{?rhel} == 0
+%define is_git                          %(git show > /dev/null 2>&1 && echo 1 || echo 0)
+%define git_hash                        %(git log -1 --pretty=format:"%h" || true)
+%define build_date                      %(date '+%Y%m%d')
+
+
+# bcache and zram are not available on RHEL
+%if (0%{?rhel})
+%define with_bcache 0
+%define with_zram 0
+%endif
+
+# btrfs is not available on RHEL > 7
+%if 0%{?rhel} > 7
+%define with_btrfs 0
+%endif
+
+# feature parity with existing RHEL 7 packages
+%if (0%{?rhel}) && (0%{?rhel} <= 7)
+%define with_lsm 0
+%define with_lvmcache 0
+%endif
+
+# default to LUKS2 for RHEL > 7
+%if 0%{?rhel} > 7
+%define default_luks_encryption luks2
+%endif
+
+
+Name:    udisks2
+Summary: Disk Manager
+Version: 2.9.2
+Release: 6%{?dist}
+License: GPLv2+
+URL:     https://github.com/storaged-project/udisks
+Source0: https://github.com/storaged-project/udisks/releases/download/udisks-%{version}/udisks-%{version}.tar.bz2
+Patch0:  udisks-2.10.0-dosfstools_4.2.patch
+Patch1:  udisks-2.10.0-dosfstools_4.2-reread_part.patch
+Patch2:  udisks-2.10.0-module-names.patch
+Patch3:  udisks-2.10.0-ata_conf_apply_GTask.patch
+# https://github.com/storaged-project/udisks/pull/847
+Patch4:  ignore-apple-boot-part.patch
+Patch5:  udisks-2.10.0-g_mkdtemp-leak.patch
+Patch6:  udisks-2.10.0-mdraid-iochannel-data.patch
+Patch7:  udisks-2.10.0-mdraid-g_source_attach.patch
+Patch8:  udisks-2.10.0-Ignore-Extended-Boot-Loader-GPT-partition.patch
+Patch9:  udisks-2.10.0-tests-drive_ata-apm.patch
+Patch10: udisks-2.10.0-tests-no-dev_disk-by-path.patch
+
+BuildRequires: make
+BuildRequires: glib2-devel >= %{glib2_version}
+BuildRequires: gobject-introspection-devel >= %{gobject_introspection_version}
+BuildRequires: libgudev1-devel >= %{systemd_version}
+BuildRequires: libatasmart-devel >= %{libatasmart_version}
+BuildRequires: polkit-devel >= %{polkit_version}
+BuildRequires: systemd >= %{systemd_version}
+BuildRequires: systemd-devel >= %{systemd_version}
+BuildRequires: libacl-devel
+BuildRequires: chrpath
+BuildRequires: gtk-doc
+BuildRequires: gettext-devel
+BuildRequires: redhat-rpm-config
+BuildRequires: libblockdev-devel        >= %{libblockdev_version}
+BuildRequires: libblockdev-part-devel   >= %{libblockdev_version}
+BuildRequires: libblockdev-loop-devel   >= %{libblockdev_version}
+BuildRequires: libblockdev-swap-devel   >= %{libblockdev_version}
+BuildRequires: libblockdev-mdraid-devel >= %{libblockdev_version}
+BuildRequires: libblockdev-fs-devel     >= %{libblockdev_version}
+BuildRequires: libblockdev-crypto-devel >= %{libblockdev_version}
+BuildRequires: libmount-devel
+BuildRequires: libuuid-devel
+
+Requires: libblockdev        >= %{libblockdev_version}
+Requires: libblockdev-part   >= %{libblockdev_version}
+Requires: libblockdev-loop   >= %{libblockdev_version}
+Requires: libblockdev-swap   >= %{libblockdev_version}
+Requires: libblockdev-mdraid >= %{libblockdev_version}
+Requires: libblockdev-fs     >= %{libblockdev_version}
+Requires: libblockdev-crypto >= %{libblockdev_version}
+
+# Needed for the systemd-related macros used in this file
+%{?systemd_requires}
+BuildRequires: systemd
+
+# Needed to pull in the system bus daemon
+Requires: dbus >= %{dbus_version}
+# Needed to pull in the udev daemon
+Requires: udev >= %{systemd_version}
+# We need at least this version for bugfixes/features etc.
+Requires: libatasmart >= %{libatasmart_version}
+# For mount, umount, mkswap
+Requires: util-linux
+# For mkfs.ext3, mkfs.ext3, e2label
+Requires: e2fsprogs
+# For mkfs.xfs, xfs_admin
+Requires: xfsprogs
+# For mkfs.vfat
+Requires: dosfstools
+Requires: gdisk
+# For ejecting removable disks
+Requires: eject
+# For utab monitor
+Requires: libmount
+
+%if ! (0%{?rhel} && 0%{?rhel} < 8)
+# Not really needed but doesn't make much sense to use UDisks without polkit
+# (weak deps don't work on older versions of RHEL)
+Recommends: polkit
+%endif
+
+Requires: lib%{name}%{?_isa} = %{version}-%{release}
+
+# For mkntfs (not available on rhel or on ppc/ppc64)
+%if ! 0%{?rhel}
+%ifnarch ppc ppc64
+Requires: ntfsprogs
+%endif
+%endif
+
+# For /proc/self/mountinfo, only available in 2.6.26 or higher
+Conflicts: kernel < 2.6.26
+
+Provides:  storaged = %{version}-%{release}
+Obsoletes: storaged
+
+%description
+The Udisks project provides a daemon, tools and libraries to access and
+manipulate disks, storage devices and technologies.
+
+%package -n lib%{name}
+Summary: Dynamic library to access the udisksd daemon
+License: LGPLv2+
+Provides:  libstoraged = %{version}-%{release}
+Obsoletes: libstoraged
+
+%description -n lib%{name}
+This package contains the dynamic library, which provides
+access to the udisksd daemon.
+
+%package -n %{name}-iscsi
+Summary: Module for iSCSI
+Requires: %{name}%{?_isa} = %{version}-%{release}
+License: LGPLv2+
+Requires: iscsi-initiator-utils
+BuildRequires: iscsi-initiator-utils-devel
+Provides:  storaged-iscsi = %{version}-%{release}
+Obsoletes: storaged-iscsi
+
+%description -n %{name}-iscsi
+This package contains module for iSCSI configuration.
+
+%package -n %{name}-lvm2
+Summary: Module for LVM2
+Requires: %{name}%{?_isa} = %{version}-%{release}
+License: LGPLv2+
+Requires: lvm2
+Requires: libblockdev-lvm >= %{libblockdev_version}
+BuildRequires: lvm2-devel
+BuildRequires: libblockdev-lvm-devel >= %{libblockdev_version}
+Provides:  storaged-lvm2 = %{version}-%{release}
+Obsoletes: storaged-lvm2
+
+%description -n %{name}-lvm2
+This package contains module for LVM2 configuration.
+
+%package -n lib%{name}-devel
+Summary: Development files for lib%{name}
+Requires: lib%{name}%{?_isa} = %{version}-%{release}
+License: LGPLv2+
+Provides:  libstoraged-devel = %{version}-%{release}
+Obsoletes: libstoraged-devel
+
+%description -n lib%{name}-devel
+This package contains the development files for the library lib%{name}, a
+dynamic library, which provides access to the udisksd daemon.
+
+%if 0%{?with_bcache}
+%package -n %{name}-bcache
+Summary: Module for Bcache
+Requires: %{name}%{?_isa} = %{version}-%{release}
+License: LGPLv2+
+Requires: libblockdev-kbd >= %{libblockdev_version}
+BuildRequires: libblockdev-kbd-devel >= %{libblockdev_version}
+Provides:  storaged-bcache = %{version}-%{release}
+Obsoletes: storaged-bcache
+
+%description -n %{name}-bcache
+This package contains module for Bcache configuration.
+%endif
+
+%if 0%{?with_btrfs}
+%package -n %{name}-btrfs
+Summary: Module for BTRFS
+Requires: %{name}%{?_isa} = %{version}-%{release}
+License: LGPLv2+
+Requires: libblockdev-btrfs >= %{libblockdev_version}
+BuildRequires: libblockdev-btrfs-devel >= %{libblockdev_version}
+Provides:  storaged-btrfs = %{version}-%{release}
+Obsoletes: storaged-btrfs
+
+%description -n %{name}-btrfs
+This package contains module for BTRFS configuration.
+%endif
+
+%if 0%{?with_lsm}
+%package -n %{name}-lsm
+Summary: Module for LSM
+Requires: %{name}%{?_isa} = %{version}-%{release}
+License: LGPLv2+
+Requires: libstoragemgmt
+BuildRequires: libstoragemgmt-devel
+BuildRequires: libconfig-devel
+Provides:  storaged-lsm = %{version}-%{release}
+Obsoletes: storaged-lsm
+
+%description -n %{name}-lsm
+This package contains module for LSM configuration.
+%endif
+
+%if 0%{?with_zram}
+%package -n %{name}-zram
+Summary: Module for ZRAM
+Requires: %{name}%{?_isa} = %{version}-%{release}
+License: LGPLv2+
+Requires: libblockdev-kbd >= %{libblockdev_version}
+Requires: libblockdev-swap >= %{libblockdev_version}
+BuildRequires: libblockdev-kbd-devel >= %{libblockdev_version}
+BuildRequires: libblockdev-swap-devel
+Provides:  storaged-zram = %{version}-%{release}
+Obsoletes: storaged-zram
+
+%description -n %{name}-zram
+This package contains module for ZRAM configuration.
+%endif
+
+%prep
+%autosetup -p1 -n udisks-%{version}
+sed -i udisks/udisks2.conf.in -e "s/encryption=luks1/encryption=%{default_luks_encryption}/"
+rm -f src/tests/dbus-tests/config_h.py
+
+%build
+autoreconf -ivf
+# modules need to be explicitly enabled
+%configure            \
+%if %{with_gtk_doc}
+    --enable-gtk-doc  \
+%else
+    --disable-gtk-doc \
+%endif
+%if 0%{?with_bcache}
+    --enable-bcache   \
+%endif
+%if 0%{?with_btrfs}
+    --enable-btrfs    \
+%endif
+    --disable-vdo      \
+%if 0%{?with_zram}
+    --enable-zram     \
+%endif
+%if 0%{?with_lsm}
+    --enable-lsm      \
+%endif
+%if 0%{?with_lvmcache}
+    --enable-lvmcache \
+%endif
+    --enable-lvm2     \
+    --enable-iscsi
+make %{?_smp_mflags}
+
+%install
+make install DESTDIR=%{buildroot}
+%if %{with_gtk_doc} == 0
+rm -fr %{buildroot}/%{_datadir}/gtk-doc/html/udisks2
+%endif
+
+find %{buildroot} -name \*.la -o -name \*.a | xargs rm
+
+chrpath --delete %{buildroot}/%{_sbindir}/umount.udisks2
+chrpath --delete %{buildroot}/%{_bindir}/udisksctl
+chrpath --delete %{buildroot}/%{_libexecdir}/udisks2/udisksd
+
+%find_lang udisks2
+
+%post -n %{name}
+%systemd_post udisks2.service
+# skip retriggering if udevd isn't even accessible, e.g. containers or
+# rpm-ostree-based systems
+if [ -S /run/udev/control ]; then
+    udevadm control --reload
+    udevadm trigger
+fi
+
+%preun -n %{name}
+%systemd_preun udisks2.service
+
+%postun -n %{name}
+%systemd_postun_with_restart udisks2.service
+
+%ldconfig_scriptlets -n lib%{name}
+
+%if 0%{?with_zram}
+%post -n %{name}-zram
+%systemd_post udisks2-zram-setup@.service
+if [ -S /run/udev/control ]; then
+    udevadm control --reload
+    udevadm trigger
+fi
+
+%preun -n %{name}-zram
+%systemd_preun udisks2-zram-setup@.service
+
+%postun -n %{name}-zram
+%systemd_postun udisks2-zram-setup@.service
+%endif
+
+%files -f udisks2.lang
+%doc README.md AUTHORS NEWS HACKING
+%license COPYING
+
+%dir %{_sysconfdir}/udisks2
+%if %{is_fedora}
+%dir %{_sysconfdir}/udisks2/modules.conf.d
+%endif
+%{_sysconfdir}/udisks2/udisks2.conf
+%{_sysconfdir}/udisks2/mount_options.conf.example
+
+%{_datadir}/dbus-1/system.d/org.freedesktop.UDisks2.conf
+%{_datadir}/bash-completion/completions/udisksctl
+%{_tmpfilesdir}/%{name}.conf
+%{_unitdir}/udisks2.service
+%{_udevrulesdir}/80-udisks2.rules
+%{_sbindir}/umount.udisks2
+
+
+%dir %{_libdir}/udisks2
+%dir %{_libdir}/udisks2/modules
+%dir %{_libexecdir}/udisks2
+%{_libexecdir}/udisks2/udisksd
+
+%{_bindir}/udisksctl
+
+%{_mandir}/man1/udisksctl.1*
+%{_mandir}/man5/udisks2.conf.5*
+%{_mandir}/man8/udisksd.8*
+%{_mandir}/man8/udisks.8*
+%{_mandir}/man8/umount.udisks2.8*
+
+%{_datadir}/polkit-1/actions/org.freedesktop.UDisks2.policy
+%{_datadir}/dbus-1/system-services/org.freedesktop.UDisks2.service
+
+# Permissions for local state data are 0700 to avoid leaking information
+# about e.g. mounts to unprivileged users
+%attr(0700,root,root) %dir %{_localstatedir}/lib/udisks2
+
+%files -n lib%{name}
+%{_libdir}/libudisks2.so.*
+%{_libdir}/girepository-1.0/UDisks-2.0.typelib
+
+%files -n %{name}-lvm2
+%{_libdir}/udisks2/modules/libudisks2_lvm2.so
+%{_datadir}/polkit-1/actions/org.freedesktop.UDisks2.lvm2.policy
+
+%files -n %{name}-iscsi
+%{_libdir}/udisks2/modules/libudisks2_iscsi.so
+%{_datadir}/polkit-1/actions/org.freedesktop.UDisks2.iscsi.policy
+
+%files -n lib%{name}-devel
+%{_libdir}/libudisks2.so
+%dir %{_includedir}/udisks2
+%dir %{_includedir}/udisks2/udisks
+%{_includedir}/udisks2/udisks/*.h
+%{_datadir}/gir-1.0/UDisks-2.0.gir
+%if %{with_gtk_doc}
+%dir %{_datadir}/gtk-doc/html/udisks2
+%{_datadir}/gtk-doc/html/udisks2/*
+%endif
+%{_libdir}/pkgconfig/udisks2.pc
+%{_libdir}/pkgconfig/udisks2-lvm2.pc
+%{_libdir}/pkgconfig/udisks2-iscsi.pc
+%if 0%{?with_bcache}
+%{_libdir}/pkgconfig/udisks2-bcache.pc
+%endif
+%if 0%{?with_btrfs}
+%{_libdir}/pkgconfig/udisks2-btrfs.pc
+%endif
+%if 0%{?with_lsm}
+%{_libdir}/pkgconfig/udisks2-lsm.pc
+%endif
+%if 0%{?with_zram}
+%{_libdir}/pkgconfig/udisks2-zram.pc
+%endif
+
+%if 0%{?with_bcache}
+%files -n %{name}-bcache
+%{_libdir}/udisks2/modules/libudisks2_bcache.so
+%{_datadir}/polkit-1/actions/org.freedesktop.UDisks2.bcache.policy
+%endif
+
+%if 0%{?with_btrfs}
+%files -n %{name}-btrfs
+%{_libdir}/udisks2/modules/libudisks2_btrfs.so
+%{_datadir}/polkit-1/actions/org.freedesktop.UDisks2.btrfs.policy
+%endif
+
+%if 0%{?with_lsm}
+%files -n %{name}-lsm
+%dir %{_sysconfdir}/udisks2/modules.conf.d
+%{_libdir}/udisks2/modules/libudisks2_lsm.so
+%{_mandir}/man5/udisks2_lsm.conf.*
+%{_datadir}/polkit-1/actions/org.freedesktop.UDisks2.lsm.policy
+%attr(0600,root,root) %{_sysconfdir}/udisks2/modules.conf.d/udisks2_lsm.conf
+%endif
+
+%if 0%{?with_zram}
+%files -n %{name}-zram
+%dir %{_sysconfdir}/udisks2/modules.conf.d
+%{_libdir}/udisks2/modules/libudisks2_zram.so
+%{_datadir}/polkit-1/actions/org.freedesktop.UDisks2.zram.policy
+%{_unitdir}/udisks2-zram-setup@.service
+%{_udevrulesdir}/90-udisks2-zram.rules
+%endif
+
+%changelog
+* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 2.9.2-6
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Thu Apr 22 2021 Tomas Bzatek <tbzatek@redhat.com> - 2.9.2-5
+- Fix Drive.ATA test failures
+
+* Tue Apr 20 2021 Tomas Bzatek <tbzatek@redhat.com> - 2.9.2-4
+- Fix a couple of issues found by Coverity (#1938890)
+- Ignore systemd "Extended Boot Loader" GPT partition
+
+* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 2.9.2-3
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Fri Mar 26 2021 Tomas Bzatek <tbzatek@redhat.com> - 2.9.2-2
+- Fix FAT mkfs with dosfstools >= 4.2
+- udiskslinuxdriveata: Use GTask to apply configuration in a thread
+- Limit allowed module names
+- 80-udisks2.rules: Ignore Apple boot partition from livecd-tools
+
+* Thu Feb 04 2021 Tomas Bzatek <tbzatek@redhat.com> - 2.9.2-1
+- Version 2.9.2
+
+* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Mon Sep 07 2020 Neal Gompa <ngompa13@gmail.com> - 2.9.1-2
+- Fix conditional around polkit Recommends for building on EL7
+
+* Wed Aug 12 2020 Tomas Bzatek <tbzatek@redhat.com> - 2.9.1-1
+- Version 2.9.1
+- Renamed zram-setup@.service to udisks2-zram-setup@.service
+
+* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue May 26 2020 Tomas Bzatek <tbzatek@redhat.com> - 2.9.0-1
+- Version 2.9.0
+
+* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.4-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Tue Oct 01 2019 Jonathan Lebon <jonathan@jlebon.com> - 2.8.4-3
+- Don't trigger udev if socket is not accessible
+
+* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Mon Jul 22 2019 Tomas Bzatek <tbzatek@redhat.com> - 2.8.4-1
+- Version 2.8.4
+
+* Thu Jun 13 2019 Tomas Bzatek <tbzatek@redhat.com> - 2.8.3-1
+- Version 2.8.3
+
+* Fri Mar 15 2019 Debarshi Ray <rishi@fedoraproject.org> - 2.8.2-2
+- Update for tmpfiles.d snippet
+
+* Mon Mar 04 2019 Tomas Bzatek <tbzatek@redhat.com> - 2.8.2-1
+- Version 2.8.2
+
+* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Wed Sep 26 2018 Vojtech Trefny <vtrefny@redhat.com> - 2.8.1-1
+- Version 2.8.1
+
+* Fri Sep 14 2018 Adam Williamson <awilliam@redhat.com> - 2.8.0-2
+- Backport PR #576 to fix udev multipath device check (see RHBZ#1628192)
+
+* Mon Aug 13 2018 Tomas Bzatek <tbzatek@redhat.com> - 2.8.0-1
+- Version 2.8.0
+
+* Tue Jul 24 2018 Adam Williamson <awilliam@redhat.com> - 2.7.7-3
+- Rebuild for new libconfig
+
+* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.7-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Wed Jul 04 2018 Vojtech Trefny <vtrefny@redhat.com> - 2.7.7-1
+- Version 2.7.7
+
+* Thu Feb 08 2018 Vojtech Trefny <vtrefny@redhat.com> - 2.7.6-1
+- Version 2.7.6
+
+* Fri Feb 02 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.7.5-2
+- Switch to %%ldconfig_scriptlets
+
+* Mon Dec 04 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.7.5-1
+- Version 2.7.5
+
+* Wed Nov 01 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.7.4-1
+- Version 2.7.4
+
+* Thu Aug 31 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.7.3-1
+- Version 2.7.3
+
+* Thu Aug 03 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.7.2-1
+- Version 2.7.2
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Mon Jul 03 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.7.1-1
+- Version 2.7.1
+
+* Tue Jun 20 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.7.0-3
+- Do not try to remove changed_blacklist hash table in finalize
+
+* Mon Jun 19 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.7.0-2
+- Fix how UDisksClient filters property changes
+
+* Fri Jun 02 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.7.0-1
+- Version 2.7.0
+
+* Mon May 15 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.6.5-1
+- Version 2.6.5
+
+* Tue Mar 14 2017 Vojtech Trefny <vtrefny@redhat.com> - 2.6.4-1
+- Version 2.6.4
+
+* Mon Nov 14 2016 Tomas Smetana <tsmetana@redhat.com> - 2.6.3-1
+- Version 2.6.3
+
+* Thu Jun 16 2016 Tomas Smetana <tsmetana@redhat.com> - 2.6.2-1
+- Version 2.6.2; aimed to replace udisks2
+
+* Wed Apr 27 2016 Peter Hatina <phatina@redhat.com> - 2.6.0-3
+- Add support for libblockdev-part plugin which replaces
+  parted calls
+
+* Wed Mar 16 2016 Peter Hatina <phatina@redhat.com> - 2.6.0-2
+- Fix permissions set for storaged_lsm.conf so it is readable only by root
+
+* Mon Mar 14 2016 Peter Hatina <phatina@redhat.com> - 2.6.0-1
+- Upgrade to 2.6.0
+
+* Wed Feb 10 2016 Peter Hatina <phatina@redhat.com> - 2.5.0-3
+- Package template zram-setup@.service file
+
+* Wed Feb 10 2016 Peter Hatina <phatina@redhat.com> - 2.5.0-2
+- Add udisksd configuration file and its man page
+
+* Thu Jan 28 2016 Peter Hatina <phatina@redhat.com> - 2.5.0-1
+- UDisks2 drop-in replacement
+
+* Thu Jan 21 2016 Peter Hatina <phatina@redhat.com> - 2.4.0-3
+- Redesign subpackage dependencies
+- Make GTK documentation generation configurable
+
+* Wed Jan 20 2016 Peter Hatina <phatina@redhat.com> - 2.4.0-2
+- Reload udev rules and trigger events when installed
+
+* Wed Jan 13 2016 Peter Hatina <phatina@redhat.com> - 2.4.0-1
+- Upgrade to 2.4.0
+
+* Wed Sep 30 2015 Peter Hatina <phatina@redhat.com> - 2.3.0-2
+- Add Fedora/RHEL package configuration options
+
+* Mon Sep 14 2015 Peter Hatina <phatina@redhat.com> - 2.3.0-1
+- Change BuildRequires from pkgconfig macro to -devel packages
+- Upgrade to 2.3.0
+
+* Mon Aug 24 2015 Peter Hatina <phatina@redhat.com> - 2.2.0-1
+- Upgrade to 2.2.0
+
+* Fri Jul  3 2015 Peter Hatina <phatina@redhat.com> - 2.1.1-1
+- Upgrade to 2.1.1
+
+* Wed Jun 24 2015 Peter Hatina <phatina@redhat.com> - 2.1.0-4
+- Add Requires for storaged modules
+
+* Wed Jun 24 2015 Peter Hatina <phatina@redhat.com> - 2.1.0-3
+- Changes for EPEL-7
+  - Lower systemd required version to 208
+  - Rewrite BuildRequires for systemd-devel
+
+* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Thu Jun 11 2015 Peter Hatina <phatina@redhat.com> - 2.1.0-1
+- Update to upstream 2.1.0
+
+* Thu Apr 02 2015 Peter Hatina <phatina@redhat.com> - 2.0.0-1
+- Rebase to the new Storaged implementation
+- Upstream: https://storaged.org
+
+* Tue Sep 16 2014 Stef Walter <stefw@redhat.com> - 0.3.1-1
+- Update to upstream 0.3.1
+
+* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Tue Apr 08 2014 Patrick Uiterwijk <puiterwijk@redhat.com> - 0.3.0-1
+- Update to upstream 0.3.0
+
+* Fri Jan 31 2014 Patrick Uiterwijk <puiterwijk@redhat.com> - 0.2.0-1
+- Update to upstream 0.2.0
+
+* Thu Jan 16 2014 Patrick Uiterwijk <puiterwijk@redhat.com> - 0.1.0-2
+- Removed double systemd BuildRequire
+- Rewritten summary and description
+
+* Sun Jan 12 2014 Patrick Uiterwijk <puiterwijk@redhat.com> - 0.1.0-1
+- Rename from udisks2-lvm