Allow "private" activation (skip some udev global rules) flag.
authorMilan Broz <gmazyland@gmail.com>
Wed, 2 May 2012 14:51:58 +0000 (16:51 +0200)
committerMilan Broz <gmazyland@gmail.com>
Wed, 2 May 2012 14:51:58 +0000 (16:51 +0200)
ChangeLog
lib/libcryptsetup.h
lib/libdevmapper.c
lib/luks1/keyencryption.c

index 3511fc18d95380392bdbf28fb122500cec143475..a3df36cc9d151379ae2982ffde44c91761e4a2f7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
        * Relax --shared test, allow mapping even for overlapping segments.
        * Support shared flag for LUKS devices (dangerous).
        * Switch on retry on device remove for libdevmapper.
+       * Allow "private" activation (skip some udev global rules) flag.
 
 2012-04-09  Milan Broz  <gmazyland@gmail.com>
        * Fix header check to support old (cryptsetup 1.0.0) header alignment. (1.4.0)
index 5fb262244bdd77ce003af0fbdb5843fec2a9b8da..2b10addab8026247b75238e12d70ed7ef1e76d9e 100644 (file)
@@ -640,6 +640,8 @@ int crypt_keyslot_destroy(struct crypt_device *cd, int keyslot);
 #define CRYPT_ACTIVATE_SHARED   (1 << 2)
 /** enable discards aka TRIM */
 #define CRYPT_ACTIVATE_ALLOW_DISCARDS (1 << 3)
+/** skip global udev rules in activation ("private device"), input only */
+#define CRYPT_ACTIVATE_PRIVATE (1 << 4)
 
 /**
  * Active device runtime attributes
index 1997c13c99c7b374bad1e87bc441fff365eaa4a2..23c55fe69f04d619f479555bb0845ece337cb003 100644 (file)
@@ -435,7 +435,7 @@ int dm_create_device(const char *name,
        if (!params)
                goto out_no_removal;
 
-       if (type && !strncmp(type, "TEMP", 4))
+       if (dmd->flags & CRYPT_ACTIVATE_PRIVATE)
                udev_flags = CRYPT_TEMP_UDEV_FLAGS;
 
        /* All devices must have DM_UUID, only resize on old device is exception */
index 98d75651d4e3f3aa9d2a3eead501ecf38a468d40..7040b82641503d32803e222da54e0774f5d65274 100644 (file)
@@ -65,9 +65,12 @@ static int setup_mapping(const char *cipher, const char *name,
                .offset = sector,
                .iv_offset = 0,
                .size   = 0,
-               .flags  = (mode == O_RDONLY) ? CRYPT_ACTIVATE_READONLY : 0
+               .flags  = 0
        };
 
+       dmd.flags = CRYPT_ACTIVATE_PRIVATE;
+       if (mode == O_RDONLY)
+               dmd.flags |= CRYPT_ACTIVATE_READONLY;
        /*
         * we need to round this to nearest multiple of the underlying
         * device's sector size, otherwise the mapping will be refused.