diff --git a/.gitignore b/.gitignore index 038ce06..799ff8a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/udisks-2.9.0.tar.bz2 +udisks-2.10.90.tar.bz2 diff --git a/.udisks2.metadata b/.udisks2.metadata deleted file mode 100644 index 0758963..0000000 --- a/.udisks2.metadata +++ /dev/null @@ -1 +0,0 @@ -1565118b5a2d05b1b9b9c71ad3f0043ae0ee6897 SOURCES/udisks-2.9.0.tar.bz2 diff --git a/SOURCES/tests-disable-zram.patch b/SOURCES/tests-disable-zram.patch deleted file mode 100644 index 3439866..0000000 --- a/SOURCES/tests-disable-zram.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up udisks-2.9.0/src/tests/dbus-tests/test_10_basic.py.bak udisks-2.9.0/src/tests/dbus-tests/test_10_basic.py ---- udisks-2.9.0/src/tests/dbus-tests/test_10_basic.py.bak 2020-05-26 14:59:20.000000000 +0200 -+++ udisks-2.9.0/src/tests/dbus-tests/test_10_basic.py 2021-04-23 15:49:07.405824214 +0200 -@@ -26,6 +26,7 @@ class UdisksBaseTest(udiskstestcase.Udis - elif distro in ('enterprise_linux', 'centos') and int(version) > 7: - modules.pop('bcache') - modules.pop('btrfs') -+ modules.pop('zram') - # assuming the kvdo module is typically pulled in as a vdo tool dependency - if not find_executable("vdo"): - modules.pop('vdo') diff --git a/SOURCES/udisks-2.10.0-block_format_ata_secure_erase.patch b/SOURCES/udisks-2.10.0-block_format_ata_secure_erase.patch deleted file mode 100644 index 3ad878d..0000000 --- a/SOURCES/udisks-2.10.0-block_format_ata_secure_erase.patch +++ /dev/null @@ -1,60 +0,0 @@ -From eb917d346bc8592924c5f6566b01841176c53c8c Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Mon, 22 Aug 2022 16:27:11 +0200 -Subject: [PATCH] udiskslinuxblock: Only permit ATA Secure Erase during - Format() on a whole block device - -ATA Secure Erase requested as an option to the Format() method call used -to perform the actual erase on a whole drive object it looked up. When -Format() was called on a partition, this led to data loss on a whole drive. -This commit adds a safeguard to check that the Format() is requested -on a whole block device. - -Severity of this issue was slightly lowered by a failure to submit -the ATA Secure erase command in case some filesystem was mounted -at that point. ---- - src/udiskslinuxblock.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/src/udiskslinuxblock.c b/src/udiskslinuxblock.c -index d1da94edf..db0ed2bf6 100644 ---- a/src/udiskslinuxblock.c -+++ b/src/udiskslinuxblock.c -@@ -2354,6 +2354,7 @@ erase_ata_device (UDisksBlock *block, - { - gboolean ret = FALSE; - UDisksObject *drive_object = NULL; -+ UDisksLinuxBlockObject *block_object = NULL; - UDisksDriveAta *ata = NULL; - - drive_object = udisks_daemon_find_object (daemon, udisks_block_get_drive (block)); -@@ -2369,6 +2370,20 @@ erase_ata_device (UDisksBlock *block, - goto out; - } - -+ /* Reverse check to ensure we're erasing whole block device and not a partition */ -+ block_object = udisks_linux_drive_object_get_block (UDISKS_LINUX_DRIVE_OBJECT (drive_object), FALSE /* get_hw */); -+ if (block_object == NULL) -+ { -+ g_set_error (error, UDISKS_ERROR, UDISKS_ERROR_FAILED, "Couldn't find a block device for the drive to erase"); -+ goto out; -+ } -+ if (g_strcmp0 (g_dbus_object_get_object_path (G_DBUS_OBJECT (object)), -+ g_dbus_object_get_object_path (G_DBUS_OBJECT (block_object))) != 0) -+ { -+ g_set_error (error, UDISKS_ERROR, UDISKS_ERROR_FAILED, "ATA secure erase needs to be performed on a whole block device"); -+ goto out; -+ } -+ - /* sleep a tiny bit here to avoid the secure erase code racing with - * programs spawned by udev - */ -@@ -2382,6 +2397,7 @@ erase_ata_device (UDisksBlock *block, - out: - g_clear_object (&ata); - g_clear_object (&drive_object); -+ g_clear_object (&block_object); - return ret; - } - diff --git a/SOURCES/udisks-2.10.0-iscsi-CHAP-auth-algs.patch b/SOURCES/udisks-2.10.0-iscsi-CHAP-auth-algs.patch deleted file mode 100644 index be7f96c..0000000 --- a/SOURCES/udisks-2.10.0-iscsi-CHAP-auth-algs.patch +++ /dev/null @@ -1,161 +0,0 @@ -From 26fcef727d68af97b1187d2ac3cad19acc3d97c8 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Tue, 16 May 2023 18:33:59 +0200 -Subject: [PATCH 1/2] iscsi: Set node parameters before the Login/Logout action - -This allows to properly pass required arguments like the CHAP -auth algorithms, etc. ---- - modules/iscsi/udisksiscsiutil.c | 54 ++++++++++++++++++--------------- - 1 file changed, 29 insertions(+), 25 deletions(-) - -diff --git a/modules/iscsi/udisksiscsiutil.c b/modules/iscsi/udisksiscsiutil.c -index 78890106f0..b279442876 100644 ---- a/modules/iscsi/udisksiscsiutil.c -+++ b/modules/iscsi/udisksiscsiutil.c -@@ -186,9 +186,10 @@ iscsi_perform_login_action (UDisksLinuxModuleISCSI *module, - } - - static gint --iscsi_node_set_parameters (struct libiscsi_context *ctx, -- struct libiscsi_node *node, -- GVariant *params) -+iscsi_node_set_parameters (struct libiscsi_context *ctx, -+ struct libiscsi_node *node, -+ GVariant *params, -+ gchar **errorstr) - { - GVariantIter iter; - GVariant *value; -@@ -207,9 +208,11 @@ iscsi_node_set_parameters (struct libiscsi_context *ctx, - - /* Update the node parameter value. */ - err = libiscsi_node_set_parameter (ctx, node, key, param_value); -+ if (errorstr && err != 0) -+ *errorstr = g_strdup (libiscsi_get_error_string (ctx)); - - g_variant_unref (value); -- g_free ((gpointer) key); -+ g_free (key); - } - - return 0; -@@ -279,7 +282,7 @@ iscsi_login (UDisksLinuxModuleISCSI *module, - const gchar *password = NULL; - const gchar *reverse_username = NULL; - const gchar *reverse_password = NULL; -- gint err; -+ gint err = 0; - - g_return_val_if_fail (UDISKS_IS_LINUX_MODULE_ISCSI (module), 1); - -@@ -304,17 +307,18 @@ iscsi_login (UDisksLinuxModuleISCSI *module, - /* Get iscsi context. */ - ctx = udisks_linux_module_iscsi_get_libiscsi_context (module); - -- /* Login */ -- err = iscsi_perform_login_action (module, -- ACTION_LOGIN, -- &node, -- &auth_info, -- errorstr); -+ /* Update node parameters. */ -+ if (params) -+ err = iscsi_node_set_parameters (ctx, &node, params_without_chap, errorstr); - -- if (err == 0 && params) -+ /* Login */ -+ if (err == 0) - { -- /* Update node parameters. */ -- err = iscsi_node_set_parameters (ctx, &node, params_without_chap); -+ err = iscsi_perform_login_action (module, -+ ACTION_LOGIN, -+ &node, -+ &auth_info, -+ errorstr); - } - - g_variant_unref (params_without_chap); -@@ -334,7 +338,7 @@ iscsi_logout (UDisksLinuxModuleISCSI *module, - { - struct libiscsi_context *ctx; - struct libiscsi_node node = {0,}; -- gint err; -+ gint err = 0; - - g_return_val_if_fail (UDISKS_IS_LINUX_MODULE_ISCSI (module), 1); - -@@ -344,18 +348,18 @@ iscsi_logout (UDisksLinuxModuleISCSI *module, - /* Get iscsi context. */ - ctx = udisks_linux_module_iscsi_get_libiscsi_context (module); - -- /* Logout */ -- err = iscsi_perform_login_action (module, -- ACTION_LOGOUT, -- &node, -- NULL, -- errorstr); -+ /* Update node parameters. */ -+ if (params) -+ err = iscsi_node_set_parameters (ctx, &node, params, errorstr); - -- if (err == 0 && params) -+ /* Logout */ -+ if (err == 0) - { -- /* Update node parameters. */ -- err = iscsi_node_set_parameters (ctx, &node, params); -- -+ err = iscsi_perform_login_action (module, -+ ACTION_LOGOUT, -+ &node, -+ NULL, -+ errorstr); - } - - return err; - -From 749812784abcc4c0492bda0703bff5d3dae052f9 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Tue, 16 May 2023 18:35:42 +0200 -Subject: [PATCH 2/2] tests: Disallow MD5 for iscsi CHAP login - -MD5 is unavailable in FIPS mode: - - iscsid[82167]: iscsid: Ignoring CHAP algorthm request for MD5 due to crypto lib configuration - iscsid[82167]: iscsid: Couldn't set CHAP algorithm list - kernel: rx_data returned 0, expecting 48. - kernel: iSCSI Login negotiation failed. ---- - src/tests/dbus-tests/test_30_iscsi.py | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/tests/dbus-tests/test_30_iscsi.py b/src/tests/dbus-tests/test_30_iscsi.py -index 09e975f30c..02ba6c92b0 100644 ---- a/src/tests/dbus-tests/test_30_iscsi.py -+++ b/src/tests/dbus-tests/test_30_iscsi.py -@@ -161,6 +161,7 @@ def test_login_chap_auth(self): - self.assertEqual(port, self.port) - - options = dbus.Dictionary(signature='sv') -+ options['node.session.auth.chap_algs'] = 'SHA3-256,SHA256,SHA1' # disallow MD5 - options['username'] = self.initiator - - msg = 'Login failed: initiator reported error \(24 - iSCSI login failed due to authorization failure\)' -@@ -227,6 +228,7 @@ def test_login_mutual_auth(self): - self.assertEqual(port, self.port) - - options = dbus.Dictionary(signature='sv') -+ options['node.session.auth.chap_algs'] = 'SHA3-256,SHA256,SHA1' # disallow MD5 - options['username'] = self.initiator - options['password'] = self.password - options['reverse-username'] = self.mutual_iqn -@@ -335,6 +337,7 @@ def test_login_noauth_badauth(self): - - # first attempt - wrong password - options = dbus.Dictionary(signature='sv') -+ options['node.session.auth.chap_algs'] = 'SHA3-256,SHA256,SHA1' # disallow MD5 - options['username'] = self.initiator - msg = r'Login failed: initiator reported error \((19 - encountered non-retryable iSCSI login failure|24 - iSCSI login failed due to authorization failure)\)' - with six.assertRaisesRegex(self, dbus.exceptions.DBusException, msg): diff --git a/SOURCES/udisks-2.10.0-iscsi-auth-info.patch b/SOURCES/udisks-2.10.0-iscsi-auth-info.patch deleted file mode 100644 index 633386e..0000000 --- a/SOURCES/udisks-2.10.0-iscsi-auth-info.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 9a6e6b700b19539465ab6b241f04b94d4b3769c4 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Mon, 10 Oct 2022 13:55:29 +0200 -Subject: [PATCH] iscsi: Always set auth info - -In case of reusing a context auth info needs to be -always set to override previous data. ---- - modules/iscsi/udisksiscsiutil.c | 7 ++----- - 1 file changed, 2 insertions(+), 5 deletions(-) - -diff --git a/modules/iscsi/udisksiscsiutil.c b/modules/iscsi/udisksiscsiutil.c -index 8fdae889c7..78890106f0 100644 ---- a/modules/iscsi/udisksiscsiutil.c -+++ b/modules/iscsi/udisksiscsiutil.c -@@ -171,11 +171,8 @@ iscsi_perform_login_action (UDisksLinuxModuleISCSI *module, - /* Get a libiscsi context. */ - ctx = udisks_linux_module_iscsi_get_libiscsi_context (module); - -- if (action == ACTION_LOGIN && -- auth_info && auth_info->method == libiscsi_auth_chap) -- { -- libiscsi_node_set_auth (ctx, node, auth_info); -- } -+ if (action == ACTION_LOGIN && auth_info) -+ libiscsi_node_set_auth (ctx, node, auth_info); - - /* Login or Logout */ - err = action == ACTION_LOGIN ? diff --git a/SOURCES/udisks-2.10.0-iscsi-ibft-chap-auth.patch b/SOURCES/udisks-2.10.0-iscsi-ibft-chap-auth.patch deleted file mode 100644 index 2074422..0000000 --- a/SOURCES/udisks-2.10.0-iscsi-ibft-chap-auth.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 0441d0f93788b617a38b75e4a44744406976c822 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Mon, 31 Jul 2023 16:48:28 +0200 -Subject: [PATCH] iscsi: Fix login on firmware-discovered nodes - -There's currently no way to distinguish between force-no-auth and -use-fw-discovered-auth-info scenarios from the D-Bus API so let's -assume that the caller wants to retain the firmware-discovered auth -info unless overriden with specific CHAP credentials. ---- - .../data/org.freedesktop.UDisks2.iscsi.xml | 3 +++ - modules/iscsi/udisksiscsiutil.c | 27 ++++++++++++++++++- - 2 files changed, 29 insertions(+), 1 deletion(-) - -diff --git a/modules/iscsi/data/org.freedesktop.UDisks2.iscsi.xml b/modules/iscsi/data/org.freedesktop.UDisks2.iscsi.xml -index cf262deb68..e8a717ff1d 100644 ---- a/modules/iscsi/data/org.freedesktop.UDisks2.iscsi.xml -+++ b/modules/iscsi/data/org.freedesktop.UDisks2.iscsi.xml -@@ -162,6 +162,9 @@ - reverse-password will be used for CHAP - authentication. - -+ Firmware-discovered nodes retain their authentication info unless -+ overriden with specified credentials (see above). -+ - All the additional options are transformed into the interface - parameters. For example, if an automatic node startup is desired, the - node.startup needs to be set to -diff --git a/modules/iscsi/udisksiscsiutil.c b/modules/iscsi/udisksiscsiutil.c -index b279442876..fb4f5ea167 100644 ---- a/modules/iscsi/udisksiscsiutil.c -+++ b/modules/iscsi/udisksiscsiutil.c -@@ -264,6 +264,31 @@ iscsi_params_pop_chap_data (GVariant *params, - return g_variant_dict_end (&dict); - } - -+static gboolean -+is_auth_required (struct libiscsi_context *ctx, -+ struct libiscsi_node *node, -+ struct libiscsi_auth_info *auth_info) -+{ -+ char val[LIBISCSI_VALUE_MAXLEN + 1] = {'\0',}; -+ int ret; -+ -+ /* TODO: No way to distinguish between the "no auth requested" and -+ * "retain discovered auth info" scenarios from the D-Bus API. -+ */ -+ -+ /* In case CHAP auth is requested, let's use it unconditionally */ -+ if (auth_info->method != libiscsi_auth_none) -+ return TRUE; -+ -+ /* Avoid auth override on firmware-discovered nodes */ -+ ret = libiscsi_node_get_parameter (ctx, node, "node.discovery_type", val); -+ if (ret == 0 && g_strcmp0 (val, "fw") == 0) -+ return FALSE; -+ -+ /* Not a firmware-discovered node, maintain legacy rules */ -+ return TRUE; -+} -+ - gint - iscsi_login (UDisksLinuxModuleISCSI *module, - const gchar *name, -@@ -317,7 +342,7 @@ iscsi_login (UDisksLinuxModuleISCSI *module, - err = iscsi_perform_login_action (module, - ACTION_LOGIN, - &node, -- &auth_info, -+ is_auth_required (ctx, &node, &auth_info) ? &auth_info : NULL, - errorstr); - } - diff --git a/SOURCES/udisks-2.10.0-iscsi_test_01_badauth.patch b/SOURCES/udisks-2.10.0-iscsi_test_01_badauth.patch deleted file mode 100644 index 48a41ff..0000000 --- a/SOURCES/udisks-2.10.0-iscsi_test_01_badauth.patch +++ /dev/null @@ -1,75 +0,0 @@ -commit fab797fcf5e4c8e09e4cde45647951acd764415e -Author: Tomas Bzatek -Date: Mon Oct 10 13:58:15 2022 +0200 - - tests: Add bad auth test for iscsi - - This tests that the auth info is properly set for each login call, - overriding previously set auth info with no trace. - -diff --git a/src/tests/dbus-tests/test_30_iscsi.py b/src/tests/dbus-tests/test_30_iscsi.py -index 34bdfc4b..6ac8386b 100644 ---- a/src/tests/dbus-tests/test_30_iscsi.py -+++ b/src/tests/dbus-tests/test_30_iscsi.py -@@ -284,3 +284,61 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - # make sure the session object is no longer on dbus - objects = udisks.GetManagedObjects(dbus_interface='org.freedesktop.DBus.ObjectManager') - self.assertNotIn(session_path, objects.keys()) -+ -+ def test_login_noauth_badauth(self): -+ """ -+ Test auth info override -+ """ -+ manager = self.get_object('/Manager') -+ nodes, _ = manager.DiscoverSendTargets(self.address, self.port, self.no_options, -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) -+ -+ node = next((node for node in nodes if node[0] == self.noauth_iqn), None) -+ self.assertIsNotNone(node) -+ -+ (iqn, tpg, host, port, iface) = node -+ self.assertEqual(iqn, self.noauth_iqn) -+ self.assertEqual(host, self.address) -+ self.assertEqual(port, self.port) -+ -+ self.addCleanup(self._force_lougout, self.noauth_iqn) -+ -+ # first attempt - wrong password -+ options = dbus.Dictionary(signature='sv') -+ options['username'] = self.initiator -+ msg = 'Login failed: initiator reported error' -+ with six.assertRaisesRegex(self, dbus.exceptions.DBusException, msg): -+ options['password'] = '12345' -+ manager.Login(iqn, tpg, host, port, iface, options, -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) -+ -+ # second atttempt - no password -+ manager.Login(iqn, tpg, host, port, iface, self.no_options, -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) -+ -+ devs = glob.glob('/dev/disk/by-path/*%s*' % iqn) -+ self.assertEqual(len(devs), 1) -+ -+ # check if the block device have 'Symlinks' property updated -+ disk_name = os.path.realpath(devs[0]).split('/')[-1] -+ disk_obj = self.get_object('/block_devices/' + disk_name) -+ dbus_path = str(disk_obj.object_path) -+ self.assertIsNotNone(disk_obj) -+ -+ symlinks = self.get_property_raw(disk_obj, '.Block', 'Symlinks') -+ self.assertIn(self.str_to_ay(devs[0]), symlinks) -+ -+ manager.Logout(iqn, tpg, host, port, iface, self.no_options, -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) -+ -+ devs = glob.glob('/dev/disk/by-path/*%s*' % iqn) -+ self.assertEqual(len(devs), 0) -+ -+ # make sure the disk is no longer on dbus -+ udisks = self.get_object('') -+ objects = udisks.GetManagedObjects(dbus_interface='org.freedesktop.DBus.ObjectManager') -+ self.assertNotIn(dbus_path, objects.keys()) diff --git a/SOURCES/udisks-2.10.0-iscsi_test_02_lio_target_conf.patch b/SOURCES/udisks-2.10.0-iscsi_test_02_lio_target_conf.patch deleted file mode 100644 index cf269a5..0000000 --- a/SOURCES/udisks-2.10.0-iscsi_test_02_lio_target_conf.patch +++ /dev/null @@ -1,51 +0,0 @@ -commit 13a6a27eecdd1fb527b9151309366970b182a58d -Author: Tomas Bzatek -Date: Thu Oct 20 17:17:10 2022 +0200 - - tests: Fix LIO target config auth - - Linux kernel 6.0 brought number of the LIO target changes related to authentication - that made our tests fail. Turned out our target config was incorrect, e.g. - not requiring auth for CHAP tests, etc. The kernel 6.0 looks to be more strict - in this regard. - -diff --git a/src/tests/dbus-tests/targetcli_config.json b/src/tests/dbus-tests/targetcli_config.json -index 25d506b6..3be9eac2 100644 ---- a/src/tests/dbus-tests/targetcli_config.json -+++ b/src/tests/dbus-tests/targetcli_config.json -@@ -385,7 +385,7 @@ - "tpgs": [ - { - "attributes": { -- "authentication": 0, -+ "authentication": 1, - "cache_dynamic_acls": 0, - "default_cmdsn_depth": 64, - "default_erl": 0, -@@ -432,7 +432,7 @@ - } - ], - "parameters": { -- "AuthMethod": "CHAP,None", -+ "AuthMethod": "CHAP", - "DataDigest": "CRC32C,None", - "DataPDUInOrder": "Yes", - "DataSequenceInOrder": "Yes", -@@ -471,7 +471,7 @@ - "tpgs": [ - { - "attributes": { -- "authentication": 0, -+ "authentication": 1, - "cache_dynamic_acls": 0, - "default_cmdsn_depth": 64, - "default_erl": 0, -@@ -520,7 +520,7 @@ - } - ], - "parameters": { -- "AuthMethod": "CHAP,None", -+ "AuthMethod": "CHAP", - "DataDigest": "CRC32C,None", - "DataPDUInOrder": "Yes", - "DataSequenceInOrder": "Yes", diff --git a/SOURCES/udisks-2.10.0-iscsi_test_04_fix_test_login_chap_auth.patch b/SOURCES/udisks-2.10.0-iscsi_test_04_fix_test_login_chap_auth.patch deleted file mode 100644 index bf759fe..0000000 --- a/SOURCES/udisks-2.10.0-iscsi_test_04_fix_test_login_chap_auth.patch +++ /dev/null @@ -1,37 +0,0 @@ -commit 1bf172603e4cc77da70d8fd13b6ba6c8b8c91600 -Author: Tomas Bzatek -Date: Thu Oct 20 17:53:20 2022 +0200 - - tests: Test iscsi noauth in test_login_chap_auth - - The other way is already tested in test_login_noauth_badauth. - -diff --git a/src/tests/dbus-tests/test_30_iscsi.py b/src/tests/dbus-tests/test_30_iscsi.py -index 2b75462a..f2594d99 100644 ---- a/src/tests/dbus-tests/test_30_iscsi.py -+++ b/src/tests/dbus-tests/test_30_iscsi.py -@@ -151,8 +151,14 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - options = dbus.Dictionary(signature='sv') - options['username'] = self.initiator - -+ msg = 'Login failed: initiator reported error \(24 - iSCSI login failed due to authorization failure\)' -+ # missing auth info -+ with six.assertRaisesRegex(self, dbus.exceptions.DBusException, msg): -+ manager.Login(iqn, tpg, host, port, iface, self.no_options, -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) -+ - # wrong password -- msg = 'Login failed: initiator reported error' - with six.assertRaisesRegex(self, dbus.exceptions.DBusException, msg): - options['password'] = '12345' - manager.Login(iqn, tpg, host, port, iface, options, -@@ -318,7 +324,7 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - # first attempt - wrong password - options = dbus.Dictionary(signature='sv') - options['username'] = self.initiator -- msg = 'Login failed: initiator reported error' -+ msg = r'Login failed: initiator reported error \((19 - encountered non-retryable iSCSI login failure|24 - iSCSI login failed due to authorization failure)\)' - with six.assertRaisesRegex(self, dbus.exceptions.DBusException, msg): - options['password'] = '12345' - manager.Login(iqn, tpg, host, port, iface, options, diff --git a/SOURCES/udisks-2.10.0-iscsi_test_05_restart_iscsid.patch b/SOURCES/udisks-2.10.0-iscsi_test_05_restart_iscsid.patch deleted file mode 100644 index eeb5e19..0000000 --- a/SOURCES/udisks-2.10.0-iscsi_test_05_restart_iscsid.patch +++ /dev/null @@ -1,42 +0,0 @@ -From fbe970add68e6d9d998fb7f78377368c403e200d Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Mon, 31 Oct 2022 15:15:31 +0100 -Subject: [PATCH] tests: Restart iscsid on every InitiatorName change - -The test LIO target config expects a specific initiator name as set -by the ACLs. However the iscsid daemon only seems to be reading -the InitiatorName string on startup and in case the service is running -with a different name, the auth tests will fail. - -As a workaround, restart the iscsid service after each change. -A proper way through libiscsi or libopeniscsiusr would be nice -> TODO. ---- - src/tests/dbus-tests/test_30_iscsi.py | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/src/tests/dbus-tests/test_30_iscsi.py b/src/tests/dbus-tests/test_30_iscsi.py -index f2594d992..09e975f30 100644 ---- a/src/tests/dbus-tests/test_30_iscsi.py -+++ b/src/tests/dbus-tests/test_30_iscsi.py -@@ -48,9 +48,21 @@ def _force_lougout(self, target): - def _set_initiator_name(self): - manager = self.get_object('/Manager') - -+ # make backup of INITIATOR_FILE and restore it at the end -+ try: -+ initiatorname_backup = self.read_file(INITIATOR_FILE) -+ self.addCleanup(self.write_file, INITIATOR_FILE, initiatorname_backup) -+ except FileNotFoundError as e: -+ # no existing file, simply remove it once finished -+ self.addCleanup(self.remove_file, INITIATOR_FILE, True) -+ - manager.SetInitiatorName(self.initiator, self.no_options, - dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') - -+ # running iscsid needs to be restarted to reflect the change -+ self.run_command('systemctl try-reload-or-restart iscsid.service') -+ # ignore the return code in case of non-systemd distros -+ - init = manager.GetInitiatorName(self.no_options, - dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') - self.assertEqual(init, self.initiator) diff --git a/SOURCES/udisks-2.10.0-iscsi_timeout.patch b/SOURCES/udisks-2.10.0-iscsi_timeout.patch deleted file mode 100644 index 0e9fe5d..0000000 --- a/SOURCES/udisks-2.10.0-iscsi_timeout.patch +++ /dev/null @@ -1,156 +0,0 @@ -commit 4090b87a1468fcc479aafd264328abfed471daeb -Author: Tomas Bzatek -Date: Thu Jun 3 16:09:10 2021 +0200 - - tests: Extend iscsi method call timeouts - - The default tests 100 sec. D-Bus method call timeout is not enough as - the iscsi initiator timeouts are typically around 120 sec, e.g. for - the Login operation. - -diff --git a/src/tests/dbus-tests/test_30_iscsi.py b/src/tests/dbus-tests/test_30_iscsi.py -index 8ec6858c..34bdfc4b 100644 ---- a/src/tests/dbus-tests/test_30_iscsi.py -+++ b/src/tests/dbus-tests/test_30_iscsi.py -@@ -26,6 +26,12 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - chap_iqn = 'iqn.2003-01.udisks.test:iscsi-test-chap' - mutual_iqn = 'iqn.2003-01.udisks.test:iscsi-test-mutual' - -+ # Define common D-Bus method call timeout that needs to be slightly longer -+ # than the corresponding timeout defined in libiscsi: -+ # #define ISCSID_REQ_TIMEOUT 1000 -+ # In reality the timeout is typically around 120 sec for the 'login' operation. -+ iscsi_timeout = 1000 + 5 -+ - @classmethod - def setUpClass(cls): - udiskstestcase.UdisksTestCase.setUpClass() -@@ -78,7 +84,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - def test_login_noauth(self): - manager = self.get_object('/Manager') - nodes, _ = manager.DiscoverSendTargets(self.address, self.port, self.no_options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - node = next((node for node in nodes if node[0] == self.noauth_iqn), None) - self.assertIsNotNone(node) -@@ -90,7 +97,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - - self.addCleanup(self._force_lougout, self.noauth_iqn) - manager.Login(iqn, tpg, host, port, iface, self.no_options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - devs = glob.glob('/dev/disk/by-path/*%s*' % iqn) - self.assertEqual(len(devs), 1) -@@ -105,7 +113,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - self.assertIn(self.str_to_ay(devs[0]), symlinks) - - manager.Logout(iqn, tpg, host, port, iface, self.no_options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - devs = glob.glob('/dev/disk/by-path/*%s*' % iqn) - self.assertEqual(len(devs), 0) -@@ -120,7 +129,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - - manager = self.get_object('/Manager') - nodes, _ = manager.DiscoverSendTargets(self.address, self.port, self.no_options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - node = next((node for node in nodes if node[0] == self.chap_iqn), None) - self.assertIsNotNone(node) -@@ -138,14 +148,16 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - with six.assertRaisesRegex(self, dbus.exceptions.DBusException, msg): - options['password'] = '12345' - manager.Login(iqn, tpg, host, port, iface, options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - # right password - options['password'] = self.password - - self.addCleanup(self._force_lougout, self.chap_iqn) - manager.Login(iqn, tpg, host, port, iface, options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - devs = glob.glob('/dev/disk/by-path/*%s*' % iqn) - self.assertEqual(len(devs), 1) -@@ -160,7 +172,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - self.assertIn(self.str_to_ay(devs[0]), symlinks) - - manager.Logout(iqn, tpg, host, port, iface, self.no_options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - devs = glob.glob('/dev/disk/by-path/*%s*' % iqn) - self.assertEqual(len(devs), 0) -@@ -175,7 +188,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - - manager = self.get_object('/Manager') - nodes, _ = manager.DiscoverSendTargets(self.address, self.port, self.no_options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - node = next((node for node in nodes if node[0] == self.mutual_iqn), None) - self.assertIsNotNone(node) -@@ -193,7 +207,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - - self.addCleanup(self._force_lougout, self.mutual_iqn) - manager.Login(iqn, tpg, host, port, iface, options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - devs = glob.glob('/dev/disk/by-path/*%s*' % iqn) - self.assertEqual(len(devs), 1) -@@ -208,7 +223,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - self.assertIn(self.str_to_ay(devs[0]), symlinks) - - manager.Logout(iqn, tpg, host, port, iface, self.no_options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - devs = glob.glob('/dev/disk/by-path/*%s*' % iqn) - self.assertEqual(len(devs), 0) -@@ -228,7 +244,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - self.skipTest("ISCSI.Session objects not supported.") - - nodes, _ = manager.DiscoverSendTargets(self.address, self.port, self.no_options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - node = next((node for node in nodes if node[0] == self.noauth_iqn), None) - self.assertIsNotNone(node) -@@ -237,7 +254,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - - self.addCleanup(self._force_lougout, self.noauth_iqn) - manager.Login(iqn, tpg, host, port, iface, self.no_options, -- dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator') -+ dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator', -+ timeout=self.iscsi_timeout) - - # /org/freedesktop/UDisks2/iscsi/sessionX should be created - udisks = self.get_object('') -@@ -260,7 +278,8 @@ class UdisksISCSITest(udiskstestcase.UdisksTestCase): - - # logout using session - session.Logout(self.no_options, -- dbus_interface=self.iface_prefix + '.ISCSI.Session') -+ dbus_interface=self.iface_prefix + '.ISCSI.Session', -+ timeout=self.iscsi_timeout) - - # make sure the session object is no longer on dbus - objects = udisks.GetManagedObjects(dbus_interface='org.freedesktop.DBus.ObjectManager') diff --git a/SOURCES/udisks-2.10.0-lvm2_update_epoch.patch b/SOURCES/udisks-2.10.0-lvm2_update_epoch.patch deleted file mode 100644 index 0bd70a7..0000000 --- a/SOURCES/udisks-2.10.0-lvm2_update_epoch.patch +++ /dev/null @@ -1,113 +0,0 @@ -From 28c39786927ad683f56c031d80a5c06f5b5b9aea Mon Sep 17 00:00:00 2001 -From: Marius Vollmer -Date: Tue, 5 Apr 2022 11:23:23 +0300 -Subject: [PATCH] lvm2: Only install results of most recently started udpates - -Fixes #966 ---- - modules/lvm2/udiskslinuxmodulelvm2.c | 13 ++++++++++++- - modules/lvm2/udiskslinuxvolumegroupobject.c | 12 ++++++++++++ - 2 files changed, 24 insertions(+), 1 deletion(-) - -diff --git a/modules/lvm2/udiskslinuxmodulelvm2.c b/modules/lvm2/udiskslinuxmodulelvm2.c -index 8e1ea13aec..77ecf94a6d 100644 ---- a/modules/lvm2/udiskslinuxmodulelvm2.c -+++ b/modules/lvm2/udiskslinuxmodulelvm2.c -@@ -59,6 +59,8 @@ struct _UDisksLinuxModuleLVM2 { - - gint delayed_update_id; - gboolean coldplug_done; -+ -+ guint32 update_epoch; - }; - - typedef struct _UDisksLinuxModuleLVM2Class UDisksLinuxModuleLVM2Class; -@@ -86,6 +88,7 @@ udisks_linux_module_lvm2_constructed (GObject *object) - - module->name_to_volume_group = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_object_unref); - module->coldplug_done = FALSE; -+ module->update_epoch = 0; - - if (G_OBJECT_CLASS (udisks_linux_module_lvm2_parent_class)->constructed) - G_OBJECT_CLASS (udisks_linux_module_lvm2_parent_class)->constructed (object); -@@ -221,6 +224,12 @@ lvm_update_vgs (GObject *source_obj, - gpointer key, value; - const gchar *vg_name; - -+ if (GPOINTER_TO_UINT (user_data) != module->update_epoch) -+ { -+ vgs_pvs_data_free (data); -+ return; -+ } -+ - if (! data) - { - if (error) -@@ -303,11 +312,13 @@ lvm_update (UDisksLinuxModuleLVM2 *module) - { - GTask *task; - -+ module->update_epoch++; -+ - /* the callback (lvm_update_vgs) is called in the default main loop (context) */ - task = g_task_new (module, - NULL /* cancellable */, - lvm_update_vgs, -- NULL /* callback_data */); -+ GUINT_TO_POINTER (module->update_epoch)); - - /* holds a reference to 'task' until it is finished */ - g_task_run_in_thread (task, (GTaskThreadFunc) vgs_task_func); -diff --git a/modules/lvm2/udiskslinuxvolumegroupobject.c b/modules/lvm2/udiskslinuxvolumegroupobject.c -index ce941cb250..ead08de7b1 100644 ---- a/modules/lvm2/udiskslinuxvolumegroupobject.c -+++ b/modules/lvm2/udiskslinuxvolumegroupobject.c -@@ -66,6 +66,7 @@ struct _UDisksLinuxVolumeGroupObject - gchar *name; - - GHashTable *logical_volumes; -+ guint32 update_epoch; - guint32 poll_epoch; - guint poll_timeout_id; - gboolean poll_requested; -@@ -99,6 +100,7 @@ static void crypttab_changed (UDisksCrypttabMonitor *monitor, - typedef struct { - BDLVMVGdata *vg_info; - GSList *vg_pvs; -+ guint32 epoch; - } VGUpdateData; - - static void -@@ -183,6 +185,7 @@ udisks_linux_volume_group_object_set_property (GObject *__object, - static void - udisks_linux_volume_group_object_init (UDisksLinuxVolumeGroupObject *object) - { -+ object->update_epoch = 0; - object->poll_epoch = 0; - object->poll_timeout_id = 0; - object->poll_requested = FALSE; -@@ -575,6 +578,12 @@ update_vg (GObject *source_obj, - BDLVMVGdata *vg_info = data->vg_info; - GSList *vg_pvs = data->vg_pvs; - -+ if (data->epoch != object->update_epoch) -+ { -+ lv_list_free (lvs); -+ return; -+ } -+ - /* free the data container (but not 'vg_info' and 'vg_pvs') */ - g_free (data); - -@@ -711,8 +720,11 @@ udisks_linux_volume_group_object_update (UDisksLinuxVolumeGroupObject *object, B - gchar *vg_name = g_strdup (vg_info->name); - GTask *task = NULL; - -+ object->update_epoch++; -+ - data->vg_info = vg_info; - data->vg_pvs = pvs; -+ data->epoch = object->update_epoch; - - /* the callback (update_vg) is called in the default main loop (context) */ - task = g_task_new (g_object_ref (object), NULL /* cancellable */, update_vg, data /* callback_data */); diff --git a/SOURCES/udisks-2.10.0-lvm2_vgcreate_uevent_sync.patch b/SOURCES/udisks-2.10.0-lvm2_vgcreate_uevent_sync.patch deleted file mode 100644 index ae9e001..0000000 --- a/SOURCES/udisks-2.10.0-lvm2_vgcreate_uevent_sync.patch +++ /dev/null @@ -1,26 +0,0 @@ -From f24601b1d1302350fff15f326bfe3cfabde05f4c Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Fri, 19 May 2023 17:17:56 +0200 -Subject: [PATCH] lvm2: Trigger uevent sync on block devices when creating new - VG - -This will likely slow down processing with the hope that -more objects have their properties updated properly. ---- - modules/lvm2/udiskslinuxmanagerlvm2.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/modules/lvm2/udiskslinuxmanagerlvm2.c b/modules/lvm2/udiskslinuxmanagerlvm2.c -index b0c62fdcd6..5c06b921df 100644 ---- a/modules/lvm2/udiskslinuxmanagerlvm2.c -+++ b/modules/lvm2/udiskslinuxmanagerlvm2.c -@@ -384,7 +384,8 @@ handle_volume_group_create (UDisksManagerLVM2 *_object, - UDisksObject *object_for_block; - object_for_block = udisks_daemon_util_dup_object (block, &error); - if (object_for_block != NULL) -- udisks_linux_block_object_trigger_uevent (UDISKS_LINUX_BLOCK_OBJECT (object_for_block)); -+ udisks_linux_block_object_trigger_uevent_sync (UDISKS_LINUX_BLOCK_OBJECT (object_for_block), -+ UDISKS_DEFAULT_WAIT_TIMEOUT); - g_object_unref (object_for_block); - } - diff --git a/SOURCES/udisks-2.10.0-tests-drive_ata-apm.patch b/SOURCES/udisks-2.10.0-tests-drive_ata-apm.patch deleted file mode 100644 index 3dcc1eb..0000000 --- a/SOURCES/udisks-2.10.0-tests-drive_ata-apm.patch +++ /dev/null @@ -1,64 +0,0 @@ -From c21ad308b1313a35cafa1664e5eb4772925bc005 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -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) - # nineth 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 deleted file mode 100644 index 044a8aa..0000000 --- a/SOURCES/udisks-2.10.0-tests-no-dev_disk-by-path.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 1358d1e5208d71d5a70f17a242eda00f079a9d0b Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -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/SOURCES/udisks-2.10.0-udiskslinuxencrypted_GError.patch b/SOURCES/udisks-2.10.0-udiskslinuxencrypted_GError.patch deleted file mode 100644 index 572a187..0000000 --- a/SOURCES/udisks-2.10.0-udiskslinuxencrypted_GError.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 486778c778a4ddb24395408c6b267e702e19ae02 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -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 deleted file mode 100644 index dae7068..0000000 --- a/SOURCES/udisks-2.10.0-udiskslinuxfilesystem_GError.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 223256777f6e269b8501d95a64c4c6095a7a8a3e Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -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 deleted file mode 100644 index d2bdec4..0000000 --- a/SOURCES/udisks-2.10.0-udiskslinuxpartition_GError.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 7c9933c0f80faaabbed607983fdf77f8c4562df6 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -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 deleted file mode 100644 index d97851e..0000000 --- a/SOURCES/udisks-2.10.0-udiskslinuxpartitiontable_GError.patch +++ /dev/null @@ -1,73 +0,0 @@ -From f486a9fa22c2f9785a4a8fc58eb3be7b0cf934ce Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -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 deleted file mode 100644 index e232e77..0000000 --- a/SOURCES/udisks-2.10.0-vdo_test_writeAmplificationRatio.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 0edd6f5579c964323d86897aff9476c20d7901ba Mon Sep 17 00:00:00 2001 -From: Vojtech Trefny -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/SOURCES/udisks-2.9.1-daemon-Always-flush-interface-property-changes.patch b/SOURCES/udisks-2.9.1-daemon-Always-flush-interface-property-changes.patch deleted file mode 100644 index 5698c5b..0000000 --- a/SOURCES/udisks-2.9.1-daemon-Always-flush-interface-property-changes.patch +++ /dev/null @@ -1,190 +0,0 @@ -From e039516b103eb9749a3e261c5ee1a9bc110676cf Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Fri, 26 Jun 2020 17:42:32 +0200 -Subject: [PATCH 1/8] daemon: Always flush interface property changes - -Setting properties on a GDBusInterfaceSkeleton from the main thread -as a result of uevent is somewhat racy to clients that are waiting -for a method call to return that is processed in a separate thread -by the daemon. Perhaps there's a race in the GDBus worker thread -that processes changes from both threads and send them out on the bus. - -Explicit flush on GDBusInterfaceSkeleton interfaces seems to fix -the issue. Such approach was used before on some places, this change -adds explicit flushes at all places where properties may change. ---- - src/udiskslinuxblock.c | 2 ++ - src/udiskslinuxdrive.c | 1 + - src/udiskslinuxdriveata.c | 5 +++++ - src/udiskslinuxencrypted.c | 5 +++++ - src/udiskslinuxfilesystem.c | 3 +++ - src/udiskslinuxloop.c | 1 + - src/udiskslinuxmdraid.c | 1 + - src/udiskslinuxpartition.c | 2 ++ - src/udiskslinuxpartitiontable.c | 1 + - src/udiskslinuxswapspace.c | 1 + - 10 files changed, 22 insertions(+) - -diff --git a/src/udiskslinuxblock.c b/src/udiskslinuxblock.c -index ddc7fe1f..34d73f0e 100644 ---- a/src/udiskslinuxblock.c -+++ b/src/udiskslinuxblock.c -@@ -893,6 +893,7 @@ update_configuration (UDisksLinuxBlock *block, - configuration = g_variant_new ("a(sa{sv})", NULL); - } - udisks_block_set_configuration (UDISKS_BLOCK (block), configuration); -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (block)); - } - - #ifdef HAVE_LIBMOUNT_UTAB -@@ -1280,6 +1281,7 @@ udisks_linux_block_update (UDisksLinuxBlock *block, - update_mdraid (block, device, drive, object_manager); - - out: -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (block)); - if (device != NULL) - g_object_unref (device); - if (drive != NULL) -diff --git a/src/udiskslinuxdrive.c b/src/udiskslinuxdrive.c -index e9dd7117..28a90ce9 100644 ---- a/src/udiskslinuxdrive.c -+++ b/src/udiskslinuxdrive.c -@@ -950,6 +950,7 @@ udisks_linux_drive_update (UDisksLinuxDrive *drive, - ret = update_configuration (drive, object); - - out: -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (drive)); - if (device != NULL) - g_clear_object (&device); - -diff --git a/src/udiskslinuxdriveata.c b/src/udiskslinuxdriveata.c -index d65f3254..4ba66d09 100644 ---- a/src/udiskslinuxdriveata.c -+++ b/src/udiskslinuxdriveata.c -@@ -339,6 +339,8 @@ udisks_linux_drive_ata_update (UDisksLinuxDriveAta *drive, - update_security (drive, device); - - out: -+ /* ensure property changes are sent before the method return */ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (drive)); - if (device != NULL) - g_object_unref (device); - -@@ -681,6 +683,9 @@ udisks_linux_drive_ata_refresh_smart_sync (UDisksLinuxDriveAta *drive, - /* update stats again to account for the IO we just did to read the SMART info */ - update_io_stats (drive, device); - -+ /* ensure property changes are sent before the method return */ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (drive)); -+ - out: - g_clear_object (&device); - if (d != NULL) -diff --git a/src/udiskslinuxencrypted.c b/src/udiskslinuxencrypted.c -index 73c78873..8a230fda 100644 ---- a/src/udiskslinuxencrypted.c -+++ b/src/udiskslinuxencrypted.c -@@ -237,6 +237,8 @@ udisks_linux_encrypted_update (UDisksLinuxEncrypted *encrypted, - update_metadata_size (encrypted, object); - - udisks_linux_block_encrypted_unlock (block); -+ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (encrypted)); - } - - /* ---------------------------------------------------------------------------------------------------- */ -@@ -630,6 +632,9 @@ handle_unlock (UDisksEncrypted *encrypted, - g_udev_device_get_sysfs_attr (cleartext_device->udev_device, "dm/uuid"), - caller_uid); - -+ /* ensure property changes are sent before the method return */ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (encrypted)); -+ - udisks_encrypted_complete_unlock (encrypted, - invocation, - g_dbus_object_get_object_path (G_DBUS_OBJECT (cleartext_object))); -diff --git a/src/udiskslinuxfilesystem.c b/src/udiskslinuxfilesystem.c -index 669fc40b..3ae11c32 100644 ---- a/src/udiskslinuxfilesystem.c -+++ b/src/udiskslinuxfilesystem.c -@@ -277,6 +277,8 @@ udisks_linux_filesystem_update (UDisksLinuxFilesystem *filesystem, - if (! skip_fs_size) - udisks_filesystem_set_size (UDISKS_FILESYSTEM (filesystem), get_filesystem_size (object)); - -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (filesystem)); -+ - g_object_unref (device); - } - -@@ -1865,6 +1867,7 @@ handle_resize (UDisksFilesystem *filesystem, - UDISKS_DEFAULT_WAIT_TIMEOUT); - - udisks_filesystem_set_size (filesystem, get_filesystem_size (UDISKS_LINUX_BLOCK_OBJECT (object))); -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (filesystem)); - udisks_filesystem_complete_resize (filesystem, invocation); - udisks_simple_job_complete (UDISKS_SIMPLE_JOB (job), TRUE, NULL); - -diff --git a/src/udiskslinuxloop.c b/src/udiskslinuxloop.c -index 6c8a4561..5d7e3553 100644 ---- a/src/udiskslinuxloop.c -+++ b/src/udiskslinuxloop.c -@@ -187,6 +187,7 @@ udisks_linux_loop_update (UDisksLinuxLoop *loop, - } - udisks_loop_set_setup_by_uid (UDISKS_LOOP (loop), setup_by_uid); - -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (loop)); - g_object_unref (device); - } - -diff --git a/src/udiskslinuxmdraid.c b/src/udiskslinuxmdraid.c -index 85fc2a3b..7eca9764 100644 ---- a/src/udiskslinuxmdraid.c -+++ b/src/udiskslinuxmdraid.c -@@ -512,6 +512,7 @@ udisks_linux_mdraid_update (UDisksLinuxMDRaid *mdraid, - uuid)); - - out: -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (mdraid)); - if (raid_data) - bd_md_examine_data_free (raid_data); - g_free (sync_completed); -diff --git a/src/udiskslinuxpartition.c b/src/udiskslinuxpartition.c -index 97ba02fe..ff0fdfc0 100644 ---- a/src/udiskslinuxpartition.c -+++ b/src/udiskslinuxpartition.c -@@ -312,6 +312,8 @@ udisks_linux_partition_update (UDisksLinuxPartition *partition, - udisks_partition_set_is_container (UDISKS_PARTITION (partition), is_container); - udisks_partition_set_is_contained (UDISKS_PARTITION (partition), is_contained); - -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (partition)); -+ - g_free (name); - g_clear_object (&device); - g_clear_object (&disk_block_object); -diff --git a/src/udiskslinuxpartitiontable.c b/src/udiskslinuxpartitiontable.c -index b26849bc..e43a0708 100644 ---- a/src/udiskslinuxpartitiontable.c -+++ b/src/udiskslinuxpartitiontable.c -@@ -146,6 +146,7 @@ udisks_linux_partition_table_update (UDisksLinuxPartitionTable *table, - - udisks_partition_table_set_partitions (UDISKS_PARTITION_TABLE (table), - partition_object_paths); -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (table)); - - - g_free (partition_object_paths); -diff --git a/src/udiskslinuxswapspace.c b/src/udiskslinuxswapspace.c -index ee103528..bb47f3d4 100644 ---- a/src/udiskslinuxswapspace.c -+++ b/src/udiskslinuxswapspace.c -@@ -127,6 +127,7 @@ udisks_linux_swapspace_update (UDisksLinuxSwapspace *swapspace, - active = TRUE; - udisks_swapspace_set_active (UDISKS_SWAPSPACE (swapspace), active); - -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (swapspace)); - g_object_unref (device); - } - --- -2.26.2 - diff --git a/SOURCES/udisks-2.9.1-drive_ata_tests.patch b/SOURCES/udisks-2.9.1-drive_ata_tests.patch deleted file mode 100644 index 1882642..0000000 --- a/SOURCES/udisks-2.9.1-drive_ata_tests.patch +++ /dev/null @@ -1,39 +0,0 @@ -commit 214d65ae4d2b779fc1674420a042082ae029eb6b -Author: Vojtech Trefny -Date: Mon Jul 13 16:16:47 2020 +0200 - - dbus_tests: Fix getting list of SATA drives for Drive.ATA test - - Resolves: rhbz#1855785 - -diff --git a/src/tests/dbus-tests/test_drive_ata.py b/src/tests/dbus-tests/test_drive_ata.py -index ff6d01cc..df298a9c 100644 ---- a/src/tests/dbus-tests/test_drive_ata.py -+++ b/src/tests/dbus-tests/test_drive_ata.py -@@ -14,8 +14,24 @@ SMART_ATA_CHECKSUM_FAIL = 1 << 2 - smart_unsupported = set() - smart_supported = set() - --sata_disks = (dev for dev in os.listdir("/dev") if re.match(r'sd[a-z]+$', dev)) --for disk in sata_disks: -+ -+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) -+ return sata_disks -+ -+ -+for disk in _get_sata_disks(): - ret, out = UdisksTestCase.run_command("smartctl -a /dev/%s" % disk) - - # Only the following bits in the exit status mean the device failed to diff --git a/SOURCES/udisks-2.9.1-iscsi-Always-flush-interface-property-changes.patch b/SOURCES/udisks-2.9.1-iscsi-Always-flush-interface-property-changes.patch deleted file mode 100644 index 7fade24..0000000 --- a/SOURCES/udisks-2.9.1-iscsi-Always-flush-interface-property-changes.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 195f3b030de32f5993da736c75e6a9bd76e6a7c7 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Fri, 26 Jun 2020 17:56:39 +0200 -Subject: [PATCH 5/8] iscsi: Always flush interface property changes - ---- - modules/iscsi/udiskslinuxiscsisessionobject.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/modules/iscsi/udiskslinuxiscsisessionobject.c b/modules/iscsi/udiskslinuxiscsisessionobject.c -index 9e525e3f..a43cecd1 100644 ---- a/modules/iscsi/udiskslinuxiscsisessionobject.c -+++ b/modules/iscsi/udiskslinuxiscsisessionobject.c -@@ -355,6 +355,8 @@ udisks_linux_iscsi_session_object_update_iface (UDisksLinuxISCSISessionObject *s - udisks_iscsi_session_set_lu_reset_timeout (iface, session_info.tmo.lu_reset_tmo); - udisks_iscsi_session_set_recovery_timeout (iface, session_info.tmo.recovery_tmo); - udisks_iscsi_session_set_tgt_reset_timeout (iface, session_info.tmo.tgt_reset_tmo); -+ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (iface)); - } - - static gboolean --- -2.26.2 - diff --git a/SOURCES/udisks-2.9.1-lsm-Always-flush-interface-property-changes.patch b/SOURCES/udisks-2.9.1-lsm-Always-flush-interface-property-changes.patch deleted file mode 100644 index cfd77da..0000000 --- a/SOURCES/udisks-2.9.1-lsm-Always-flush-interface-property-changes.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 861a0d8721536e2d210b79c845bb4f5b266b037f Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Fri, 26 Jun 2020 17:57:01 +0200 -Subject: [PATCH 6/8] lsm: Always flush interface property changes - ---- - modules/lsm/lsm_linux_drive.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/modules/lsm/lsm_linux_drive.c b/modules/lsm/lsm_linux_drive.c -index 19e68c2f..6433c308 100644 ---- a/modules/lsm/lsm_linux_drive.c -+++ b/modules/lsm/lsm_linux_drive.c -@@ -220,6 +220,8 @@ _fill_drive_lsm (UDisksLinuxDriveLSM *drive_lsm, - udisks_drive_lsm_set_min_io_size (std_drv_lsm, lsm_vol_data->min_io_size); - udisks_drive_lsm_set_opt_io_size (std_drv_lsm, lsm_vol_data->opt_io_size); - udisks_drive_lsm_set_raid_disk_count (std_drv_lsm, lsm_vol_data->raid_disk_count); -+ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (std_drv_lsm)); - } - - --- -2.26.2 - diff --git a/SOURCES/udisks-2.9.1-lvm2-Always-flush-interface-property-changes.patch b/SOURCES/udisks-2.9.1-lvm2-Always-flush-interface-property-changes.patch deleted file mode 100644 index 8a920f2..0000000 --- a/SOURCES/udisks-2.9.1-lvm2-Always-flush-interface-property-changes.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 39d13907f712269bb9debd0fd8a0852347c98136 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Fri, 26 Jun 2020 17:55:53 +0200 -Subject: [PATCH 2/8] lvm2: Always flush interface property changes - ---- - modules/lvm2/udiskslinuxlogicalvolume.c | 3 +++ - modules/lvm2/udiskslinuxphysicalvolume.c | 2 ++ - modules/lvm2/udiskslinuxvdovolume.c | 2 ++ - modules/lvm2/udiskslinuxvolumegroup.c | 3 +++ - modules/lvm2/udiskslinuxvolumegroupobject.c | 3 +++ - 5 files changed, 13 insertions(+) - -diff --git a/modules/lvm2/udiskslinuxlogicalvolume.c b/modules/lvm2/udiskslinuxlogicalvolume.c -index 373cee2e..c0f074d8 100644 ---- a/modules/lvm2/udiskslinuxlogicalvolume.c -+++ b/modules/lvm2/udiskslinuxlogicalvolume.c -@@ -229,6 +229,8 @@ udisks_linux_logical_volume_update (UDisksLinuxLogicalVolume *logical_volume - logical_volume->needs_udev_hack = FALSE; - g_free (dev_file); - } -+ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (iface)); - } - - void -@@ -248,6 +250,7 @@ udisks_linux_logical_volume_update_etctabs (UDisksLinuxLogicalVolume *logica - udisks_logical_volume_set_child_configuration (iface, - udisks_linux_find_child_configuration (daemon, - uuid)); -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (iface)); - } - - /* ---------------------------------------------------------------------------------------------------- */ -diff --git a/modules/lvm2/udiskslinuxphysicalvolume.c b/modules/lvm2/udiskslinuxphysicalvolume.c -index 27043030..36e7c322 100644 ---- a/modules/lvm2/udiskslinuxphysicalvolume.c -+++ b/modules/lvm2/udiskslinuxphysicalvolume.c -@@ -143,6 +143,8 @@ udisks_linux_physical_volume_update (UDisksLinuxPhysicalVolume *physical_vo - udisks_physical_volume_set_size (iface, pv_info->pv_size); - udisks_physical_volume_set_free_size (iface, pv_info->pv_free); - } -+ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (iface)); - } - - /* ---------------------------------------------------------------------------------------------------- */ -diff --git a/modules/lvm2/udiskslinuxvdovolume.c b/modules/lvm2/udiskslinuxvdovolume.c -index 317eddc2..430e2814 100644 ---- a/modules/lvm2/udiskslinuxvdovolume.c -+++ b/modules/lvm2/udiskslinuxvdovolume.c -@@ -177,6 +177,8 @@ udisks_linux_vdo_volume_update (UDisksLinuxVDOVolume *vdo_volume, - - udisks_vdo_volume_set_compression (iface, vdo_info->compression); - udisks_vdo_volume_set_deduplication (iface, vdo_info->deduplication); -+ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (iface)); - } - - /* ---------------------------------------------------------------------------------------------------- */ -diff --git a/modules/lvm2/udiskslinuxvolumegroup.c b/modules/lvm2/udiskslinuxvolumegroup.c -index aad2193e..3fbf6f02 100644 ---- a/modules/lvm2/udiskslinuxvolumegroup.c -+++ b/modules/lvm2/udiskslinuxvolumegroup.c -@@ -136,11 +136,14 @@ udisks_linux_volume_group_update (UDisksLinuxVolumeGroup *volume_group, - gboolean *needs_polling_ret) - { - UDisksVolumeGroup *iface = UDISKS_VOLUME_GROUP (volume_group); -+ - udisks_volume_group_set_name (iface, vg_info->name); - udisks_volume_group_set_uuid (iface, vg_info->uuid); - udisks_volume_group_set_size (iface, vg_info->size); - udisks_volume_group_set_free_size (iface, vg_info->free); - udisks_volume_group_set_extent_size (iface, vg_info->extent_size); -+ -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (iface)); - } - - /* ---------------------------------------------------------------------------------------------------- */ -diff --git a/modules/lvm2/udiskslinuxvolumegroupobject.c b/modules/lvm2/udiskslinuxvolumegroupobject.c -index 50e9c640..e3bc8dfc 100644 ---- a/modules/lvm2/udiskslinuxvolumegroupobject.c -+++ b/modules/lvm2/udiskslinuxvolumegroupobject.c -@@ -442,6 +442,7 @@ block_object_update_lvm_iface (UDisksLinuxBlockObject *object, - - udisks_linux_block_lvm2_update (UDISKS_LINUX_BLOCK_LVM2 (iface_block_lvm2), object); - udisks_block_lvm2_set_logical_volume (iface_block_lvm2, lv_obj_path); -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (iface_block_lvm2)); - } - - static void -@@ -456,6 +457,7 @@ lv_object_update_block_path (UDisksLinuxBlockObject *block_object, - { - block_objpath = g_dbus_object_get_object_path (G_DBUS_OBJECT (block_object)); - udisks_logical_volume_set_block_device (UDISKS_LOGICAL_VOLUME (lv), block_objpath); -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (lv)); - } - } - -@@ -695,6 +697,7 @@ update_vg (GObject *source_obj, - bd_lvm_vgdata_free (vg_info); - lv_list_free (lvs); - -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (object->iface_volume_group)); - g_object_unref (object); - } - --- -2.26.2 - diff --git a/SOURCES/udisks-2.9.1-lvm_vdo-test_resize_physical-size.patch b/SOURCES/udisks-2.9.1-lvm_vdo-test_resize_physical-size.patch deleted file mode 100644 index cd2f1b5..0000000 --- a/SOURCES/udisks-2.9.1-lvm_vdo-test_resize_physical-size.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 890a0f3ca8cb5894d1764752c98b90dcb6274d6d Mon Sep 17 00:00:00 2001 -From: Vojtech Trefny -Date: Tue, 9 Jun 2020 11:16:15 +0200 -Subject: [PATCH] dbus-tests: Fix UdisksLVMVDOTest.test_resize_physical - -1 GiB suddenly isn't enough for physical size grow, lets hope -2 GiB will be enough for everyone. - -Resolves: rhzb#1845435 ---- - src/tests/dbus-tests/test_20_LVM.py | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/tests/dbus-tests/test_20_LVM.py b/src/tests/dbus-tests/test_20_LVM.py -index e238879a3..1073a2f90 100644 ---- a/src/tests/dbus-tests/test_20_LVM.py -+++ b/src/tests/dbus-tests/test_20_LVM.py -@@ -576,6 +576,7 @@ def test_resize_logical(self): - dbus_size = self.get_property(lv, '.LogicalVolume', 'Size') - dbus_size.assertEqual(vsize * 5) - -+ @udiskstestcase.tag_test(udiskstestcase.TestTags.UNSTABLE) - def test_resize_physical(self): - vgname = 'udisks_test_vdo_vg' - -@@ -586,7 +587,7 @@ def test_resize_physical(self): - vg_free = self.get_property(vg, '.VolumeGroup', 'FreeSize') - lv_name = 'udisks_test_vdovlv' - pool_name = 'udisks_test_vdopool' -- psize = vg_free.value - 1 * 1024**3 -+ psize = vg_free.value - 2 * 1024**3 - vsize = psize * 5 - lv_path = vg.CreateVDOVolume(lv_name, pool_name, dbus.UInt64(psize), dbus.UInt64(vsize), - dbus.UInt64(0), True, True, "auto", self.no_options, diff --git a/SOURCES/udisks-2.9.1-teardown-needle-match.patch b/SOURCES/udisks-2.9.1-teardown-needle-match.patch deleted file mode 100644 index 2d1d5ed..0000000 --- a/SOURCES/udisks-2.9.1-teardown-needle-match.patch +++ /dev/null @@ -1,29 +0,0 @@ -From fdf6b233df960e6903c62b86735d86c59d967d12 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Fri, 19 Jun 2020 19:12:07 +0200 -Subject: [PATCH] udiskslinuxblock: Fix fstab records matching by needle - -Apparently mnt_fs_match_options() is not suitable for this use case. ---- - src/udiskslinuxblock.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/udiskslinuxblock.c b/src/udiskslinuxblock.c -index 888ec634..d5be8e4c 100644 ---- a/src/udiskslinuxblock.c -+++ b/src/udiskslinuxblock.c -@@ -575,7 +575,10 @@ find_fstab_entries (UDisksDaemon *daemon, - } - else if (needle != NULL) - { -- if (mnt_fs_match_options (fs, needle) == 0) -+ const char *opts; -+ -+ opts = mnt_fs_get_options (fs); -+ if (! opts || g_strstr_len (opts, -1, needle) == NULL) - continue; - } - --- -2.26.2 - diff --git a/SOURCES/udisks-2.9.1-zram-Always-flush-interface-property-changes.patch b/SOURCES/udisks-2.9.1-zram-Always-flush-interface-property-changes.patch deleted file mode 100644 index 4bc30aa..0000000 --- a/SOURCES/udisks-2.9.1-zram-Always-flush-interface-property-changes.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 724ff8679e0ae0fd4d84f4e6c1b36007e648e8ca Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Fri, 26 Jun 2020 17:57:12 +0200 -Subject: [PATCH 7/8] zram: Always flush interface property changes - ---- - modules/zram/udiskslinuxblockzram.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/modules/zram/udiskslinuxblockzram.c b/modules/zram/udiskslinuxblockzram.c -index 132d4174..1bae3686 100644 ---- a/modules/zram/udiskslinuxblockzram.c -+++ b/modules/zram/udiskslinuxblockzram.c -@@ -277,6 +277,7 @@ udisks_linux_block_zram_update (UDisksLinuxBlockZRAM *zramblock, - - udisks_block_zram_set_active (iface, bd_swap_swapstatus (dev_file, &error)); - out: -+ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (iface)); - if (zram_info) - bd_kbd_zram_stats_free (zram_info); - if (error) --- -2.26.2 - diff --git a/SOURCES/udisks-2.9.2-udisksdaemonutil-Refactor-udisks_daemon_util_trigger.patch b/SOURCES/udisks-2.9.2-udisksdaemonutil-Refactor-udisks_daemon_util_trigger.patch deleted file mode 100644 index 3d2aa1b..0000000 --- a/SOURCES/udisks-2.9.2-udisksdaemonutil-Refactor-udisks_daemon_util_trigger.patch +++ /dev/null @@ -1,528 +0,0 @@ -From 8d5c90a1f4bbe548a1ae361f8d69970669d6e72e Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Fri, 13 Nov 2020 16:52:11 +0100 -Subject: [PATCH 1/2] udisksdaemonutil: Refactor - udisks_daemon_util_trigger_uevent() out of UDisksLinuxBlockObject - -This decouples uevent triggering from UDisksLinuxBlockObject as sometimes -we don't have a block object yet or it's outdated. ---- - doc/udisks2-sections.txt.daemon.sections.in | 2 + - src/udisksdaemonutil.c | 230 ++++++++++++++++++++ - src/udisksdaemonutil.h | 7 + - src/udiskslinuxblockobject.c | 180 ++------------- - 4 files changed, 253 insertions(+), 166 deletions(-) - -diff --git a/doc/udisks2-sections.txt.daemon.sections.in b/doc/udisks2-sections.txt.daemon.sections.in -index 26c3c2cd..3030fa95 100644 ---- a/doc/udisks2-sections.txt.daemon.sections.in -+++ b/doc/udisks2-sections.txt.daemon.sections.in -@@ -307,6 +307,8 @@ udisks_daemon_util_file_set_contents - udisks_daemon_util_on_user_seat - udisks_daemon_util_get_free_mdraid_device - udisks_ata_identify_get_word -+udisks_daemon_util_trigger_uevent -+udisks_daemon_util_trigger_uevent_sync - - -
-diff --git a/src/udisksdaemonutil.c b/src/udisksdaemonutil.c -index 75b877a0..d16c0766 100644 ---- a/src/udisksdaemonutil.c -+++ b/src/udisksdaemonutil.c -@@ -34,10 +34,14 @@ - #include - #include - -+#include -+ - #include "udisksdaemon.h" - #include "udisksdaemonutil.h" - #include "udisksstate.h" - #include "udiskslogging.h" -+#include "udiskslinuxdevice.h" -+#include "udiskslinuxprovider.h" - #include "udiskslinuxblockobject.h" - #include "udiskslinuxdriveobject.h" - -@@ -1626,3 +1630,229 @@ udisks_ata_identify_get_word (const guchar *identify_data, guint word_number) - out: - return ret; - } -+ -+ -+/* ---------------------------------------------------------------------------------------------------- */ -+ -+static volatile guint uevent_serial = 0; -+ -+static gboolean -+trigger_uevent (const gchar *path, const gchar *str) -+{ -+ gint fd; -+ -+ fd = open (path, O_WRONLY); -+ if (fd < 0) -+ { -+ udisks_warning ("Error opening %s while triggering uevent: %m", path); -+ return FALSE; -+ } -+ -+ if (write (fd, str, strlen (str)) != (ssize_t) strlen (str)) -+ { -+ udisks_warning ("Error writing '%s' to file %s: %m", str, path); -+ close (fd); -+ return FALSE; -+ } -+ -+ close (fd); -+ return TRUE; -+} -+ -+typedef struct -+{ -+ UDisksDaemon *daemon; -+ GMainLoop *main_loop; -+ guint serial; -+ gchar *uevent_path; -+ gboolean success; -+} SynthUeventData; -+ -+static gboolean -+trigger_uevent_idle_cb (gpointer user_data) -+{ -+ SynthUeventData *data = user_data; -+ gchar *str; -+ -+ str = g_strdup_printf ("change %s UDISKSSERIAL=%u", udisks_daemon_get_uuid (data->daemon), data->serial); -+ -+ if (! trigger_uevent (data->uevent_path, str)) -+ { -+ /* kernel refused our string, try simple "change" but don't wait for it */ -+ trigger_uevent (data->uevent_path, "change"); -+ data->success = FALSE; -+ g_main_loop_quit (data->main_loop); -+ } -+ g_free (str); -+ -+ /* remove the source */ -+ return FALSE; -+} -+ -+static gboolean -+uevent_wait_timeout_cb (gpointer user_data) -+{ -+ SynthUeventData *data = user_data; -+ -+ data->success = FALSE; -+ g_main_loop_quit (data->main_loop); -+ -+ /* remove the source */ -+ return FALSE; -+} -+ -+static void -+uevent_probed_cb (UDisksLinuxProvider *provider, -+ const gchar *action, -+ UDisksLinuxDevice *device, -+ gpointer user_data) -+{ -+ SynthUeventData *data = user_data; -+ const gchar *received_serial_str; -+ gint64 received_serial; -+ gchar *endptr; -+ -+ received_serial_str = g_udev_device_get_property (device->udev_device, "SYNTH_ARG_UDISKSSERIAL"); -+ if (received_serial_str != NULL) -+ { -+ endptr = (gchar *) received_serial_str; -+ received_serial = g_ascii_strtoll (received_serial_str, &endptr, 0); -+ if (endptr != received_serial_str && received_serial == data->serial) -+ { -+ data->success = TRUE; -+ g_main_loop_quit (data->main_loop); -+ } -+ } -+} -+ -+/** -+ * udisks_daemon_util_trigger_uevent: -+ * @daemon: A #UDisksDaemon. -+ * @device_path: Block device path. -+ * -+ * Triggers a 'change' uevent in the kernel. -+ * -+ * The triggered event will bubble up from the kernel through the udev -+ * stack and will eventually be received by the udisks daemon process -+ * itself. This method does not wait for the event to be received. -+ */ -+void -+udisks_daemon_util_trigger_uevent (UDisksDaemon *daemon, -+ const gchar *device_path) -+{ -+ GUdevClient *gudev_client; -+ GUdevDevice *gudev_device; -+ gchar *path; -+ -+ g_return_if_fail (UDISKS_IS_DAEMON (daemon)); -+ g_return_if_fail (device_path != NULL); -+ -+ gudev_client = udisks_linux_provider_get_udev_client (udisks_daemon_get_linux_provider (daemon)); -+ gudev_device = g_udev_client_query_by_device_file (gudev_client, device_path); -+ if (gudev_device == NULL) -+ { -+ udisks_critical ("Device %s not found in udev database, skipping uevent trigger", device_path); -+ return; -+ } -+ -+ path = g_build_filename (g_udev_device_get_sysfs_path (gudev_device), "uevent", NULL); -+ trigger_uevent (path, "change"); -+ g_free (path); -+ -+ g_object_unref (gudev_device); -+} -+ -+/** -+ * udisks_daemon_util_trigger_uevent_sync: -+ * @daemon: A #UDisksDaemon. -+ * @device_path: Block device path. -+ * @timeout_seconds: Maximum time to wait for the uevent (in seconds). -+ * -+ * Triggers a 'change' uevent in the kernel and waits until it's received and -+ * processed by udisks. -+ * -+ * Unlike udisks_daemon_util_trigger_uevent() that just triggers -+ * a synthetic uevent to the kernel, this call will actually block and wait until -+ * the #UDisksLinuxProvider receives the uevent, performs probing and processes -+ * the uevent further down the UDisks object stack. Upon returning from this -+ * function call the caller may assume the event has been fully processed, all -+ * D-Bus objects are updated and settled. Typically used in busy wait for -+ * a particular D-Bus interface. -+ * -+ * Note that this uses synthetic uevent tagging and only works on linux kernel -+ * 4.13 and higher. In case an older kernel is detected this acts like the classic -+ * udisks_daemon_util_trigger_uevent() call and %FALSE is returned. -+ * -+ * Returns: %TRUE if the uevent has been successfully received, %FALSE otherwise -+ * or when the kernel version is too old. -+ */ -+gboolean -+udisks_daemon_util_trigger_uevent_sync (UDisksDaemon *daemon, -+ const gchar *device_path, -+ guint timeout_seconds) -+{ -+ UDisksLinuxProvider *provider; -+ GUdevClient *gudev_client; -+ GUdevDevice *gudev_device; -+ SynthUeventData data; -+ GMainContext *main_context; -+ GSource *idle_source; -+ GSource *timeout_source; -+ -+ g_return_val_if_fail (UDISKS_IS_DAEMON (daemon), FALSE); -+ g_return_val_if_fail (device_path != NULL, FALSE); -+ -+ if (bd_utils_check_linux_version (4, 13, 0) < 0) -+ { -+ udisks_daemon_util_trigger_uevent (daemon, device_path); -+ return FALSE; -+ } -+ -+ provider = udisks_daemon_get_linux_provider (daemon); -+ gudev_client = udisks_linux_provider_get_udev_client (provider); -+ gudev_device = g_udev_client_query_by_device_file (gudev_client, device_path); -+ if (gudev_device == NULL) -+ { -+ udisks_critical ("Device %s not found in udev database, skipping uevent trigger", device_path); -+ return FALSE; -+ } -+ -+ data.daemon = daemon; -+ data.uevent_path = g_build_filename (g_udev_device_get_sysfs_path (gudev_device), "uevent", NULL); -+ data.serial = g_atomic_int_add (&uevent_serial, 1); -+ -+ main_context = g_main_context_new (); -+ g_main_context_push_thread_default (main_context); -+ data.main_loop = g_main_loop_new (main_context, FALSE); -+ -+ /* queue the actual trigger in the loop */ -+ idle_source = g_idle_source_new (); -+ g_source_set_callback (idle_source, (GSourceFunc) trigger_uevent_idle_cb, &data, NULL); -+ g_source_attach (idle_source, main_context); -+ g_source_unref (idle_source); -+ -+ /* add timeout as a fallback */ -+ timeout_source = g_timeout_source_new_seconds (timeout_seconds); -+ g_source_set_callback (timeout_source, (GSourceFunc) uevent_wait_timeout_cb, &data, NULL); -+ g_source_attach (timeout_source, main_context); -+ g_source_unref (timeout_source); -+ -+ /* catch incoming uevents */ -+ g_signal_connect (provider, "uevent-probed", G_CALLBACK (uevent_probed_cb), &data); -+ -+ data.success = FALSE; -+ g_main_loop_run (data.main_loop); -+ -+ g_signal_handlers_disconnect_by_func (provider, uevent_probed_cb, &data); -+ g_main_context_pop_thread_default (main_context); -+ -+ g_main_loop_unref (data.main_loop); -+ g_main_context_unref (main_context); -+ -+ g_free (data.uevent_path); -+ g_object_unref (gudev_device); -+ -+ return data.success; -+} -+ -+/* ---------------------------------------------------------------------------------------------------- */ -diff --git a/src/udisksdaemonutil.h b/src/udisksdaemonutil.h -index 4fe36214..2edf2122 100644 ---- a/src/udisksdaemonutil.h -+++ b/src/udisksdaemonutil.h -@@ -51,6 +51,13 @@ guint64 udisks_daemon_util_block_get_size (GUdevDevice *device, - gboolean *out_media_available, - gboolean *out_media_change_detected); - -+void udisks_daemon_util_trigger_uevent (UDisksDaemon *daemon, -+ const gchar *device_path); -+ -+gboolean udisks_daemon_util_trigger_uevent_sync (UDisksDaemon *daemon, -+ const gchar *device_path, -+ guint timeout_seconds); -+ - gchar *udisks_daemon_util_resolve_link (const gchar *path, - const gchar *name); - -diff --git a/src/udiskslinuxblockobject.c b/src/udiskslinuxblockobject.c -index 42ab17d7..5a68c84b 100644 ---- a/src/udiskslinuxblockobject.c -+++ b/src/udiskslinuxblockobject.c -@@ -38,8 +38,6 @@ - #include - #include - --#include -- - #include "udiskslogging.h" - #include "udisksdaemon.h" - #include "udisksdaemonutil.h" -@@ -959,122 +957,24 @@ on_mount_monitor_mount_removed (UDisksMountMonitor *monitor, - - /* ---------------------------------------------------------------------------------------------------- */ - --static volatile guint uevent_serial = 0; -- --static gboolean --trigger_uevent (const gchar *path, const gchar *str) --{ -- gint fd; -- -- fd = open (path, O_WRONLY); -- if (fd < 0) -- { -- udisks_warning ("Error opening %s while triggering uevent: %m", path); -- return FALSE; -- } -- -- if (write (fd, str, strlen (str)) != (ssize_t) strlen (str)) -- { -- udisks_warning ("Error writing '%s' to file %s: %m", str, path); -- close (fd); -- return FALSE; -- } -- -- close (fd); -- return TRUE; --} -- --typedef struct --{ -- UDisksLinuxBlockObject *object; -- GMainLoop *main_loop; -- guint serial; -- gchar *uevent_path; -- gboolean success; --} SynthUeventData; -- --static gboolean --trigger_uevent_idle_cb (gpointer user_data) --{ -- SynthUeventData *data = user_data; -- gchar *str; -- -- str = g_strdup_printf ("change %s UDISKSSERIAL=%u", udisks_daemon_get_uuid (data->object->daemon), data->serial); -- -- if (! trigger_uevent (data->uevent_path, str)) -- { -- /* kernel refused our string, try simple "change" but don't wait for it */ -- trigger_uevent (data->uevent_path, "change"); -- data->success = FALSE; -- g_main_loop_quit (data->main_loop); -- } -- g_free (str); -- -- /* remove the source */ -- return FALSE; --} -- --static gboolean --uevent_wait_timeout_cb (gpointer user_data) --{ -- SynthUeventData *data = user_data; -- -- data->success = FALSE; -- g_main_loop_quit (data->main_loop); -- -- /* remove the source */ -- return FALSE; --} -- --static void --uevent_probed_cb (UDisksLinuxProvider *provider, -- const gchar *action, -- UDisksLinuxDevice *device, -- gpointer user_data) --{ -- SynthUeventData *data = user_data; -- const gchar *received_serial_str; -- gint64 received_serial; -- gchar *endptr; -- -- received_serial_str = g_udev_device_get_property (device->udev_device, "SYNTH_ARG_UDISKSSERIAL"); -- if (received_serial_str != NULL) -- { -- endptr = (gchar *) received_serial_str; -- received_serial = g_ascii_strtoll (received_serial_str, &endptr, 0); -- if (endptr != received_serial_str && received_serial == data->serial) -- { -- data->success = TRUE; -- g_main_loop_quit (data->main_loop); -- } -- } --} -- - /** - * udisks_linux_block_object_trigger_uevent: - * @object: A #UDisksLinuxBlockObject. - * - * Triggers a 'change' uevent in the kernel. - * -- * The triggered event will bubble up from the kernel through the udev -- * stack and will eventually be received by the udisks daemon process -- * itself. This method does not wait for the event to be received. -+ * Refer to udisks_daemon_util_trigger_uevent() for detailed description. - */ - void - udisks_linux_block_object_trigger_uevent (UDisksLinuxBlockObject *object) - { -- UDisksLinuxDevice *device; -- gchar *path; -+ gchar *device_file; - - g_return_if_fail (UDISKS_IS_LINUX_BLOCK_OBJECT (object)); - -- device = udisks_linux_block_object_get_device (object); -- path = g_strconcat (g_udev_device_get_sysfs_path (device->udev_device), "/uevent", NULL); -- -- trigger_uevent (path, "change"); -- -- g_free (path); -- g_object_unref (device); -+ device_file = udisks_linux_block_object_get_device_file (object); -+ udisks_daemon_util_trigger_uevent (object->daemon, device_file); -+ g_free (device_file); - } - - /** -@@ -1083,19 +983,10 @@ udisks_linux_block_object_trigger_uevent (UDisksLinuxBlockObject *object) - * @timeout_seconds: Maximum time to wait for the uevent (in seconds). - * - * Triggers a 'change' uevent in the kernel and waits until it's received and -- * processed by udisks. -- * -- * Unlike udisks_linux_block_object_trigger_uevent() that just triggers -- * a synthetic uevent to the kernel, this call will actually block and wait until -- * the #UDisksLinuxProvider receives the uevent, performs probing and processes -- * the uevent further down the UDisks object stack. Upon returning from this -- * function call the caller may assume the event has been fully processed, all -- * D-Bus objects are updated and settled. Typically used in busy wait for -- * a particular D-Bus interface. -+ * processed through the uevent queue. - * -- * Note that this uses synthetic uevent tagging and only works on linux kernel -- * 4.13 and higher. In case an older kernel is detected this acts like the classic -- * udisks_linux_block_object_trigger_uevent() call and %FALSE is returned. -+ * This is a convenient wrapper around udisks_daemon_util_trigger_uevent_sync(). -+ * Refer to this function for detailed documentation. - * - * Returns: %TRUE if the uevent has been successfully received, %FALSE otherwise - * or when the kernel version is too old. -@@ -1104,59 +995,16 @@ gboolean - udisks_linux_block_object_trigger_uevent_sync (UDisksLinuxBlockObject *object, - guint timeout_seconds) - { -- UDisksLinuxDevice *device; -- UDisksLinuxProvider *provider; -- SynthUeventData data; -- GMainContext *main_context; -- GSource *idle_source; -- GSource *timeout_source; -+ gchar *device_file; -+ gboolean ret; - - g_return_val_if_fail (UDISKS_IS_LINUX_BLOCK_OBJECT (object), FALSE); - -- if (bd_utils_check_linux_version (4, 13, 0) < 0) -- { -- udisks_linux_block_object_trigger_uevent (object); -- return FALSE; -- } -- -- data.object = object; -- device = udisks_linux_block_object_get_device (object); -- data.uevent_path = g_strconcat (g_udev_device_get_sysfs_path (device->udev_device), "/uevent", NULL); -- data.serial = g_atomic_int_add (&uevent_serial, 1); -- -- main_context = g_main_context_new (); -- g_main_context_push_thread_default (main_context); -- data.main_loop = g_main_loop_new (main_context, FALSE); -- -- /* queue the actual trigger in the loop */ -- idle_source = g_idle_source_new (); -- g_source_set_callback (idle_source, (GSourceFunc) trigger_uevent_idle_cb, &data, NULL); -- g_source_attach (idle_source, main_context); -- g_source_unref (idle_source); -+ device_file = udisks_linux_block_object_get_device_file (object); -+ ret = udisks_daemon_util_trigger_uevent_sync (object->daemon, device_file, timeout_seconds); -+ g_free (device_file); - -- /* add timeout as a fallback */ -- timeout_source = g_timeout_source_new_seconds (timeout_seconds); -- g_source_set_callback (timeout_source, (GSourceFunc) uevent_wait_timeout_cb, &data, NULL); -- g_source_attach (timeout_source, main_context); -- g_source_unref (timeout_source); -- -- /* catch incoming uevents */ -- provider = udisks_daemon_get_linux_provider (object->daemon); -- g_signal_connect (provider, "uevent-probed", G_CALLBACK (uevent_probed_cb), &data); -- -- data.success = FALSE; -- g_main_loop_run (data.main_loop); -- -- g_signal_handlers_disconnect_by_func (provider, uevent_probed_cb, &data); -- g_main_context_pop_thread_default (main_context); -- -- g_main_loop_unref (data.main_loop); -- g_main_context_unref (main_context); -- -- g_free (data.uevent_path); -- g_object_unref (device); -- -- return data.success; -+ return ret; - } - - /* ---------------------------------------------------------------------------------------------------- */ --- -2.26.2 - diff --git a/SOURCES/udisks-2.9.2-udiskslinuxmanager-Trigger-uevent-after-loop-device-setup.patch b/SOURCES/udisks-2.9.2-udiskslinuxmanager-Trigger-uevent-after-loop-device-setup.patch deleted file mode 100644 index c37d942..0000000 --- a/SOURCES/udisks-2.9.2-udiskslinuxmanager-Trigger-uevent-after-loop-device-setup.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 7fe04e70dc5a5ccf621a0beacc6d4b9e904037df Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Fri, 13 Nov 2020 16:57:24 +0100 -Subject: [PATCH 2/2] udiskslinuxmanager: Trigger uevent after loop device - setup - ---- - src/udiskslinuxmanager.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/udiskslinuxmanager.c b/src/udiskslinuxmanager.c -index 1bbf980a..e0a83a80 100644 ---- a/src/udiskslinuxmanager.c -+++ b/src/udiskslinuxmanager.c -@@ -430,6 +430,9 @@ handle_loop_setup (UDisksManager *object, - error = NULL; - wait_data.loop_device = loop_device; - wait_data.path = path; -+ udisks_daemon_util_trigger_uevent_sync (manager->daemon, -+ loop_device, -+ UDISKS_DEFAULT_WAIT_TIMEOUT); - loop_object = udisks_daemon_wait_for_object_sync (manager->daemon, - wait_for_loop_object, - &wait_data, --- -2.26.2 - diff --git a/SOURCES/udisks-2.9.4-FIPS_LUKS_fixes-2.patch b/SOURCES/udisks-2.9.4-FIPS_LUKS_fixes-2.patch deleted file mode 100644 index 1ff92fb..0000000 --- a/SOURCES/udisks-2.9.4-FIPS_LUKS_fixes-2.patch +++ /dev/null @@ -1,405 +0,0 @@ -diff -up udisks-2.9.0/src/tests/dbus-tests/test_50_block.py.bak udisks-2.9.0/src/tests/dbus-tests/test_50_block.py ---- udisks-2.9.0/src/tests/dbus-tests/test_50_block.py.bak 2020-05-26 14:59:20.000000000 +0200 -+++ udisks-2.9.0/src/tests/dbus-tests/test_50_block.py 2023-06-02 17:08:45.203845819 +0200 -@@ -11,6 +11,8 @@ import udiskstestcase - class UdisksBlockTest(udiskstestcase.UdisksTestCase): - '''This is a basic block device test suite''' - -+ LUKS_PASSPHRASE = 'shouldnotseeme' -+ - def _close_luks(self, disk): - disk.Lock(self.no_options, dbus_interface=self.iface_prefix + '.Encrypted') - -@@ -201,7 +203,7 @@ class UdisksBlockTest(udiskstestcase.Udi - - # format the disk - disk = self.get_object('/block_devices/' + os.path.basename(self.vdevs[0])) -- disk.Format('xfs', {'encrypt.passphrase': 'test'}, dbus_interface=self.iface_prefix + '.Block') -+ disk.Format('xfs', {'encrypt.passphrase': self.LUKS_PASSPHRASE}, dbus_interface=self.iface_prefix + '.Block') - - # cleanup -- close the luks and remove format - self.addCleanup(self.wipe_fs, self.vdevs[0]) -@@ -209,7 +211,7 @@ class UdisksBlockTest(udiskstestcase.Udi - - # configuration items as arrays of dbus.Byte - opts = self.str_to_ay('verify') -- passwd = self.str_to_ay('test') -+ passwd = self.str_to_ay(self.LUKS_PASSPHRASE) - - # set the new configuration - conf = dbus.Dictionary({'passphrase-contents': passwd, -@@ -254,7 +256,7 @@ class UdisksBlockTest(udiskstestcase.Udi - - # format the disk - disk = self.get_object('/block_devices/' + os.path.basename(self.vdevs[0])) -- disk.Format('xfs', {'encrypt.passphrase': 'test'}, dbus_interface=self.iface_prefix + '.Block') -+ disk.Format('xfs', {'encrypt.passphrase': self.LUKS_PASSPHRASE}, dbus_interface=self.iface_prefix + '.Block') - - # cleanup -- close the luks and remove format - self.addCleanup(self.wipe_fs, self.vdevs[0]) -diff -up udisks-2.9.0/src/tests/dbus-tests/test_70_encrypted.py.bak udisks-2.9.0/src/tests/dbus-tests/test_70_encrypted.py ---- udisks-2.9.0/src/tests/dbus-tests/test_70_encrypted.py.bak 2020-05-26 14:59:20.000000000 +0200 -+++ udisks-2.9.0/src/tests/dbus-tests/test_70_encrypted.py 2023-06-02 17:07:33.828531988 +0200 -@@ -40,6 +40,9 @@ def _get_blkid_version(): - class UdisksEncryptedTest(udiskstestcase.UdisksTestCase): - '''This is an encrypted device test suite''' - -+ PASSPHRASE = 'shouldnotseeme' -+ LUKS_NAME = 'myshinylittleluks' -+ - def _create_luks(self, device, passphrase, binary=False): - raise NotImplementedError() - -@@ -60,7 +63,7 @@ class UdisksEncryptedTest(udiskstestcase - disk_name = os.path.basename(self.vdevs[0]) - disk = self.get_object('/block_devices/' + disk_name) - -- self._create_luks(disk, 'test') -+ self._create_luks(disk, self.PASSPHRASE) - self.addCleanup(self._remove_luks, disk) - self.udev_settle() - -@@ -124,7 +127,7 @@ class UdisksEncryptedTest(udiskstestcase - disk_name = os.path.basename(self.vdevs[0]) - disk = self.get_object('/block_devices/' + disk_name) - -- self._create_luks(disk, 'test') -+ self._create_luks(disk, self.PASSPHRASE) - self.addCleanup(self._remove_luks, disk) - self.udev_settle() - -@@ -160,11 +163,11 @@ class UdisksEncryptedTest(udiskstestcase - # wrong password - msg = 'org.freedesktop.UDisks2.Error.Failed: Error unlocking %s *' % self.vdevs[0] - with six.assertRaisesRegex(self, dbus.exceptions.DBusException, msg): -- disk.Unlock('shbdkjaf', self.no_options, -+ disk.Unlock('abcdefghijklmn', self.no_options, - dbus_interface=self.iface_prefix + '.Encrypted') - - # right password -- luks = disk.Unlock('test', self.no_options, -+ luks = disk.Unlock(self.PASSPHRASE, self.no_options, - dbus_interface=self.iface_prefix + '.Encrypted') - self.assertIsNotNone(luks) - self.assertTrue(os.path.exists('/dev/disk/by-uuid/%s' % luks_uuid)) -@@ -180,7 +183,7 @@ class UdisksEncryptedTest(udiskstestcase - - # read-only - ro_opts = dbus.Dictionary({'read-only': dbus.Boolean(True)}, signature=dbus.Signature('sv')) -- luks = disk.Unlock('test', ro_opts, -+ luks = disk.Unlock(self.PASSPHRASE, ro_opts, - dbus_interface=self.iface_prefix + '.Encrypted') - self.assertIsNotNone(luks) - self.assertTrue(os.path.exists('/dev/disk/by-uuid/%s' % luks_uuid)) -@@ -196,13 +199,10 @@ class UdisksEncryptedTest(udiskstestcase - crypttab = self.read_file('/etc/crypttab') - self.addCleanup(self.write_file, '/etc/crypttab', crypttab) - -- passwd = 'test' -- luks_name = 'myshinylittleluks' -- - disk_name = os.path.basename(self.vdevs[0]) - disk = self.get_object('/block_devices/' + disk_name) - -- self._create_luks(disk, passwd) -+ self._create_luks(disk, self.PASSPHRASE) - self.addCleanup(self._remove_luks, disk) - self.udev_settle() - -@@ -212,22 +212,22 @@ class UdisksEncryptedTest(udiskstestcase - disk.Lock(self.no_options, dbus_interface=self.iface_prefix + '.Encrypted') - - # add new entry to the crypttab -- new_crypttab = crypttab + '%s UUID=%s none\n' % (luks_name, disk_uuid) -+ new_crypttab = crypttab + '%s UUID=%s none\n' % (self.LUKS_NAME, disk_uuid) - self.write_file('/etc/crypttab', new_crypttab) - - # give udisks time to react to change of the file - time.sleep(5) - dbus_conf = disk.GetSecretConfiguration(self.no_options, dbus_interface=self.iface_prefix + '.Block') - self.assertIsNotNone(dbus_conf) -- self.assertEqual(self.ay_to_str(dbus_conf[0][1]['name']), luks_name) -+ self.assertEqual(self.ay_to_str(dbus_conf[0][1]['name']), self.LUKS_NAME) - - # unlock the device -- luks = disk.Unlock(passwd, self.no_options, -+ luks = disk.Unlock(self.PASSPHRASE, self.no_options, - dbus_interface=self.iface_prefix + '.Encrypted') - self.assertIsNotNone(luks) - - # unlock should use name from crypttab for the /dev/mapper device -- dm_path = '/dev/mapper/%s' % luks_name -+ dm_path = '/dev/mapper/%s' % self.LUKS_NAME - self.assertTrue(os.path.exists(dm_path)) - - # preferred 'device' should be /dev/mapper/name too -@@ -242,8 +242,7 @@ class UdisksEncryptedTest(udiskstestcase - crypttab = self.read_file('/etc/crypttab') - self.addCleanup(self.write_file, '/etc/crypttab', crypttab) - -- passwd = b'test\0test' -- luks_name = 'myshinylittleluks' -+ passwd = b'testtesttest\0testtesttest' - - # create key file - _fd, key_file = tempfile.mkstemp() -@@ -264,14 +263,14 @@ class UdisksEncryptedTest(udiskstestcase - disk.Lock(self.no_options, dbus_interface=self.iface_prefix + '.Encrypted') - - # add new entry to the crypttab -- new_crypttab = crypttab + '%s UUID=%s %s\n' % (luks_name, disk_uuid, key_file) -+ new_crypttab = crypttab + '%s UUID=%s %s\n' % (self.LUKS_NAME, disk_uuid, key_file) - self.write_file('/etc/crypttab', new_crypttab) - - # give udisks time to react to change of the file - time.sleep(5) - dbus_conf = disk.GetSecretConfiguration(self.no_options, dbus_interface=self.iface_prefix + '.Block') - self.assertIsNotNone(dbus_conf) -- self.assertEqual(self.ay_to_str(dbus_conf[0][1]['name']), luks_name) -+ self.assertEqual(self.ay_to_str(dbus_conf[0][1]['name']), self.LUKS_NAME) - self.assertEqual(self.ay_to_str(dbus_conf[0][1]['passphrase-path']), key_file) - - # unlock the device using empty passphrase (should use the key file) -@@ -280,7 +279,7 @@ class UdisksEncryptedTest(udiskstestcase - self.assertIsNotNone(luks) - - # unlock should use name from crypttab for the /dev/mapper device -- dm_path = '/dev/mapper/%s' % luks_name -+ dm_path = '/dev/mapper/%s' % self.LUKS_NAME - self.assertTrue(os.path.exists(dm_path)) - - # preferred 'device' should be /dev/mapper/name too -@@ -293,7 +292,7 @@ class UdisksEncryptedTest(udiskstestcase - disk_name = os.path.basename(self.vdevs[0]) - disk = self.get_object('/block_devices/' + disk_name) - -- self._create_luks(disk, 'test') -+ self._create_luks(disk, self.PASSPHRASE) - self.addCleanup(self._remove_luks, disk) - self.udev_settle() - -@@ -320,11 +319,11 @@ class UdisksEncryptedTest(udiskstestcase - disk_name = os.path.basename(self.vdevs[0]) - disk = self.get_object('/block_devices/' + disk_name) - -- self._create_luks(disk, 'test') -+ self._create_luks(disk, self.PASSPHRASE) - self.addCleanup(self._remove_luks, disk) - self.udev_settle() - -- disk.ChangePassphrase('test', 'password', self.no_options, -+ disk.ChangePassphrase(self.PASSPHRASE, self.PASSPHRASE + '222', self.no_options, - dbus_interface=self.iface_prefix + '.Encrypted') - - disk.Lock(self.no_options, dbus_interface=self.iface_prefix + '.Encrypted') -@@ -332,11 +331,11 @@ class UdisksEncryptedTest(udiskstestcase - # old password, should fail - msg = 'org.freedesktop.UDisks2.Error.Failed: Error unlocking %s *' % self.vdevs[0] - with six.assertRaisesRegex(self, dbus.exceptions.DBusException, msg): -- disk.Unlock('test', self.no_options, -+ disk.Unlock(self.PASSPHRASE, self.no_options, - dbus_interface=self.iface_prefix + '.Encrypted') - - # new password -- luks = disk.Unlock('password', self.no_options, -+ luks = disk.Unlock(self.PASSPHRASE + '222', self.no_options, - dbus_interface=self.iface_prefix + '.Encrypted') - self.assertIsNotNone(luks) - -@@ -347,7 +346,7 @@ class UdisksEncryptedTest(udiskstestcase - - def test_resize(self): - device = self.get_device(self.vdevs[0]) -- self._create_luks(device, 'test') -+ self._create_luks(device, self.PASSPHRASE) - self.addCleanup(self._remove_luks, device) - self.udev_settle() - -@@ -376,8 +375,6 @@ class UdisksEncryptedTest(udiskstestcase - fstab = self.read_file('/etc/fstab') - self.addCleanup(self.write_file, '/etc/fstab', fstab) - -- passphrase = 'test' -- - disk_name = os.path.basename(self.vdevs[0]) - disk = self.get_object('/block_devices/' + disk_name) - -@@ -388,7 +385,7 @@ class UdisksEncryptedTest(udiskstestcase - self.assertIsNotNone(part) - - # create LUKS on the partition and add it to crypttab -- self._create_luks(part, passphrase) -+ self._create_luks(part, self.PASSPHRASE) - self.udev_settle() - - conf = dbus.Dictionary({'name': self.str_to_ay('udisks_luks_test'), -@@ -525,10 +522,8 @@ class UdisksEncryptedTestLUKS2(UdisksEnc - super(UdisksEncryptedTestLUKS2, self).setUp() - - def test_resize(self): -- passwd = 'test' -- - device = self.get_device(self.vdevs[0]) -- self._create_luks(device, passwd) -+ self._create_luks(device, self.PASSPHRASE) - self.addCleanup(self._remove_luks, device) - self.udev_settle() - -@@ -554,7 +549,7 @@ class UdisksEncryptedTestLUKS2(UdisksEnc - - # right passphrase - d = dbus.Dictionary(signature='sv') -- d['passphrase'] = passwd -+ d['passphrase'] = self.PASSPHRASE - device.Resize(dbus.UInt64(100*1024*1024), d, - dbus_interface=self.iface_prefix + '.Encrypted') - -@@ -563,7 +558,7 @@ class UdisksEncryptedTestLUKS2(UdisksEnc - - # resize back to the original size (using binary passphrase) - d = dbus.Dictionary(signature='sv') -- d['keyfile_contents'] = self.str_to_ay(passwd, False) -+ d['keyfile_contents'] = self.str_to_ay(self.PASSPHRASE, False) - device.Resize(dbus.UInt64(clear_size), d, - dbus_interface=self.iface_prefix + '.Encrypted') - -@@ -581,7 +576,7 @@ class UdisksEncryptedTestLUKS2(UdisksEnc - - # create LUKS without specifying version - options = dbus.Dictionary(signature='sv') -- options['encrypt.passphrase'] = 'test' -+ options['encrypt.passphrase'] = self.PASSPHRASE - - disk.Format('xfs', options, - dbus_interface=self.iface_prefix + '.Block') -@@ -617,14 +612,12 @@ class UdisksEncryptedTestLUKS2(UdisksEnc - - @udiskstestcase.tag_test(udiskstestcase.TestTags.UNSTABLE) - def test_integrity(self): -- passwd = 'test' -- - cryptsetup_version = _get_cryptsetup_version() - if cryptsetup_version < LooseVersion('2.2.0'): - self.skipTest('Integrity devices are not marked as internal in cryptsetup < 2.2.0') - - device = self.get_device(self.vdevs[0]) -- self._create_luks_integrity(self.vdevs[0], passwd) -+ self._create_luks_integrity(self.vdevs[0], self.PASSPHRASE) - - self.addCleanup(self._remove_luks, device) - self.udev_settle() -@@ -634,7 +627,7 @@ class UdisksEncryptedTestLUKS2(UdisksEnc - # the device is not opened, we need to read the UUID from LUKS metadata - luks_uuid = BlockDev.crypto_luks_uuid(self.vdevs[0]) - -- luks_path = device.Unlock('test', self.no_options, -+ luks_path = device.Unlock(self.PASSPHRASE, self.no_options, - dbus_interface=self.iface_prefix + '.Encrypted') - self.assertIsNotNone(luks_path) - self.assertTrue(os.path.exists('/dev/disk/by-uuid/%s' % luks_uuid)) -diff -up udisks-2.9.0/src/tests/integration-test.bak udisks-2.9.0/src/tests/integration-test ---- udisks-2.9.0/src/tests/integration-test.bak 2020-05-26 14:59:20.000000000 +0200 -+++ udisks-2.9.0/src/tests/integration-test 2023-06-02 16:59:52.841963720 +0200 -@@ -1321,7 +1321,7 @@ class Luks(UDisksTestCase): - - def setup_crypto_device(self): - self.fs_create(None, 'ext4', GLib.Variant('a{sv}', { -- 'encrypt.passphrase': GLib.Variant('s', 's3kr1t'), -+ 'encrypt.passphrase': GLib.Variant('s', 's3kr1ts3kr1t'), - 'label': GLib.Variant('s', 'treasure')})) - self.client.settle() - crypt_obj = self.client.get_object(self.udisks_block().get_object_path()) -@@ -1332,7 +1332,7 @@ class Luks(UDisksTestCase): - @staticmethod - def unlock_crypto_device(encrypted): - return encrypted.call_unlock_sync( -- 's3kr1t', no_options, None) -+ 's3kr1ts3kr1t', no_options, None) - - def tearDown(self): - """clean up behind failed test cases""" -@@ -1400,7 +1400,7 @@ class Luks(UDisksTestCase): - udev_dump = subprocess.Popen(['udevadm', 'info', '--export-db'], - stdout=subprocess.PIPE) - out = udev_dump.communicate()[0] -- self.assertFalse(b's3kr1t' in out, 'password in udev properties') -+ self.assertFalse(b's3kr1ts3kr1t' in out, 'password in udev properties') - self.assertFalse(b'essiv:sha' in out, 'key information in udev properties') - - finally: -@@ -1510,18 +1510,18 @@ class Luks(UDisksTestCase): - encrypted = self.setup_crypto_device() - # wrong password, has bytes after a trailing '\0' - self.assertRaises(GLib.GError, encrypted.call_unlock_sync, -- '', Luks.keyfile_options(b's3kr1t\0X'), None) -+ '', Luks.keyfile_options(b's3kr1ts3kr1t\0X'), None) - self.assertRaises(GLib.GError, encrypted.call_unlock_sync, -- '', Luks.keyfile_options(b's3kr1t\n'), None) -+ '', Luks.keyfile_options(b's3kr1ts3kr1t\n'), None) - # correct password, specified as keyfile -- encrypted.call_unlock_sync('', Luks.keyfile_options(b's3kr1t'), None) -+ encrypted.call_unlock_sync('', Luks.keyfile_options(b's3kr1ts3kr1t'), None) - encrypted.call_lock_sync(no_options, None) - - def test_plaintext_keyfile(self): - """Setup a device using a plaintext keyfile.""" - # Using a plaintext keyfile should be equivalent to passphrase - self.fs_create(None, 'ext4', GLib.Variant('a{sv}', { -- 'encrypt.passphrase': GLib.Variant('ay', _bytes_to_ay(b's3kr1t')), -+ 'encrypt.passphrase': GLib.Variant('ay', _bytes_to_ay(b's3kr1ts3kr1t')), - 'label': GLib.Variant('s', 'treasure')})) - - crypt_obj = self.client.get_object(self.udisks_block().get_object_path()) -@@ -1532,16 +1532,16 @@ class Luks(UDisksTestCase): - self.assertRaises(GLib.GError, encrypted.call_unlock_sync, - 'h4ckpassword', no_options, None) - self.assertRaises(GLib.GError, encrypted.call_unlock_sync, -- '', Luks.keyfile_options(b's3kr1t\0X'), None) -+ '', Luks.keyfile_options(b's3kr1ts3kr1t\0X'), None) - self.assertRaises(GLib.GError, encrypted.call_unlock_sync, -- '', Luks.keyfile_options(b's3kr1t\n'), None) -+ '', Luks.keyfile_options(b's3kr1ts3kr1t\n'), None) - - # correct password -- encrypted.call_unlock_sync('', Luks.keyfile_options(b's3kr1t'), None) -+ encrypted.call_unlock_sync('', Luks.keyfile_options(b's3kr1ts3kr1t'), None) - encrypted.call_lock_sync(no_options, None) - - # correct password, specified as passphrase -- encrypted.call_unlock_sync('s3kr1t', no_options, None) -+ encrypted.call_unlock_sync('s3kr1ts3kr1t', no_options, None) - encrypted.call_lock_sync(no_options, None) - - def test_binary_keyfile(self): -@@ -1607,11 +1607,11 @@ class Luks(UDisksTestCase): - encrypted = self.setup_crypto_device() - - # change: passphrase -> passphrase -- encrypted.call_change_passphrase_sync('s3kr1t', 'passphrase', no_options, None) -+ encrypted.call_change_passphrase_sync('s3kr1ts3kr1t', 'passphrase', no_options, None) - - # verify new password: - self.assertRaises(GLib.GError, encrypted.call_unlock_sync, -- 's3kr1t', no_options, None) -+ 's3kr1ts3kr1t', no_options, None) - encrypted.call_unlock_sync('passphrase', no_options, None) - encrypted.call_lock_sync(no_options, None) - -@@ -1644,7 +1644,7 @@ class Luks(UDisksTestCase): - - # change: keyfile -> passphrase - encrypted.call_change_passphrase_sync( -- '', 's3kr1t', GLib.Variant('a{sv}', { -+ '', 's3kr1ts3kr1t', GLib.Variant('a{sv}', { - 'old_keyfile_contents': GLib.Variant('ay', _bytes_to_ay(key_file_1)), - }), - None) -@@ -1652,7 +1652,7 @@ class Luks(UDisksTestCase): - # verify new password: - self.assertRaises(GLib.GError, encrypted.call_unlock_sync, - '', Luks.keyfile_options(key_file_1), None) -- encrypted.call_unlock_sync('s3kr1t', no_options, None) -+ encrypted.call_unlock_sync('s3kr1ts3kr1t', no_options, None) - encrypted.call_lock_sync(no_options, None) - - diff --git a/SOURCES/udisks-2.9.4-ext-mount-options.patch b/SOURCES/udisks-2.9.4-ext-mount-options.patch deleted file mode 100644 index 475eaec..0000000 --- a/SOURCES/udisks-2.9.4-ext-mount-options.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 2d5d2b7570b0f44c14b34b5dc831f174205c10f2 Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -Date: Wed, 15 Sep 2021 14:34:49 +0200 -Subject: [PATCH] mount options: Always use errors=remount-ro for ext - filesystems - -Default mount options are focused primarily on data safety, mounting -damaged ext2/3/4 filesystem as readonly would indicate something's wrong. ---- - data/builtin_mount_options.conf | 9 +++++++++ - src/tests/dbus-tests/test_80_filesystem.py | 6 ++++++ - 2 files changed, 15 insertions(+) - -diff --git a/data/builtin_mount_options.conf b/data/builtin_mount_options.conf -index 37715cfa4..e0bd0ee1f 100644 ---- a/data/builtin_mount_options.conf -+++ b/data/builtin_mount_options.conf -@@ -27,3 +27,12 @@ f2fs_allow=discard,nodiscard,compress_algorithm,compress_log_size,compress_exten - btrfs_allow=compress,compress-force,datacow,nodatacow,datasum,nodatasum,degraded,device,discard,nodiscard,subvol,subvolid,space_cache - - f2fs_allow=discard,nodiscard,compress_algorithm,compress_log_size,compress_extension,alloc_mode -+ -+ext2_defaults=errors=remount-ro -+ext2_allow=errors=remount-ro -+ -+ext3_defaults=errors=remount-ro -+ext3_allow=errors=remount-ro -+ -+ext4_defaults=errors=remount-ro -+ext4_allow=errors=remount-ro -diff --git a/src/tests/dbus-tests/test_80_filesystem.py b/src/tests/dbus-tests/test_80_filesystem.py -index 019880f57..2d1933240 100644 ---- a/src/tests/dbus-tests/test_80_filesystem.py -+++ b/src/tests/dbus-tests/test_80_filesystem.py -@@ -321,6 +321,8 @@ def test_mount_auto(self): - _ret, out = self.run_command('mount | grep %s' % block_fs_dev) - self.assertIn(mnt_path, out) - self.assertIn('ro', out) -+ if self._fs_name.startswith('ext'): -+ self.assertIn('errors=remount-ro', out) - - # dbus mountpoint - dbus_mounts = self.get_property(block_fs, '.Filesystem', 'MountPoints') -@@ -478,6 +480,10 @@ def test_custom_option(self, should_fail, dbus_option, should_be_present, config - if self._fs_name == "udf": - test_custom_option(self, False, None, False, "[defaults]\ndefaults=\nallow=exec,noexec,nodev,nosuid,atime,noatime,nodiratime,ro,rw,sync,dirsync,noload,uid=ignore,uid=forget\n") - test_custom_option(self, True, "uid=notallowed", True, "[defaults]\nallow=exec,noexec,nodev,nosuid,atime,noatime,nodiratime,ro,rw,sync,dirsync,noload,uid=ignore\n") -+ if self._fs_name.startswith("ext"): -+ test_custom_option(self, False, "errors=remount-ro", True, "", match_mount_option="errors=remount-ro") -+ test_custom_option(self, True, "errors=panic", False, "") -+ test_custom_option(self, True, "errors=continue", False, "") - - # udev rules overrides - test_readonly(self, False, "", udev_rules_content = { "UDISKS_MOUNT_OPTIONS_DEFAULTS": "rw" }) diff --git a/sources b/sources new file mode 100644 index 0000000..55741ad --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (udisks-2.10.90.tar.bz2) = 7e2507ee9b235925af6d367a0d55608f7a2780a07efba9db3c4bc06a3d42728ce74fc9edc42255fc9259aa3426c83eb164e1e99740a2d2c1b80ec2265b51df90 diff --git a/SOURCES/udisks-2.10.91-manager_loopsetup_fd_bounds.patch b/udisks-2.10.91-manager_loopsetup_fd_bounds.patch similarity index 100% rename from SOURCES/udisks-2.10.91-manager_loopsetup_fd_bounds.patch rename to udisks-2.10.91-manager_loopsetup_fd_bounds.patch diff --git a/udisks-2.11.0-lvm2-unused_device_detection-try_harder.patch b/udisks-2.11.0-lvm2-unused_device_detection-try_harder.patch new file mode 100644 index 0000000..eac0265 --- /dev/null +++ b/udisks-2.11.0-lvm2-unused_device_detection-try_harder.patch @@ -0,0 +1,33 @@ +From d747e73aaec2c4e2cf124646230159e8b45a5da8 Mon Sep 17 00:00:00 2001 +From: Tomas Bzatek +Date: Tue, 5 Nov 2024 17:01:00 +0100 +Subject: [PATCH] lvm2: Try opening for unused device detection harder + +Though the voluntary BSD locks cannot be used here due to opening +O_EXCL already, let's make several attempts before bailing out. +--- + modules/lvm2/udiskslvm2daemonutil.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/modules/lvm2/udiskslvm2daemonutil.c b/modules/lvm2/udiskslvm2daemonutil.c +index b2131f9ca..32736d20f 100644 +--- a/modules/lvm2/udiskslvm2daemonutil.c ++++ b/modules/lvm2/udiskslvm2daemonutil.c +@@ -65,9 +65,16 @@ udisks_daemon_util_lvm2_block_is_unused (UDisksBlock *block, + { + const gchar *device_file; + int fd; ++ gint num_tries = 0; + + device_file = udisks_block_get_device (block); +- fd = open (device_file, O_RDONLY | O_EXCL); ++ ++ while ((fd = open (device_file, O_RDONLY | O_EXCL)) < 0) ++ { ++ g_usleep (100 * 1000); /* microseconds */ ++ if (num_tries++ > 10) ++ break; ++ } + if (fd < 0) + { + g_set_error (error, UDISKS_ERROR, UDISKS_ERROR_FAILED, diff --git a/udisks-2.11.0-mdraid-inhibit-locks.patch b/udisks-2.11.0-mdraid-inhibit-locks.patch new file mode 100644 index 0000000..a7b68fb --- /dev/null +++ b/udisks-2.11.0-mdraid-inhibit-locks.patch @@ -0,0 +1,1011 @@ +From 2a1ee3b5e105d5e42fe536df282d86f1b226245d Mon Sep 17 00:00:00 2001 +From: Tomas Bzatek +Date: Tue, 21 Jan 2025 19:08:56 +0100 +Subject: [PATCH 1/5] udisksdaemon: Add 'no_inhibit' argument for job creation + functions + +Avoid placing system inhibit lock if desired. +--- + src/udisksdaemon.c | 34 ++++++++++++++++++++++++++++------ + src/udisksdaemon.h | 15 +++++++++++---- + 2 files changed, 39 insertions(+), 10 deletions(-) + +diff --git a/src/udisksdaemon.c b/src/udisksdaemon.c +index d7505d8b..8769486b 100644 +--- a/src/udisksdaemon.c ++++ b/src/udisksdaemon.c +@@ -822,6 +822,7 @@ common_job (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + gpointer job) + { + gchar *job_object_path; +@@ -832,9 +833,12 @@ common_job (UDisksDaemon *daemon, + job_data = g_new0 (JobData, 1); + job_data->daemon = g_object_ref (daemon); + /* register inhibitor to systemd logind while job is running */ +- operation_description = udisks_client_get_job_description_from_operation (job_operation); +- job_data->inhibit_cookie = udisks_daemon_util_inhibit_system_sync (operation_description); +- g_free (operation_description); ++ if (!no_inhibit) ++ { ++ operation_description = udisks_client_get_job_description_from_operation (job_operation); ++ job_data->inhibit_cookie = udisks_daemon_util_inhibit_system_sync (operation_description); ++ g_free (operation_description); ++ } + + if (object != NULL) + udisks_base_job_add_object (UDISKS_BASE_JOB (job), object); +@@ -863,6 +867,7 @@ common_job (UDisksDaemon *daemon, + * @object: (allow-none): A #UDisksObject to add to the job or %NULL. + * @job_operation: The operation for the job. + * @job_started_by_uid: The user who started the job. ++ * @no_inhibit: Avoid placing system inhibitor lock. + * @cancellable: A #GCancellable or %NULL. + * + * Launches a new simple job. +@@ -879,6 +884,7 @@ udisks_daemon_launch_simple_job (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable) + { + UDisksSimpleJob *job; +@@ -886,7 +892,7 @@ udisks_daemon_launch_simple_job (UDisksDaemon *daemon, + g_return_val_if_fail (UDISKS_IS_DAEMON (daemon), NULL); + + job = udisks_simple_job_new (daemon, cancellable); +- return common_job (daemon, object, job_operation, job_started_by_uid, job); ++ return common_job (daemon, object, job_operation, job_started_by_uid, no_inhibit, job); + } + + /* ---------------------------------------------------------------------------------------------------- */ +@@ -897,6 +903,7 @@ udisks_daemon_launch_simple_job (UDisksDaemon *daemon, + * @object: (allow-none): A #UDisksObject to add to the job or %NULL. + * @job_operation: The operation for the job. + * @job_started_by_uid: The user who started the job. ++ * @no_inhibit: Avoid placing system inhibitor lock. + * @job_func: The function to run in another thread. + * @user_data: User data to pass to @job_func. + * @user_data_free_func: Function to free @user_data with or %NULL. +@@ -926,6 +933,7 @@ udisks_daemon_launch_threaded_job (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + UDisksThreadedJobFunc job_func, + gpointer user_data, + GDestroyNotify user_data_free_func, +@@ -941,7 +949,7 @@ udisks_daemon_launch_threaded_job (UDisksDaemon *daemon, + user_data_free_func, + daemon, + cancellable); +- return common_job (daemon, object, job_operation, job_started_by_uid, job); ++ return common_job (daemon, object, job_operation, job_started_by_uid, no_inhibit, job); + } + + /* ---------------------------------------------------------------------------------------------------- */ +@@ -952,6 +960,7 @@ udisks_daemon_launch_threaded_job (UDisksDaemon *daemon, + * @object: (allow-none): A #UDisksObject to add to the job or %NULL. + * @job_operation: The operation for the job. + * @job_started_by_uid: The user who started the job. ++ * @no_inhibit: Avoid placing system inhibitor lock. + * @cancellable: A #GCancellable or %NULL. + * @run_as_uid: The #uid_t to run the command as. + * @run_as_euid: The effective #uid_t to run the command as. +@@ -980,6 +989,7 @@ udisks_daemon_launch_spawned_job (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable, + uid_t run_as_uid, + uid_t run_as_euid, +@@ -1003,6 +1013,7 @@ udisks_daemon_launch_spawned_job (UDisksDaemon *daemon, + object, + job_operation, + job_started_by_uid, ++ no_inhibit, + cancellable, + run_as_uid, + run_as_euid, +@@ -1021,6 +1032,7 @@ udisks_daemon_launch_spawned_job (UDisksDaemon *daemon, + * @object: (allow-none): A #UDisksObject to add to the job or %NULL. + * @job_operation: The operation for the job. + * @job_started_by_uid: The user who started the job. ++ * @no_inhibit: Avoid placing system inhibitor lock. + * @cancellable: A #GCancellable or %NULL. + * @run_as_uid: The #uid_t to run the command as. + * @run_as_euid: The effective #uid_t to run the command as. +@@ -1054,6 +1066,7 @@ udisks_daemon_launch_spawned_job_gstring ( + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable, + uid_t run_as_uid, + uid_t run_as_euid, +@@ -1075,7 +1088,7 @@ udisks_daemon_launch_spawned_job_gstring ( + job = udisks_spawned_job_new (command_line, input_string, run_as_uid, run_as_euid, daemon, cancellable); + g_free (command_line); + +- return common_job (daemon, object, job_operation, job_started_by_uid, job); ++ return common_job (daemon, object, job_operation, job_started_by_uid, no_inhibit, job); + } + + /* ---------------------------------------------------------------------------------------------------- */ +@@ -1120,6 +1133,7 @@ spawned_job_sync_on_completed (UDisksJob *job, + * @object: (allow-none): A #UDisksObject to add to the job or %NULL. + * @job_operation: The operation for the job. + * @job_started_by_uid: The user who started the job. ++ * @no_inhibit: Avoid placing system inhibitor lock. + * @cancellable: A #GCancellable or %NULL. + * @run_as_uid: The #uid_t to run the command as. + * @run_as_euid: The effective #uid_t to run the command as. +@@ -1139,6 +1153,7 @@ udisks_daemon_launch_spawned_job_sync (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable, + uid_t run_as_uid, + uid_t run_as_euid, +@@ -1164,6 +1179,7 @@ udisks_daemon_launch_spawned_job_sync (UDisksDaemon *daemon, + object, + job_operation, + job_started_by_uid, ++ no_inhibit, + cancellable, + run_as_uid, + run_as_euid, +@@ -1184,6 +1200,7 @@ udisks_daemon_launch_spawned_job_sync (UDisksDaemon *daemon, + * @object: (allow-none): A #UDisksObject to add to the job or %NULL. + * @job_operation: The operation for the job. + * @job_started_by_uid: The user who started the job. ++ * @no_inhibit: Avoid placing system inhibitor lock. + * @cancellable: A #GCancellable or %NULL. + * @run_as_uid: The #uid_t to run the command as. + * @run_as_euid: The effective #uid_t to run the command as. +@@ -1207,6 +1224,7 @@ udisks_daemon_launch_spawned_job_gstring_sync (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable, + uid_t run_as_uid, + uid_t run_as_euid, +@@ -1239,6 +1257,7 @@ udisks_daemon_launch_spawned_job_gstring_sync (UDisksDaemon *daemon, + object, + job_operation, + job_started_by_uid, ++ no_inhibit, + cancellable, + run_as_uid, + run_as_euid, +@@ -1318,6 +1337,7 @@ udisks_bd_thread_disable_progress (void) + * @object: (allow-none): A #UDisksObject to add to the job or %NULL. + * @job_operation: The operation for the job. + * @job_started_by_uid: The user who started the job. ++ * @no_inhibit: Avoid placing system inhibitor lock. + * @job_func: The function to run in another thread. + * @user_data: User data to pass to @job_func. + * @user_data_free_func: Function to free @user_data with or %NULL. +@@ -1334,6 +1354,7 @@ udisks_daemon_launch_threaded_job_sync (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + UDisksThreadedJobFunc job_func, + gpointer user_data, + GDestroyNotify user_data_free_func, +@@ -1350,6 +1371,7 @@ udisks_daemon_launch_threaded_job_sync (UDisksDaemon *daemon, + object, + job_operation, + job_started_by_uid, ++ no_inhibit, + job_func, + user_data, + user_data_free_func, +diff --git a/src/udisksdaemon.h b/src/udisksdaemon.h +index 2edbaf3a..2f612c67 100644 +--- a/src/udisksdaemon.h ++++ b/src/udisksdaemon.h +@@ -110,21 +110,24 @@ UDisksBaseJob *udisks_daemon_launch_simple_job (UDisksDaemon * + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable); + UDisksBaseJob *udisks_daemon_launch_spawned_job (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable, + uid_t run_as_uid, + uid_t run_as_euid, + const gchar *input_string, + const gchar *command_line_format, +- ...) G_GNUC_PRINTF (9, 10); ++ ...) G_GNUC_PRINTF (10, 11); + gboolean udisks_daemon_launch_spawned_job_sync (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable, + uid_t run_as_uid, + uid_t run_as_euid, +@@ -132,21 +135,23 @@ gboolean udisks_daemon_launch_spawned_job_sync (UDisksDaemon + gchar **out_message, + const gchar *input_string, + const gchar *command_line_format, +- ...) G_GNUC_PRINTF (11, 12); ++ ...) G_GNUC_PRINTF (12, 13); + UDisksBaseJob *udisks_daemon_launch_spawned_job_gstring (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable, + uid_t run_as_uid, + uid_t run_as_euid, + GString *input_string, + const gchar *command_line_format, +- ...) G_GNUC_PRINTF (9, 10); ++ ...) G_GNUC_PRINTF (10, 11); + gboolean udisks_daemon_launch_spawned_job_gstring_sync (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + GCancellable *cancellable, + uid_t run_as_uid, + uid_t run_as_euid, +@@ -154,11 +159,12 @@ gboolean udisks_daemon_launch_spawned_job_gstring_sync (UDisksD + gchar **out_message, + GString *input_string, + const gchar *command_line_format, +- ...) G_GNUC_PRINTF (11, 12); ++ ...) G_GNUC_PRINTF (12, 13); + UDisksBaseJob *udisks_daemon_launch_threaded_job (UDisksDaemon *daemon, + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + UDisksThreadedJobFunc job_func, + gpointer user_data, + GDestroyNotify user_data_free_func, +@@ -168,6 +174,7 @@ gboolean udisks_daemon_launch_threaded_job_sync (UDisksDaemon + UDisksObject *object, + const gchar *job_operation, + uid_t job_started_by_uid, ++ gboolean no_inhibit, + UDisksThreadedJobFunc job_func, + gpointer user_data, + GDestroyNotify user_data_free_func, +-- +2.48.1 + +From 322863e6b49ae011b8d2f1e2c8741f56dabbb5f3 Mon Sep 17 00:00:00 2001 +From: Tomas Bzatek +Date: Tue, 21 Jan 2025 19:15:45 +0100 +Subject: [PATCH 2/5] daemon: Align to the no_inhibit job argument change + +--- + src/udiskslinuxblock.c | 7 ++++++- + src/udiskslinuxdrive.c | 1 + + src/udiskslinuxdriveata.c | 3 ++- + src/udiskslinuxencrypted.c | 6 ++++++ + src/udiskslinuxfilesystem.c | 10 ++++++++++ + src/udiskslinuxloop.c | 1 + + src/udiskslinuxmanager.c | 1 + + src/udiskslinuxmdraid.c | 7 +++++++ + src/udiskslinuxnvmecontroller.c | 2 ++ + src/udiskslinuxnvmenamespace.c | 1 + + src/udiskslinuxpartition.c | 6 ++++++ + src/udiskslinuxpartitiontable.c | 1 + + src/udiskslinuxswapspace.c | 4 ++++ + src/udisksstate.c | 2 ++ + 14 files changed, 50 insertions(+), 2 deletions(-) + +diff --git a/src/udiskslinuxblock.c b/src/udiskslinuxblock.c +index 5b5588b2..008d1265 100644 +--- a/src/udiskslinuxblock.c ++++ b/src/udiskslinuxblock.c +@@ -2482,7 +2482,7 @@ erase_device (UDisksBlock *block, + goto out; + } + +- job = udisks_daemon_launch_simple_job (daemon, object, "format-erase", caller_uid, NULL); ++ job = udisks_daemon_launch_simple_job (daemon, object, "format-erase", caller_uid, FALSE, NULL); + udisks_base_job_set_auto_estimate (UDISKS_BASE_JOB (job), TRUE); + udisks_job_set_progress_valid (UDISKS_JOB (job), TRUE); + +@@ -3185,6 +3185,7 @@ format_create_luks (UDisksDaemon *daemon, + object, + "format-mkfs", + caller_uid, ++ FALSE, + luks_format_job_func, + &crypto_job_data, + NULL, /* user_data_free_func */ +@@ -3229,6 +3230,7 @@ format_create_luks (UDisksDaemon *daemon, + object, + "format-mkfs", + caller_uid, ++ FALSE, + luks_open_job_func, + &crypto_job_data, + NULL, /* user_data_free_func */ +@@ -3571,6 +3573,7 @@ udisks_linux_block_handle_format (UDisksBlock *block, + object, + "format-mkfs", + caller_uid, ++ FALSE, + format_job_func, + &format_job_data, + NULL, /* user_data_free_func */ +@@ -3679,6 +3682,7 @@ udisks_linux_block_handle_format (UDisksBlock *block, + object, + "format-mkfs", + caller_uid, ++ FALSE, + format_job_func, + &format_job_data, + NULL, /* user_data_free_func */ +@@ -4268,6 +4272,7 @@ handle_restore_encrypted_header (UDisksBlock *encrypted, + UDISKS_OBJECT (object), + "block-restore-encrypted-header", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +diff --git a/src/udiskslinuxdrive.c b/src/udiskslinuxdrive.c +index 18b9ae4f..93ca3813 100644 +--- a/src/udiskslinuxdrive.c ++++ b/src/udiskslinuxdrive.c +@@ -1142,6 +1142,7 @@ handle_eject (UDisksDrive *_drive, + if (!udisks_daemon_launch_spawned_job_sync (daemon, + UDISKS_OBJECT (object), + "drive-eject", caller_uid, ++ FALSE, + NULL, /* GCancellable */ + 0, /* uid_t run_as_uid */ + 0, /* uid_t run_as_euid */ +diff --git a/src/udiskslinuxdriveata.c b/src/udiskslinuxdriveata.c +index 0675d1ed..dd7b0b0d 100644 +--- a/src/udiskslinuxdriveata.c ++++ b/src/udiskslinuxdriveata.c +@@ -1194,6 +1194,7 @@ handle_smart_selftest_start (UDisksDriveAta *_drive, + drive->selftest_job = UDISKS_THREADED_JOB (udisks_daemon_launch_threaded_job (daemon, + UDISKS_OBJECT (object), + "ata-smart-selftest", caller_uid, ++ FALSE, + selftest_job_func, + g_object_ref (drive), + g_object_unref, +@@ -2226,7 +2227,7 @@ udisks_linux_drive_ata_secure_erase_sync (UDisksLinuxDriveAta *drive, + job = udisks_daemon_launch_simple_job (daemon, + UDISKS_OBJECT (object), + enhanced ? "ata-enhanced-secure-erase" : "ata-secure-erase", +- caller_uid, NULL); ++ caller_uid, FALSE, NULL); + udisks_job_set_cancelable (UDISKS_JOB (job), FALSE); + + /* A value of 510 (255 in the IDENTIFY DATA register) means "erase +diff --git a/src/udiskslinuxencrypted.c b/src/udiskslinuxencrypted.c +index f6ae85c7..bb1f9e10 100644 +--- a/src/udiskslinuxencrypted.c ++++ b/src/udiskslinuxencrypted.c +@@ -588,6 +588,7 @@ handle_unlock (UDisksEncrypted *encrypted, + object, + "encrypted-unlock", + caller_uid, ++ FALSE, + open_func, + &data, + NULL, /* user_data_free_func */ +@@ -807,6 +808,7 @@ udisks_linux_encrypted_lock (UDisksLinuxEncrypted *encrypted, + object, + "encrypted-lock", + caller_uid, ++ FALSE, + close_func, + &data, + NULL, /* user_data_free_func */ +@@ -991,6 +993,7 @@ handle_change_passphrase (UDisksEncrypted *encrypted, + object, + "encrypted-modify", + caller_uid, ++ FALSE, + luks_change_key_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -1155,6 +1158,7 @@ handle_resize (UDisksEncrypted *encrypted, + UDISKS_OBJECT (object), + "encrypted-resize", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +@@ -1296,6 +1300,7 @@ handle_convert (UDisksEncrypted *encrypted, + UDISKS_OBJECT (object), + "encrypted-convert", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +@@ -1389,6 +1394,7 @@ handle_header_backup (UDisksEncrypted *encrypted, + UDISKS_OBJECT (object), + "encrypted-header-backup", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +diff --git a/src/udiskslinuxfilesystem.c b/src/udiskslinuxfilesystem.c +index e7df067d..b1974483 100644 +--- a/src/udiskslinuxfilesystem.c ++++ b/src/udiskslinuxfilesystem.c +@@ -983,6 +983,7 @@ handle_mount_fstab (UDisksDaemon *daemon, + UDISKS_OBJECT (object), + "filesystem-mount", + mount_fstab_as_root ? 0 : caller_uid, ++ FALSE, + NULL /* cancellable */); + + /* XXX: using run_as_uid for root doesn't work even if the caller is already root */ +@@ -1208,6 +1209,7 @@ handle_mount_dynamic (UDisksDaemon *daemon, + UDISKS_OBJECT (object), + "filesystem-mount", + 0, ++ FALSE, + NULL /* cancellable */); + + success = FALSE; +@@ -1564,6 +1566,7 @@ handle_unmount (UDisksFilesystem *filesystem, + UDISKS_OBJECT (object), + "filesystem-unmount", + unmount_fstab_as_root ? 0 : caller_uid, ++ FALSE, + NULL); + + if (!unmount_fstab_as_root && caller_uid != 0) +@@ -1669,6 +1672,7 @@ handle_unmount (UDisksFilesystem *filesystem, + UDISKS_OBJECT (object), + "filesystem-unmount", + 0, ++ FALSE, + NULL); + + if (!bd_fs_unmount (mount_point ? mount_point : udisks_block_get_device (block), +@@ -1850,6 +1854,7 @@ handle_set_label (UDisksFilesystem *filesystem, + object, + "filesystem-modify", + caller_uid, ++ FALSE, + NULL /* cancellable */); + if (job == NULL) + { +@@ -2030,6 +2035,7 @@ handle_resize (UDisksFilesystem *filesystem, + UDISKS_OBJECT (object), + "filesystem-resize", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +@@ -2201,6 +2207,7 @@ handle_repair (UDisksFilesystem *filesystem, + UDISKS_OBJECT (object), + "filesystem-repair", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +@@ -2369,6 +2376,7 @@ handle_check (UDisksFilesystem *filesystem, + UDISKS_OBJECT (object), + "filesystem-check", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +@@ -2518,6 +2526,7 @@ handle_take_ownership (UDisksFilesystem *filesystem, + UDISKS_OBJECT (object), + "filesystem-modify", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +@@ -2698,6 +2707,7 @@ handle_set_uuid (UDisksFilesystem *filesystem, + object, + "filesystem-modify", + caller_uid, ++ FALSE, + NULL /* cancellable */); + if (job == NULL) + { +diff --git a/src/udiskslinuxloop.c b/src/udiskslinuxloop.c +index 500df6ef..ee690991 100644 +--- a/src/udiskslinuxloop.c ++++ b/src/udiskslinuxloop.c +@@ -249,6 +249,7 @@ handle_delete (UDisksLoop *loop, + UDISKS_OBJECT(object), + "loop-setup", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +diff --git a/src/udiskslinuxmanager.c b/src/udiskslinuxmanager.c +index 139be7ca..4e633284 100644 +--- a/src/udiskslinuxmanager.c ++++ b/src/udiskslinuxmanager.c +@@ -598,6 +598,7 @@ handle_mdraid_create (UDisksManager *_object, + NULL, + "mdraid-create", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +diff --git a/src/udiskslinuxmdraid.c b/src/udiskslinuxmdraid.c +index 176b0258..a24c78c2 100644 +--- a/src/udiskslinuxmdraid.c ++++ b/src/udiskslinuxmdraid.c +@@ -371,6 +371,7 @@ udisks_linux_mdraid_update (UDisksLinuxMDRaid *mdraid, + UDISKS_OBJECT (object), + sync_action_to_job_id (sync_action), + 0, ++ FALSE, + NULL /* cancellable */); + + /* Mark the job as not cancellable. It simply has to finish... */ +@@ -643,6 +644,7 @@ handle_start (UDisksMDRaid *_mdraid, + UDISKS_OBJECT (object), + "md-raid-start", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -805,6 +807,7 @@ udisks_linux_mdraid_stop (UDisksMDRaid *_mdraid, + UDISKS_OBJECT (object), + "md-raid-stop", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -1026,6 +1029,7 @@ handle_remove_device (UDisksMDRaid *_mdraid, + UDISKS_OBJECT (object), + "md-raid-remove-device", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -1170,6 +1174,7 @@ handle_add_device (UDisksMDRaid *_mdraid, + UDISKS_OBJECT (object), + "md-raid-add-device", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -1286,6 +1291,7 @@ handle_set_bitmap_location (UDisksMDRaid *_mdraid, + UDISKS_OBJECT (object), + "md-raid-set-bitmap", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -1403,6 +1409,7 @@ handle_request_sync_action (UDisksMDRaid *_mdraid, + UDISKS_OBJECT (object), + sync_action_to_job_id (sync_action), + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +diff --git a/src/udiskslinuxnvmecontroller.c b/src/udiskslinuxnvmecontroller.c +index b032467e..dff3ab06 100644 +--- a/src/udiskslinuxnvmecontroller.c ++++ b/src/udiskslinuxnvmecontroller.c +@@ -873,6 +873,7 @@ handle_smart_selftest_start (UDisksNVMeController *_ctrl, + UDISKS_OBJECT (object), + "nvme-selftest", + caller_uid, ++ FALSE, + selftest_job_func, + g_object_ref (ctrl), + (GDestroyNotify) selftest_job_func_done, +@@ -1298,6 +1299,7 @@ handle_sanitize_start (UDisksNVMeController *_object, + UDISKS_OBJECT (object), + "nvme-sanitize", + caller_uid, ++ FALSE, + sanitize_job_func, + g_object_ref (ctrl), + (GDestroyNotify) sanitize_job_func_done, +diff --git a/src/udiskslinuxnvmenamespace.c b/src/udiskslinuxnvmenamespace.c +index 076c2285..ddb03e22 100644 +--- a/src/udiskslinuxnvmenamespace.c ++++ b/src/udiskslinuxnvmenamespace.c +@@ -429,6 +429,7 @@ handle_format_namespace (UDisksNVMeNamespace *_ns, + UDISKS_OBJECT (object), + "nvme-format-ns", + caller_uid, ++ FALSE, + format_ns_job_func, + data, + (GDestroyNotify) format_ns_job_func_done, +diff --git a/src/udiskslinuxpartition.c b/src/udiskslinuxpartition.c +index c4433627..2e07ca2c 100644 +--- a/src/udiskslinuxpartition.c ++++ b/src/udiskslinuxpartition.c +@@ -389,6 +389,7 @@ handle_set_flags (UDisksPartition *partition, + UDISKS_OBJECT (object), + "partition-modify", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -527,6 +528,7 @@ handle_set_name (UDisksPartition *partition, + UDISKS_OBJECT (object), + "partition-modify", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -669,6 +671,7 @@ handle_set_uuid (UDisksPartition *partition, + UDISKS_OBJECT (object), + "partition-modify", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -774,6 +777,7 @@ udisks_linux_partition_set_type_sync (UDisksLinuxPartition *partition, + UDISKS_OBJECT (object), + "partition-modify", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -984,6 +988,7 @@ handle_resize (UDisksPartition *partition, + UDISKS_OBJECT (object), + "partition-modify", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +@@ -1115,6 +1120,7 @@ handle_delete (UDisksPartition *partition, + UDISKS_OBJECT (object), + "partition-delete", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +diff --git a/src/udiskslinuxpartitiontable.c b/src/udiskslinuxpartitiontable.c +index 528b22ff..09bd545b 100644 +--- a/src/udiskslinuxpartitiontable.c ++++ b/src/udiskslinuxpartitiontable.c +@@ -422,6 +422,7 @@ udisks_linux_partition_table_handle_create_partition (UDisksPartitionTable *ta + UDISKS_OBJECT (object), + "partition-create", + caller_uid, ++ FALSE, + NULL); + + if (job == NULL) +diff --git a/src/udiskslinuxswapspace.c b/src/udiskslinuxswapspace.c +index 0c4fd9a4..4c51bd88 100644 +--- a/src/udiskslinuxswapspace.c ++++ b/src/udiskslinuxswapspace.c +@@ -201,6 +201,7 @@ handle_start (UDisksSwapspace *swapspace, + object, + "swapspace-start", + caller_uid, ++ FALSE, + start_job_func, + object, + NULL, /* user_data_free_func */ +@@ -299,6 +300,7 @@ handle_stop (UDisksSwapspace *swapspace, + object, + "swapspace-stop", + caller_uid, ++ FALSE, + stop_job_func, + object, + NULL, /* user_data_free_func */ +@@ -376,6 +378,7 @@ handle_set_label (UDisksSwapspace *swapspace, + UDISKS_OBJECT (object), + "swapspace-modify", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +@@ -462,6 +465,7 @@ handle_set_uuid (UDisksSwapspace *swapspace, + UDISKS_OBJECT (object), + "swapspace-modify", + caller_uid, ++ FALSE, + NULL); + if (job == NULL) + { +diff --git a/src/udisksstate.c b/src/udisksstate.c +index df6ef337..7323036d 100644 +--- a/src/udisksstate.c ++++ b/src/udisksstate.c +@@ -783,6 +783,7 @@ udisks_state_check_mounted_fs_entry (UDisksState *state, + if (!udisks_daemon_launch_spawned_job_sync (state->daemon, + NULL, /* UDisksObject */ + "cleanup", 0, /* StartedByUID */ ++ FALSE, + NULL, /* GCancellable */ + 0, /* uid_t run_as_uid */ + 0, /* uid_t run_as_euid */ +@@ -1247,6 +1248,7 @@ udisks_state_check_unlocked_crypto_dev_entry (UDisksState *state, + NULL, /* UDisksObject */ + "cleanup", + 0, /* StartedByUID */ ++ FALSE, + luks_close_job_func, + &data, + NULL, /* user_data_free_func */ +-- +2.48.1 + +From 6d3ca4c21d3a9724aab4c021cc9c5c0b3fc39a1e Mon Sep 17 00:00:00 2001 +From: Tomas Bzatek +Date: Tue, 21 Jan 2025 19:16:11 +0100 +Subject: [PATCH 3/5] lvm2: Align to the no_inhibit job argument change + +--- + modules/lvm2/udiskslinuxlogicalvolume.c | 9 +++++++++ + modules/lvm2/udiskslinuxmanagerlvm2.c | 2 ++ + modules/lvm2/udiskslinuxvdovolume.c | 2 ++ + modules/lvm2/udiskslinuxvolumegroup.c | 8 ++++++++ + 4 files changed, 21 insertions(+) + +diff --git a/modules/lvm2/udiskslinuxlogicalvolume.c b/modules/lvm2/udiskslinuxlogicalvolume.c +index c0c43c03..f517f7cc 100644 +--- a/modules/lvm2/udiskslinuxlogicalvolume.c ++++ b/modules/lvm2/udiskslinuxlogicalvolume.c +@@ -593,6 +593,7 @@ handle_delete (UDisksLogicalVolume *_volume, + UDISKS_OBJECT (object), + "lvm-lvol-delete", + caller_uid, ++ FALSE, + lvremove_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -669,6 +670,7 @@ handle_repair (UDisksLogicalVolume *_volume, + UDISKS_OBJECT (object), + "lvm-lvol-repair", + caller_uid, ++ FALSE, + lvrepair_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -766,6 +768,7 @@ handle_rename (UDisksLogicalVolume *_volume, + UDISKS_OBJECT (object), + "lvm-lvol-rename", + caller_uid, ++ FALSE, + lvrename_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -848,6 +851,7 @@ handle_resize (UDisksLogicalVolume *_volume, + UDISKS_OBJECT (object), + "lvm-lvol-resize", + caller_uid, ++ FALSE, + lvresize_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -937,6 +941,7 @@ handle_activate (UDisksLogicalVolume *_volume, + UDISKS_OBJECT (object), + "lvm-lvol-activate", + caller_uid, ++ FALSE, + lvactivate_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -1005,6 +1010,7 @@ handle_deactivate (UDisksLogicalVolume *_volume, + UDISKS_OBJECT (object), + "lvm-lvol-deactivate", + caller_uid, ++ FALSE, + lvdeactivate_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -1074,6 +1080,7 @@ handle_create_snapshot (UDisksLogicalVolume *_volume, + UDISKS_OBJECT (object), + "lvm-lvol-snapshot", + caller_uid, ++ FALSE, + lvsnapshot_create_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -1134,6 +1141,7 @@ handle_cache_attach (UDisksLogicalVolume *volume_, + UDISKS_OBJECT (object), + "lvm-lv-make-cache", + caller_uid, ++ FALSE, + lvcache_attach_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -1185,6 +1193,7 @@ handle_cache_detach_or_split (UDisksLogicalVolume *volume_, + UDISKS_OBJECT (object), + "lvm-lv-split-cache", + caller_uid, ++ FALSE, + lvcache_detach_job_func, + &data, + NULL, /* user_data_free_func */ +diff --git a/modules/lvm2/udiskslinuxmanagerlvm2.c b/modules/lvm2/udiskslinuxmanagerlvm2.c +index 5c06b921..7cd96384 100644 +--- a/modules/lvm2/udiskslinuxmanagerlvm2.c ++++ b/modules/lvm2/udiskslinuxmanagerlvm2.c +@@ -338,6 +338,7 @@ handle_volume_group_create (UDisksManagerLVM2 *_object, + NULL, + "lvm-pv-create", + caller_uid, ++ FALSE, + pvcreate_job_func, + &pv_data, + NULL, /* user_data_free_func */ +@@ -363,6 +364,7 @@ handle_volume_group_create (UDisksManagerLVM2 *_object, + NULL, + "lvm-vg-create", + caller_uid, ++ FALSE, + vgcreate_job_func, + &data, + NULL, /* user_data_free_func */ +diff --git a/modules/lvm2/udiskslinuxvdovolume.c b/modules/lvm2/udiskslinuxvdovolume.c +index 19164d96..64247dfc 100644 +--- a/modules/lvm2/udiskslinuxvdovolume.c ++++ b/modules/lvm2/udiskslinuxvdovolume.c +@@ -262,6 +262,7 @@ _set_compression_deduplication (UDisksVDOVolume *_volume, + UDISKS_OBJECT (object), + "lvm-vdo-dedup-comp", + caller_uid, ++ FALSE, + compression ? lv_vdo_compression_job_func : lv_vdo_deduplication_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -340,6 +341,7 @@ _vdo_resize (UDisksLinuxLogicalVolumeObject *object, + UDISKS_OBJECT (object), + "lvm-lvol-resize", + caller_uid, ++ FALSE, + lvresize_job_func, + &data, + NULL, /* user_data_free_func */ +diff --git a/modules/lvm2/udiskslinuxvolumegroup.c b/modules/lvm2/udiskslinuxvolumegroup.c +index 5cb904e2..e1c6d76e 100644 +--- a/modules/lvm2/udiskslinuxvolumegroup.c ++++ b/modules/lvm2/udiskslinuxvolumegroup.c +@@ -336,6 +336,7 @@ handle_delete (UDisksVolumeGroup *_group, + UDISKS_OBJECT (object), + "lvm-vg-delete", + caller_uid, ++ FALSE, + vgremove_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -457,6 +458,7 @@ handle_rename (UDisksVolumeGroup *_group, + UDISKS_OBJECT (object), + "lvm-vg-rename", + caller_uid, ++ FALSE, + vgrename_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -585,6 +587,7 @@ handle_add_device (UDisksVolumeGroup *_group, + UDISKS_OBJECT (object), + "lvm-pv-create", + caller_uid, ++ FALSE, + pvcreate_job_func, + &pv_data, + NULL, /* user_data_free_func */ +@@ -610,6 +613,7 @@ handle_add_device (UDisksVolumeGroup *_group, + UDISKS_OBJECT (object), + "lvm-vg-add-device", + caller_uid, ++ FALSE, + vgextend_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -729,6 +733,7 @@ handle_remove_common (UDisksVolumeGroup *_group, + UDISKS_OBJECT (object), + job_operation, + caller_uid, ++ FALSE, + job_func, + &data, + NULL, /* user_data_free_func */ +@@ -751,6 +756,7 @@ handle_remove_common (UDisksVolumeGroup *_group, + UDISKS_OBJECT (object), + "pv-format-erase", + caller_uid, ++ FALSE, + pvremove_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -854,6 +860,7 @@ handle_remove_missing_physical_volumes (UDisksVolumeGroup *_group, + UDISKS_OBJECT (object), + "lvm-vg-rem-device", + caller_uid, ++ FALSE, + vgreduce_job_func, + &data, + NULL, /* user_data_free_func */ +@@ -1098,6 +1105,7 @@ handle_create_volume (UDisksVolumeGroup *_group, + UDISKS_OBJECT (object), + "lvm-vg-create-volume", + caller_uid, ++ FALSE, + create_function, + &data, + NULL, /* user_data_free_func */ +-- +2.48.1 + +From 6e8948401251f60e5cd8989ec4992974b375f4ed Mon Sep 17 00:00:00 2001 +From: Tomas Bzatek +Date: Tue, 21 Jan 2025 19:19:05 +0100 +Subject: [PATCH 4/5] udiskslinuxmdraid: Avoid putting inhibit lock for + externally started operations + +UDisks publishes a new job object whenever it sees an array in sync, +repair or generally any other operation running. However this involves +acquiring and holding a system inhibit lock for the whole duration +of the operation, which for large disks may take hours or days. +Besides, mdraid resync is a restartable operation, defeating the purpose +for an inhibit lock. + +This is also causing problems for installation environments where +UDisks is blocking post-installation reboot until the operation is done. +--- + src/udiskslinuxmdraid.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/udiskslinuxmdraid.c b/src/udiskslinuxmdraid.c +index a24c78c2..0ca9d681 100644 +--- a/src/udiskslinuxmdraid.c ++++ b/src/udiskslinuxmdraid.c +@@ -371,8 +371,8 @@ udisks_linux_mdraid_update (UDisksLinuxMDRaid *mdraid, + UDISKS_OBJECT (object), + sync_action_to_job_id (sync_action), + 0, +- FALSE, +- NULL /* cancellable */); ++ TRUE, /* no_inhibit */ ++ NULL /* cancellable */); + + /* Mark the job as not cancellable. It simply has to finish... */ + udisks_job_set_cancelable (UDISKS_JOB (job), FALSE); +-- +2.48.1 + diff --git a/SPECS/udisks2.spec b/udisks2.spec similarity index 54% rename from SPECS/udisks2.spec rename to udisks2.spec index 37cf5ab..1168ac8 100644 --- a/SPECS/udisks2.spec +++ b/udisks2.spec @@ -1,120 +1,48 @@ -%global glib2_version 2.36 +%global glib2_version 2.68 %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.24 +%global libblockdev_version 3.2 -%define with_bcache 1 %define with_btrfs 1 -%define with_vdo 0 %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 || %{with_btrfs} == 0 +# btrfs is not available on RHEL +%if 0%{?rhel} %define with_btrfs 0 %endif -# vdo is not available on Fedora -%if (0%{?fedora}) || %{with_vdo} == 0 -%define with_vdo 0 -%endif - -# vdo is not available on i686 -%ifnarch x86_64 aarch64 ppc64le s390x -%define with_vdo 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.0 -Release: 16%{?dist}.1 -License: GPLv2+ -Group: System Environment/Libraries +Version: 2.10.90 +Release: 6%{?dist} +License: GPL-2.0-or-later 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.9.1-teardown-needle-match.patch -Patch1: udisks-2.9.1-lvm_vdo-test_resize_physical-size.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1855785 -Patch2: udisks-2.9.1-drive_ata_tests.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2120697 -Patch3: udisks-2.10.0-block_format_ata_secure_erase.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2135773 -Patch4: udisks-2.10.0-iscsi-auth-info.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1845973 -Patch10: udisks-2.9.1-daemon-Always-flush-interface-property-changes.patch -Patch11: udisks-2.9.1-lvm2-Always-flush-interface-property-changes.patch -Patch12: udisks-2.9.1-lsm-Always-flush-interface-property-changes.patch -Patch13: udisks-2.9.1-iscsi-Always-flush-interface-property-changes.patch -Patch14: udisks-2.9.1-zram-Always-flush-interface-property-changes.patch -Patch15: udisks-2.9.2-udisksdaemonutil-Refactor-udisks_daemon_util_trigger.patch -Patch16: udisks-2.9.2-udiskslinuxmanager-Trigger-uevent-after-loop-device-setup.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2004422 -Patch17: udisks-2.9.4-ext-mount-options.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2213715 -Patch18: udisks-2.10.0-iscsi_timeout.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 -# https://bugzilla.redhat.com/show_bug.cgi?id=1966460 -Patch28: udisks-2.10.0-iscsi_test_01_badauth.patch -Patch29: udisks-2.10.0-iscsi_test_02_lio_target_conf.patch -Patch31: udisks-2.10.0-iscsi_test_04_fix_test_login_chap_auth.patch -Patch32: udisks-2.10.0-iscsi_test_05_restart_iscsid.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2188991 -Patch33: udisks-2.10.0-iscsi-CHAP-auth-algs.patch -Patch34: udisks-2.9.4-FIPS_LUKS_fixes-2.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2039772 -Patch35: udisks-2.10.0-lvm2_update_epoch.patch -Patch36: udisks-2.10.0-lvm2_vgcreate_uevent_sync.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2213193 -Patch37: udisks-2.10.0-iscsi-ibft-chap-auth.patch -# https://issues.redhat.com/browse/RHEL-109408 -Patch38: udisks-2.10.91-manager_loopsetup_fd_bounds.patch +# https://issues.redhat.com/browse/RHEL-39935 +Patch0: udisks-2.11.0-lvm2-unused_device_detection-try_harder.patch +# https://issues.redhat.com/browse/RHEL-74012 +Patch1: udisks-2.11.0-mdraid-inhibit-locks.patch +# https://issues.redhat.com/browse/RHEL-109406 +Patch2: udisks-2.10.91-manager_loopsetup_fd_bounds.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: systemd-rpm-macros BuildRequires: libacl-devel BuildRequires: chrpath BuildRequires: gtk-doc @@ -127,6 +55,8 @@ 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: libblockdev-nvme-devel >= %{libblockdev_version} +BuildRequires: libblockdev-smart-devel >= %{libblockdev_version} BuildRequires: libmount-devel BuildRequires: libuuid-devel @@ -137,45 +67,51 @@ Requires: libblockdev-swap >= %{libblockdev_version} Requires: libblockdev-mdraid >= %{libblockdev_version} Requires: libblockdev-fs >= %{libblockdev_version} Requires: libblockdev-crypto >= %{libblockdev_version} +Requires: libblockdev-nvme >= %{libblockdev_version} +Requires: libblockdev-smart >= %{libblockdev_version} -# Needed for the systemd-related macros used in this file -%{?systemd_requires} -BuildRequires: systemd +Requires: lib%{name}%{?_isa} = %{version}-%{release} # 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 +Recommends: e2fsprogs # For mkfs.xfs, xfs_admin -Requires: xfsprogs +Recommends: xfsprogs # For mkfs.vfat -Requires: dosfstools -Requires: gdisk +Recommends: dosfstools +# For exfat +Recommends: exfatprogs +# For UDF +Recommends: udftools # For ejecting removable disks -Requires: eject +Recommends: eject # For utab monitor Requires: libmount +# The actual polkit agent +Requires: polkit >= %{polkit_version} -Requires: lib%{name}%{?_isa} = %{version}-%{release} - -# For mkntfs (not available on rhel or on ppc/ppc64) -%if ! 0%{?rhel} +# For mkntfs (not available on rhel or on ppc/ppc64) and f2fs +%if %{is_fedora} +Recommends: f2fs-tools +Recommends: nilfs-utils %ifnarch ppc ppc64 -Requires: ntfsprogs +Recommends: ntfsprogs %endif %endif +Recommends: ntfs-3g -# For /proc/self/mountinfo, only available in 2.6.26 or higher -Conflicts: kernel < 2.6.26 +# btrfs +%if 0%{?with_btrfs} +Recommends: btrfs-progs +%endif Provides: storaged = %{version}-%{release} -Obsoletes: storaged +Obsoletes: storaged < %{version}-%{release} %description The Udisks project provides a daemon, tools and libraries to access and @@ -183,10 +119,9 @@ manipulate disks, storage devices and technologies. %package -n lib%{name} Summary: Dynamic library to access the udisksd daemon -Group: System Environment/Libraries -License: LGPLv2+ +License: LGPL-2.0-or-later Provides: libstoraged = %{version}-%{release} -Obsoletes: libstoraged +Obsoletes: libstoraged < %{version}-%{release} %description -n lib%{name} This package contains the dynamic library, which provides @@ -194,69 +129,49 @@ access to the udisksd daemon. %package -n %{name}-iscsi Summary: Module for iSCSI -Group: System Environment/Libraries -Requires: %{name}%{?_isa} = %{version}-%{release} -License: LGPLv2+ +Requires: lib%{name}%{?_isa} = %{version}-%{release} +License: LGPL-2.0-or-later Requires: iscsi-initiator-utils BuildRequires: iscsi-initiator-utils-devel Provides: storaged-iscsi = %{version}-%{release} -Obsoletes: storaged-iscsi +Obsoletes: storaged-iscsi < %{version}-%{release} %description -n %{name}-iscsi This package contains module for iSCSI configuration. %package -n %{name}-lvm2 Summary: Module for LVM2 -Group: System Environment/Libraries -Requires: %{name}%{?_isa} = %{version}-%{release} -License: LGPLv2+ +Requires: lib%{name}%{?_isa} = %{version}-%{release} +License: LGPL-2.0-or-later Requires: lvm2 Requires: libblockdev-lvm >= %{libblockdev_version} -BuildRequires: lvm2-devel BuildRequires: libblockdev-lvm-devel >= %{libblockdev_version} Provides: storaged-lvm2 = %{version}-%{release} -Obsoletes: storaged-lvm2 +Obsoletes: storaged-lvm2 < %{version}-%{release} %description -n %{name}-lvm2 This package contains module for LVM2 configuration. %package -n lib%{name}-devel Summary: Development files for lib%{name} -Group: Development/Libraries Requires: lib%{name}%{?_isa} = %{version}-%{release} -License: LGPLv2+ +License: LGPL-2.0-or-later Provides: libstoraged-devel = %{version}-%{release} -Obsoletes: libstoraged-devel +Obsoletes: libstoraged-devel < %{version}-%{release} %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 -Group: System Environment/Libraries -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 +This package contains the development files for the library lib%{name}, +a dynamic library, which provides access to the udisksd daemon. %if 0%{?with_btrfs} %package -n %{name}-btrfs Summary: Module for BTRFS -Group: System Environment/Libraries -Requires: %{name}%{?_isa} = %{version}-%{release} -License: LGPLv2+ +Requires: lib%{name}%{?_isa} = %{version}-%{release} +License: LGPL-2.0-or-later Requires: libblockdev-btrfs >= %{libblockdev_version} BuildRequires: libblockdev-btrfs-devel >= %{libblockdev_version} Provides: storaged-btrfs = %{version}-%{release} -Obsoletes: storaged-btrfs +Obsoletes: storaged-btrfs < %{version}-%{release} %description -n %{name}-btrfs This package contains module for BTRFS configuration. @@ -265,113 +180,40 @@ This package contains module for BTRFS configuration. %if 0%{?with_lsm} %package -n %{name}-lsm Summary: Module for LSM -Group: System Environment/Libraries -Requires: %{name}%{?_isa} = %{version}-%{release} -License: LGPLv2+ +Requires: lib%{name}%{?_isa} = %{version}-%{release} +License: LGPL-2.0-or-later Requires: libstoragemgmt BuildRequires: libstoragemgmt-devel BuildRequires: libconfig-devel Provides: storaged-lsm = %{version}-%{release} -Obsoletes: storaged-lsm +Obsoletes: storaged-lsm < %{version}-%{release} %description -n %{name}-lsm This package contains module for LSM configuration. %endif -%if 0%{?with_zram} -%package -n %{name}-zram -Summary: Module for ZRAM -Group: System Environment/Libraries -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 - -%if 0%{?with_vdo} -%package -n %{name}-vdo -Summary: Module for VDO -Group: System Environment/Libraries -Requires: %{name}%{?_isa} = %{version}-%{release} -License: LGPLv2+ -Requires: vdo -Requires: libblockdev-vdo >= %{libblockdev_version} -BuildRequires: libblockdev-vdo-devel >= %{libblockdev_version} - -%description -n %{name}-vdo -This package contains module for VDO management. -%endif - %prep -%setup -q -n udisks-%{version} -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 -%patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -sed -i udisks/udisks2.conf.in -e "s/encryption=luks1/encryption=%{default_luks_encryption}/" +%autosetup -p1 -n udisks-%{version} +rm -f src/tests/dbus-tests/config_h.py +rm -f src/udisks-daemon-resources.{c,h} +# default to ntfs-3g (#2182206) +sed -i data/builtin_mount_options.conf -e 's/ntfs_drivers=ntfs3,ntfs/ntfs_drivers=ntfs,ntfs3/' %build -autoreconf -ivf +# autoreconf -ivf # modules need to be explicitly enabled %configure \ - --sysconfdir=/etc \ %if %{with_gtk_doc} --enable-gtk-doc \ %else --disable-gtk-doc \ %endif -%if 0%{?with_bcache} - --enable-bcache \ -%endif + --enable-smart \ %if 0%{?with_btrfs} --enable-btrfs \ %endif -%if 0%{?with_vdo} - --enable-vdo \ -%endif -%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 @@ -383,6 +225,9 @@ make install DESTDIR=%{buildroot} rm -fr %{buildroot}/%{_datadir}/gtk-doc/html/udisks2 %endif +# not created if lsm is disabled +mkdir -p %{buildroot}%{_sysconfdir}/udisks2/modules.conf.d + find %{buildroot} -name \*.la -o -name \*.a | xargs rm chrpath --delete %{buildroot}/%{_sbindir}/umount.udisks2 @@ -408,17 +253,6 @@ fi %ldconfig_scriptlets -n lib%{name} -%if 0%{?with_zram} -%post -n %{name}-zram -%systemd_post zram-setup@.service - -%preun -n %{name}-zram -%systemd_preun zram-setup@.service - -%postun -n %{name}-zram -%systemd_postun zram-setup@.service -%endif - %files -f udisks2.lang %doc README.md AUTHORS NEWS HACKING %license COPYING @@ -432,6 +266,7 @@ fi %{_datadir}/dbus-1/system.d/org.freedesktop.UDisks2.conf %{_datadir}/bash-completion/completions/udisksctl +%{_datadir}/zsh/site-functions/_udisks2 %{_tmpfilesdir}/%{name}.conf %{_unitdir}/udisks2.service %{_udevrulesdir}/80-udisks2.rules @@ -483,27 +318,12 @@ fi %{_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_vdo} -%{_libdir}/pkgconfig/udisks2-vdo.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 @@ -520,93 +340,144 @@ fi %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}/zram-setup@.service -%endif - -%if 0%{?with_vdo} -%files -n %{name}-vdo -%{_libdir}/udisks2/modules/libudisks2_vdo.so -%{_datadir}/polkit-1/actions/org.freedesktop.UDisks2.vdo.policy -%endif - %changelog -* Mon Aug 25 2025 Tomas Bzatek - 2.9.0-16.1 -- udiskslinuxmanager: Add lower bounds check to fd_index (CVE-2025-8067) (RHEL-109408) +* Tue Sep 02 2025 Tomas Bzatek - 2.10.90-6 +- udiskslinuxmanager: Add lower bounds check to fd_index (CVE-2025-8067) (RHEL-109406) -* Thu Aug 03 2023 Tomas Bzatek - 2.9.0-16 -- iscsi: Fix login on firmware-discovered nodes (#2213193) -- tests: Extend iscsi method call timeouts (#2213715) +* Fri Jan 24 2025 Tomas Bzatek - 2.10.90-5 +- mdraid: Avoid acquiring system inhibit lock for external array operations (RHEL-74012) -* Tue Jun 06 2023 Tomas Bzatek - 2.9.0-15 -- Reimport gating tests +* Tue Nov 05 2024 Tomas Bzatek - 2.10.90-4 +- Rebase to upstream 2.10.90 (pre-)release +- lvm2: Try opening for unused device detection harder (RHEL-39935) -* Fri Jun 02 2023 Tomas Bzatek - 2.9.0-14 -- iscsi: CHAP auth algorithm selection fixes (#2188991) -- tests: Use stronger passphrases for LUKS tests -- lvm2: Improve uevent processing (#2039772) +* Tue Oct 29 2024 Troy Dawson - 2.10.90-3.gitdb54112e +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 -* Tue Nov 01 2022 Tomas Bzatek - 2.9.0-13 -- Fix iscsi test auth failures (#1966460) +* Wed Jul 31 2024 Tomas Bzatek - 2.10.90-2.gitdb54112e +- Fix Requires: for modules +- Fix gating tests -* Wed Oct 19 2022 Tomas Bzatek - 2.9.0-12 -- Fix iscsi authentication info override (#2135773) +* Thu Jul 25 2024 Tomas Bzatek - 2.10.90-1.gitdb54112e +- Rebase to git snapshot as of 2024-07-25 -* Fri Sep 16 2022 Tomas Bzatek - 2.9.0-11 -- Fix the patch list +* Mon Jun 24 2024 Troy Dawson - 2.10.1-5 +- Bump release for June 2024 mass rebuild -* Fri Sep 16 2022 Tomas Bzatek - 2.9.0-10 -- Restrict ATA Secure Erase Format() options (#2120697) +* Mon Feb 12 2024 Tomas Bzatek - 2.10.1-4 +- Use SPDX license tags for subpackages -* Tue Feb 01 2022 Tomas Bzatek - 2.9.0-9 -- Fix LVM-VDO statistics tests (#2023880,#2025483) -- Fix GError ownership (#1999149) +* Mon Feb 12 2024 Tomas Bzatek - 2.10.1-3 +- Use a SPDX license tag +- udiskslinuxblockobject: Try issuing BLKRRPART ioctl harder +- udiskslinuxmanager: Fix use after free +- tests: Fix targetcli_config.json -* Mon Oct 25 2021 Tomas Bzatek - 2.9.0-8 -- CVE-2021-3802: Harden the default mount options for ext filesystems (#2004422) +* Sat Jan 27 2024 Fedora Release Engineering - 2.10.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild -* Fri Apr 23 2021 Tomas Bzatek - 2.9.0-7 -- Do not build udisks2-zram (#1923078) -- Fix Drive.ATA test failures (#1926827) +* Thu Sep 07 2023 Tomas Bzatek - 2.10.1-1 +- Version 2.10.1 +- Default to ntfs-3g for stability reasons (#2182206) +- Use Recommends: for filesystem tools (#2169848) -* Tue Jan 26 2021 Tomas Bzatek - 2.9.0-6 -- Rebuilt for new docbook-style-xsl (#1853153) +* Sat Jul 22 2023 Fedora Release Engineering - 2.10.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild -* Mon Nov 16 2020 Tomas Bzatek - 2.9.0-5 -- Fix loop device setup +* Thu Jun 29 2023 Tomas Bzatek - 2.10.0-1 +- Version 2.10.0 -* Tue Nov 10 2020 Tomas Bzatek - 2.9.0-4 -- Fix Drive.Ata tests with system SAS drives (#1855785) -- Force D-Bus interfaces flush (#1845973) +* Sat Jan 21 2023 Fedora Release Engineering - 2.9.4-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild -* Mon Jun 22 2020 Tomas Bzatek - 2.9.0-3 -- Fix the UdisksLVMVDOTest.test_resize_physical test (#1845435) +* Sat Jul 23 2022 Fedora Release Engineering - 2.9.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild -* Mon Jun 22 2020 Tomas Bzatek - 2.9.0-2 -- Fix block tear-down functionality (#1843454) -- Fix libblockdev requires +* Thu Mar 03 2022 Tomas Bzatek - 2.9.4-4 +- Fix gtk-doc annotations + +* Thu Mar 03 2022 Tomas Bzatek - 2.9.4-3 +- Require ntfs-3g (#2058506) + +* Sat Jan 22 2022 Fedora Release Engineering - 2.9.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Oct 04 2021 Tomas Bzatek - 2.9.4-1 +- Version 2.9.4 +- Fixes CVE-2021-3802 (#2003650) + +* Thu Aug 05 2021 Tomas Bzatek - 2.9.3-1 +- Version 2.9.3 + +* Fri Jul 23 2021 Fedora Release Engineering - 2.9.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 18 2021 Tomas Bzatek - 2.9.2-5 +- Switch the default encryption to LUKS2 + +* Mon Apr 19 2021 Tomas Bzatek - 2.9.2-4 +- Fix a couple of issues found by Coverity +- Ignore systemd "Extended Boot Loader" GPT partition + +* Fri Mar 26 2021 Tomas Bzatek - 2.9.2-3 +- 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 + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 2.9.2-2 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Thu Feb 04 2021 Tomas Bzatek - 2.9.2-1 +- Version 2.9.2 + +* Wed Jan 27 2021 Fedora Release Engineering - 2.9.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Sep 07 2020 Neal Gompa - 2.9.1-2 +- Fix conditional around polkit Recommends for building on EL7 + +* Wed Aug 12 2020 Tomas Bzatek - 2.9.1-1 +- Version 2.9.1 +- Renamed zram-setup@.service to udisks2-zram-setup@.service + +* Wed Jul 29 2020 Fedora Release Engineering - 2.9.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Tue May 26 2020 Tomas Bzatek - 2.9.0-1 -- Rebase to 2.9.0 (#1824147) +- Version 2.9.0 -* Fri Jun 14 2019 Tomas Bzatek - 2.8.3-2 -- Minor test fixes -- Fix potential NULL dereference in UDisksLinuxPartition +* Fri Jan 31 2020 Fedora Release Engineering - 2.8.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Oct 01 2019 Jonathan Lebon - 2.8.4-3 +- Don't trigger udev if socket is not accessible + +* Sat Jul 27 2019 Fedora Release Engineering - 2.8.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jul 22 2019 Tomas Bzatek - 2.8.4-1 +- Version 2.8.4 * Thu Jun 13 2019 Tomas Bzatek - 2.8.3-1 -- Rebased to upstream 2.8.3 release (#1685210) -- Fix leaking filedescriptors (#1614774) -- Fix udisksctl pager scrolling (#1662336) -- Fix LVM2 plugin CreateSnapshot() error (#1668291) -- Add ISCSI plugin GetInitiatorNameRaw() method (#1710257) +- Version 2.8.3 -* Mon Oct 08 2018 Vojtech Trefny - 2.8.0-2 -- Fix string format vulnerability - Resolves: rhbz#1632831 +* Fri Mar 15 2019 Debarshi Ray - 2.8.2-2 +- Update for tmpfiles.d snippet + +* Mon Mar 04 2019 Tomas Bzatek - 2.8.2-1 +- Version 2.8.2 + +* Sun Feb 03 2019 Fedora Release Engineering - 2.8.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Sep 26 2018 Vojtech Trefny - 2.8.1-1 +- Version 2.8.1 + +* Fri Sep 14 2018 Adam Williamson - 2.8.0-2 +- Backport PR #576 to fix udev multipath device check (see RHBZ#1628192) * Mon Aug 13 2018 Tomas Bzatek - 2.8.0-1 - Version 2.8.0