On 09/26/2015 03:03 AM, H McCurdy wrote: > Hi, > > The program code is published at > https://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? Yes, that example should probably handle busy device differently. Anyway, you will receive error message "Device ... is still in use." before the printf above. Milan _______________________________________________ dm-crypt mailing list dm-crypt@xxxxxxxx http://www.saout.de/mailman/listinfo/dm-crypt