Bastian Blank wrote:
> [ Triming mdadm maintainers from CC. ]

> 
> The last looks like the correct one according to the names and checks.
> The correct check for this one would be:
> CRYPT-[0-9a-f]* || CRYPT-LUKS-*
> The check for temporary-cryptsetup-* can go then. This will catch
> anything from cryptsetup 1.0.7 up.

Assuming we want to distinguish luks devices, I updated the patch based on your
suggestions

-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?
From 9aca432753e8e4fbaacf09b47bdf374765397232 Mon Sep 17 00:00:00 2001
From: Michael Biebl <bi...@debian.org>
Date: Thu, 15 Oct 2009 14:26:17 +0200
Subject: [PATCH 1/2] Stop probing device-mapper devices

Use DM_NAME and DM_UUID which are already setup by the dmsetup udev
rules.
See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=545032
---
 data/95-devkit-disks.rules |   21 ---------------------
 src/devkit-disks-device.c  |   17 +++++++++--------
 2 files changed, 9 insertions(+), 29 deletions(-)

Index: devicekit-disks/data/95-devkit-disks.rules
===================================================================
--- devicekit-disks.orig/data/95-devkit-disks.rules	2009-10-16 04:11:03.000000000 +0200
+++ devicekit-disks/data/95-devkit-disks.rules	2009-10-16 04:11:03.000000000 +0200
@@ -29,27 +29,6 @@
 
 ##############################################################################################################
 
-# pick up device-mapper data; this REALLY should be done by rules installed
-# by the device-mapper package
-#
-KERNEL!="dm-*", GOTO="device_mapper_end"
-ACTION!="add|change", GOTO="device_mapper_end"
-
-IMPORT{program}="devkit-disks-dm-export %M %m"
-ENV{DKD_DM_NAME}!="?*", GOTO="device_mapper_end"
-
-ENV{DKD_DM_STATE}=="SUSPENDED", GOTO="device_mapper_end"
-ENV{DKD_DM_TARGET_TYPES}=="|*error*", GOTO="device_mapper_end"
-
-# avoid probing if it has already been done earlier
-#
-ENV{ID_FS_USAGE}!="", GOTO="device_mapper_end"
-IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
-
-LABEL="device_mapper_end"
-
-##############################################################################################################
-
 # pick up data from MD components; this REALLY should be done by rules installed
 # by mdadm or the kernel package
 #
Index: devicekit-disks/src/devkit-disks-device.c
===================================================================
--- devicekit-disks.orig/src/devkit-disks-device.c	2009-10-16 04:11:03.000000000 +0200
+++ devicekit-disks/src/devkit-disks-device.c	2009-10-16 04:14:30.000000000 +0200
@@ -2200,21 +2200,24 @@
 update_info_luks_cleartext (DevkitDisksDevice *device)
 {
         uid_t unlocked_by_uid;
-        const gchar *dkd_dm_name;
-        const gchar *dkd_dm_target_types;
+        const gchar *dm_name;
+        const gchar *dm_uuid;
         gboolean ret;
 
         ret = FALSE;
 
-        dkd_dm_name = g_udev_device_get_property (device->priv->d, "DKD_DM_NAME");
-        dkd_dm_target_types = g_udev_device_get_property (device->priv->d, "DKD_DM_TARGET_TYPES");
-        if (dkd_dm_name != NULL && g_strcmp0 (dkd_dm_target_types, "crypt") == 0 &&
+        dm_name = g_udev_device_get_property (device->priv->d, "DM_NAME");
+        dm_uuid = g_udev_device_get_property (device->priv->d, "DM_UUID");
+        if (dm_name != NULL && dm_uuid != NULL &&
+            (g_str_has_prefix (dm_uuid, "CRYPT-LUKS1") ||
+             g_regex_match_simple ("^CRYPT-[a-f0-9-]+$", dm_uuid, 0, 0)) &&
             device->priv->slaves_objpath->len == 1) {
 
                 /* TODO: might be racing with setting is_drive earlier */
                 devkit_disks_device_set_device_is_drive (device, FALSE);
 
-                if (g_str_has_prefix (dkd_dm_name, "temporary-cryptsetup-")) {
+                /* Debian already hides temporary cryptsetup devices, so this check could probably be removed? */
+                if (g_str_has_prefix (dm_name, "temporary-cryptsetup-")) {
                         /* ignore temporary devices created by /sbin/cryptsetup */
                         goto out;
                 }
@@ -2223,12 +2226,12 @@
 
                 devkit_disks_device_set_luks_cleartext_slave (device, ((gchar **) device->priv->slaves_objpath->pdata)[0]);
 
-                if (luks_get_uid_from_dm_name (dkd_dm_name, &unlocked_by_uid)) {
+                if (luks_get_uid_from_dm_name (dm_name, &unlocked_by_uid)) {
                         devkit_disks_device_set_luks_cleartext_unlocked_by_uid (device, unlocked_by_uid);
                 }
 
                 /* TODO: export this at some point */
-                devkit_disks_device_set_dm_name (device, dkd_dm_name);
+                devkit_disks_device_set_dm_name (device, dm_name);
         } else {
                 devkit_disks_device_set_device_is_luks_cleartext (device, FALSE);
                 devkit_disks_device_set_luks_cleartext_slave (device, NULL);

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to