diff --git a/SOURCES/udisks-2.10.0-udiskslinuxencrypted_GError.patch b/SOURCES/udisks-2.10.0-udiskslinuxencrypted_GError.patch
new file mode 100644
index 0000000..572a187
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-udiskslinuxencrypted_GError.patch
@@ -0,0 +1,30 @@
+From 486778c778a4ddb24395408c6b267e702e19ae02 Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <tbzatek@redhat.com>
+Date: Sat, 1 Jan 2022 22:01:49 +0100
+Subject: [PATCH] udiskslinuxencrypted: Fix GError ownership
+
+---
+ src/udiskslinuxencrypted.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/udiskslinuxencrypted.c b/src/udiskslinuxencrypted.c
+index c3a0821ac..3bc54e695 100644
+--- a/src/udiskslinuxencrypted.c
++++ b/src/udiskslinuxencrypted.c
+@@ -1040,7 +1040,7 @@ handle_resize (UDisksEncrypted       *encrypted,
+   object = udisks_daemon_util_dup_object (encrypted, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
+@@ -1066,7 +1066,6 @@ handle_resize (UDisksEncrypted       *encrypted,
+   if (!udisks_daemon_util_get_caller_uid_sync (daemon, invocation, NULL /* GCancellable */, &caller_uid, &error))
+     {
+       g_dbus_method_invocation_return_gerror (invocation, error);
+-      g_clear_error (&error);
+       goto out;
+     }
+ 
diff --git a/SOURCES/udisks-2.10.0-udiskslinuxfilesystem_GError.patch b/SOURCES/udisks-2.10.0-udiskslinuxfilesystem_GError.patch
new file mode 100644
index 0000000..dae7068
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-udiskslinuxfilesystem_GError.patch
@@ -0,0 +1,49 @@
+From 223256777f6e269b8501d95a64c4c6095a7a8a3e Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <tbzatek@redhat.com>
+Date: Sat, 1 Jan 2022 22:02:17 +0100
+Subject: [PATCH] udiskslinuxfilesystem: Fix GError ownership
+
+---
+ src/udiskslinuxfilesystem.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/udiskslinuxfilesystem.c b/src/udiskslinuxfilesystem.c
+index f7c99757a..a8390a044 100644
+--- a/src/udiskslinuxfilesystem.c
++++ b/src/udiskslinuxfilesystem.c
+@@ -1739,7 +1739,7 @@ handle_resize (UDisksFilesystem      *filesystem,
+   object = udisks_daemon_util_dup_object (filesystem, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
+@@ -1921,7 +1921,7 @@ handle_repair (UDisksFilesystem      *filesystem,
+   object = udisks_daemon_util_dup_object (filesystem, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
+@@ -2089,7 +2089,7 @@ handle_check (UDisksFilesystem      *filesystem,
+   object = udisks_daemon_util_dup_object (filesystem, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
+@@ -2257,7 +2257,7 @@ handle_take_ownership (UDisksFilesystem      *filesystem,
+   object = udisks_daemon_util_dup_object (filesystem, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
diff --git a/SOURCES/udisks-2.10.0-udiskslinuxpartition_GError.patch b/SOURCES/udisks-2.10.0-udiskslinuxpartition_GError.patch
new file mode 100644
index 0000000..d2bdec4
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-udiskslinuxpartition_GError.patch
@@ -0,0 +1,70 @@
+From 7c9933c0f80faaabbed607983fdf77f8c4562df6 Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <tbzatek@redhat.com>
+Date: Sat, 1 Jan 2022 20:11:57 +0100
+Subject: [PATCH] udiskslinuxpartition: Fix GError ownership
+
+---
+ src/udiskslinuxpartition.c | 15 ++++++---------
+ 1 file changed, 6 insertions(+), 9 deletions(-)
+
+diff --git a/src/udiskslinuxpartition.c b/src/udiskslinuxpartition.c
+index 5461b3903..3d970768d 100644
+--- a/src/udiskslinuxpartition.c
++++ b/src/udiskslinuxpartition.c
+@@ -135,8 +135,7 @@ check_authorization (UDisksPartition       *partition,
+                                                caller_uid,
+                                                &error))
+     {
+-      g_dbus_method_invocation_return_gerror (invocation, error);
+-      g_clear_error (&error);
++      g_dbus_method_invocation_take_error (invocation, error);
+       goto out;
+     }
+ 
+@@ -351,7 +350,7 @@ handle_set_flags (UDisksPartition       *partition,
+   object = udisks_daemon_util_dup_object (partition, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
+@@ -499,7 +498,7 @@ handle_set_name (UDisksPartition       *partition,
+   object = udisks_daemon_util_dup_object (partition, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
+@@ -873,7 +872,7 @@ handle_resize (UDisksPartition       *partition,
+   object = udisks_daemon_util_dup_object (partition, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
+@@ -994,7 +993,7 @@ handle_delete (UDisksPartition       *partition,
+   object = udisks_daemon_util_dup_object (partition, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
+@@ -1012,9 +1011,7 @@ handle_delete (UDisksPartition       *partition,
+       if (!udisks_linux_block_teardown (block, invocation, options, &error))
+         {
+           if (invocation != NULL)
+-            g_dbus_method_invocation_take_error (invocation, error);
+-          else
+-            g_clear_error (&error);
++            g_dbus_method_invocation_return_gerror (invocation, error);
+           goto out;
+         }
+     }
diff --git a/SOURCES/udisks-2.10.0-udiskslinuxpartitiontable_GError.patch b/SOURCES/udisks-2.10.0-udiskslinuxpartitiontable_GError.patch
new file mode 100644
index 0000000..d97851e
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-udiskslinuxpartitiontable_GError.patch
@@ -0,0 +1,73 @@
+From f486a9fa22c2f9785a4a8fc58eb3be7b0cf934ce Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <tbzatek@redhat.com>
+Date: Sat, 1 Jan 2022 19:59:27 +0100
+Subject: [PATCH] udiskslinuxpartitiontable: Fix GError ownership
+
+---
+ src/udiskslinuxpartitiontable.c | 11 ++++-------
+ 1 file changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/src/udiskslinuxpartitiontable.c b/src/udiskslinuxpartitiontable.c
+index b4c301095..14a54c9c7 100644
+--- a/src/udiskslinuxpartitiontable.c
++++ b/src/udiskslinuxpartitiontable.c
+@@ -277,7 +277,7 @@ udisks_linux_partition_table_handle_create_partition (UDisksPartitionTable   *ta
+   object = udisks_daemon_util_dup_object (table, &error);
+   if (object == NULL)
+     {
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       goto out;
+     }
+ 
+@@ -293,7 +293,6 @@ udisks_linux_partition_table_handle_create_partition (UDisksPartitionTable   *ta
+       goto out;
+     }
+ 
+-  error = NULL;
+   if (!udisks_daemon_util_get_caller_uid_sync (daemon,
+                                                invocation,
+                                                NULL /* GCancellable */,
+@@ -301,7 +300,6 @@ udisks_linux_partition_table_handle_create_partition (UDisksPartitionTable   *ta
+                                                &error))
+     {
+       g_dbus_method_invocation_return_gerror (invocation, error);
+-      g_clear_error (&error);
+       goto out;
+     }
+ 
+@@ -464,7 +462,7 @@ udisks_linux_partition_table_handle_create_partition (UDisksPartitionTable   *ta
+       if (!bd_part_set_part_name (device_name, part_spec->path, name, &error))
+         {
+           g_prefix_error (&error, "Error setting name for newly created partition: ");
+-          g_dbus_method_invocation_take_error (invocation, error);
++          g_dbus_method_invocation_return_gerror (invocation, error);
+           udisks_simple_job_complete (UDISKS_SIMPLE_JOB (job), FALSE, error->message);
+           goto out;
+         }
+@@ -483,7 +481,7 @@ udisks_linux_partition_table_handle_create_partition (UDisksPartitionTable   *ta
+       if (!ret)
+         {
+           g_prefix_error (&error, "Error setting type for newly created partition: ");
+-          g_dbus_method_invocation_take_error (invocation, error);
++          g_dbus_method_invocation_return_gerror (invocation, error);
+           udisks_simple_job_complete (UDISKS_SIMPLE_JOB (job), FALSE, error->message);
+           goto out;
+         }
+@@ -520,7 +518,6 @@ udisks_linux_partition_table_handle_create_partition (UDisksPartitionTable   *ta
+   /* sit and wait for the partition to show up */
+   g_warn_if_fail (wait_data->pos_to_wait_for > 0);
+   wait_data->partition_table_object = object;
+-  error = NULL;
+   partition_object = udisks_daemon_wait_for_object_sync (daemon,
+                                                          wait_for_partition,
+                                                          wait_data,
+@@ -530,7 +527,7 @@ udisks_linux_partition_table_handle_create_partition (UDisksPartitionTable   *ta
+   if (partition_object == NULL)
+     {
+       g_prefix_error (&error, "Error waiting for partition to appear: ");
+-      g_dbus_method_invocation_take_error (invocation, error);
++      g_dbus_method_invocation_return_gerror (invocation, error);
+       udisks_simple_job_complete (UDISKS_SIMPLE_JOB (job), FALSE, error->message);
+       goto out;
+     }
diff --git a/SOURCES/udisks-2.10.0-vdo_test_writeAmplificationRatio.patch b/SOURCES/udisks-2.10.0-vdo_test_writeAmplificationRatio.patch
new file mode 100644
index 0000000..e232e77
--- /dev/null
+++ b/SOURCES/udisks-2.10.0-vdo_test_writeAmplificationRatio.patch
@@ -0,0 +1,25 @@
+From 0edd6f5579c964323d86897aff9476c20d7901ba Mon Sep 17 00:00:00 2001
+From: Vojtech Trefny <vtrefny@redhat.com>
+Date: Mon, 22 Nov 2021 14:23:08 +0100
+Subject: [PATCH] tests: Do not check that writeAmplificationRatio is bigger
+ than 0
+
+Apparently the bios_in_write value is now 0 for newly created VDO
+pools and because we use it for the writeAmplificationRatio
+calculation we get zero too.
+---
+ src/tests/dbus-tests/test_20_LVM.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/tests/dbus-tests/test_20_LVM.py b/src/tests/dbus-tests/test_20_LVM.py
+index 7fbff0434..fde7c3f3f 100644
+--- a/src/tests/dbus-tests/test_20_LVM.py
++++ b/src/tests/dbus-tests/test_20_LVM.py
+@@ -508,7 +508,6 @@ def test_create(self):
+         # get statistics and do some simple sanity check
+         stats = lv.GetStatistics(self.no_options, dbus_interface=self.iface_prefix + '.VDOVolume')
+         self.assertIn("writeAmplificationRatio", stats.keys())
+-        self.assertGreater(float(stats["writeAmplificationRatio"]), 0)
+ 
+     def test_enable_disable_compression_deduplication(self):
+         vgname = 'udisks_test_vdo_vg'
diff --git a/SPECS/udisks2.spec b/SPECS/udisks2.spec
index e26adf2..acae95f 100644
--- a/SPECS/udisks2.spec
+++ b/SPECS/udisks2.spec
@@ -56,7 +56,7 @@
 Name:    udisks2
 Summary: Disk Manager
 Version: 2.9.0
-Release: 8%{?dist}
+Release: 9%{?dist}
 License: GPLv2+
 Group:   System Environment/Libraries
 URL:     https://github.com/storaged-project/udisks
@@ -78,6 +78,14 @@ Patch17: udisks-2.9.4-ext-mount-options.patch
 Patch20: udisks-2.10.0-tests-drive_ata-apm.patch
 Patch21: udisks-2.10.0-tests-no-dev_disk-by-path.patch
 Patch22: tests-disable-zram.patch
+# https://bugzilla.redhat.com/show_bug.cgi?id=2023880
+# https://bugzilla.redhat.com/show_bug.cgi?id=2025483
+Patch23: udisks-2.10.0-vdo_test_writeAmplificationRatio.patch
+# https://bugzilla.redhat.com/show_bug.cgi?id=1999149
+Patch24: udisks-2.10.0-udiskslinuxencrypted_GError.patch
+Patch25: udisks-2.10.0-udiskslinuxpartition_GError.patch
+Patch26: udisks-2.10.0-udiskslinuxpartitiontable_GError.patch
+Patch27: udisks-2.10.0-udiskslinuxfilesystem_GError.patch
 
 BuildRequires: glib2-devel >= %{glib2_version}
 BuildRequires: gobject-introspection-devel >= %{gobject_introspection_version}
@@ -296,6 +304,11 @@ This package contains module for VDO management.
 %patch20 -p1
 %patch21 -p1
 %patch22 -p1
+%patch23 -p1
+%patch24 -p1
+%patch25 -p1
+%patch26 -p1
+%patch27 -p1
 sed -i udisks/udisks2.conf.in -e "s/encryption=luks1/encryption=%{default_luks_encryption}/"
 
 %build
@@ -488,6 +501,10 @@ fi
 %endif
 
 %changelog
+* Tue Feb 01 2022 Tomas Bzatek <tbzatek@redhat.com> - 2.9.0-9
+- Fix LVM-VDO statistics tests (#2023880,#2025483)
+- Fix GError ownership (#1999149)
+
 * Mon Oct 25 2021 Tomas Bzatek <tbzatek@redhat.com> - 2.9.0-8
 - CVE-2021-3802: Harden the default mount options for ext filesystems (#2004422)