[dm-crypt] Question about "An example of using LUKS device through libcryptsetup API"

H McCurdy hmccurdy at yahoo.com
Sat Sep 26 03:03:44 CEST 2015


Hi,
The program code is published athttps://gitlab.com/cryptsetup/cryptsetup/wikis/API/index.html
Looking in 

static int handle_active_device(const char *device_name)

at
        if (crypt_status(cd, device_name) == CRYPT_ACTIVE)
                printf("Device %s is still active.\n", device_name);
        else {
                printf("Something failed perhaps, device %s is not active.\n", device_name);
                crypt_free(cd);
                return -1;
        }

        /*
         * crypt_deactivate() is used to deactivate device
         */
        r = crypt_deactivate(cd, device_name);
        if (r < 0) {
                printf("crypt_deactivate() failed.\n");
                crypt_free(cd);
                return r;
        }

But if I look in /usr/include/libcryptsetup.h, I see

typedef enum {
  CRYPT_INVALID, /**< device mapping is invalid in this context */
  CRYPT_INACTIVE, /**< no such mapped device */
  CRYPT_ACTIVE, /**< device is active */
  CRYPT_BUSY /**< device is active and has open count > 0 */
} crypt_status_info;

and

crypt_status_info crypt_status(struct crypt_device *cd, const char *name);

It appears to me that the code flow is good since we probably can't deactivate a busy container
but it appears to me that the error is misleading in the event of CRYPT_BUSY because the message
indicates the device isn't active.

Am I interpreting correctly?

Hugh


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.saout.de/pipermail/dm-crypt/attachments/20150926/a10698e5/attachment.html>


More information about the dm-crypt mailing list