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);
signature.asc
Description: OpenPGP digital signature