+ d->create = false;
+ d->keyfile = d->options = d->name = NULL;
+
+ d->uuid = strdup(uuid);
+ if (!d->uuid) {
+ free(d);
+ return NULL;
+ }
+
+ r = hashmap_put(arg_disks, d->uuid, d);
+ if (r < 0) {
+ free(d->uuid);
+ free(d);
+ return NULL;
+ }
+ }
+
+ return d;
+}
+
+static int parse_proc_cmdline_item(const char *key, const char *value) {
+ int r;
+ crypto_device *d;
+ _cleanup_free_ char *uuid = NULL, *uuid_value = NULL;
+
+ if (STR_IN_SET(key, "luks", "rd.luks") && value) {
+
+ r = parse_boolean(value);
+ if (r < 0)
+ log_warning("Failed to parse luks switch %s. Ignoring.", value);
+ else
+ arg_enabled = r;
+
+ } else if (STR_IN_SET(key, "luks.crypttab", "rd.luks.crypttab") && value) {
+
+ r = parse_boolean(value);
+ if (r < 0)
+ log_warning("Failed to parse luks crypttab switch %s. Ignoring.", value);
+ else
+ arg_read_crypttab = r;
+
+ } else if (STR_IN_SET(key, "luks.uuid", "rd.luks.uuid") && value) {
+
+ d = get_crypto_device(startswith(value, "luks-") ? value+5 : value);
+ if (!d)