Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.2
systemd-gtk
storage-after-cryptsetup.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File storage-after-cryptsetup.patch of Package systemd-gtk
From b9841589cf16950af7d123ecd128b84464d15a1d Mon Sep 17 00:00:00 2001 From: Frederic Crozat <fcrozat@suse.com> Date: Mon, 7 Nov 2011 18:04:20 +0100 Subject: [PATCH] force lvm restart after cryptsetup target is reached --- src/cryptsetup-generator.c | 80 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 80 insertions(+), 0 deletions(-) Index: systemd-37/src/cryptsetup/cryptsetup-generator.c =================================================================== --- systemd-37.orig/src/cryptsetup/cryptsetup-generator.c +++ systemd-37/src/cryptsetup/cryptsetup-generator.c @@ -22,6 +22,7 @@ #include <string.h> #include <errno.h> #include <unistd.h> +#include <stdlib.h> #include "log.h" #include "util.h" @@ -58,6 +59,71 @@ static bool has_option(const char *hayst return false; } +static int create_storage_after_cryptsetup (void) { + int r; + char *to = NULL, *p = NULL; + FILE *f = NULL; + + if (asprintf(&p, "%s/storage-after-cryptsetup.service", arg_dest) < 0) { + r = -ENOMEM; + log_error("Failed to allocate unit file name."); + goto fail; + } + + if (!(f = fopen(p, "wxe"))) { + r = -errno; + log_error("Failed to create unit file: %m"); + goto fail; + } + + fprintf(f, + "[Unit]\n" + "Description=Restart storage after cryptsetup\n" + "DefaultDependencies=no\n" + "After=cryptsetup.target\n" + "Wants=cryptsetup.target\n" + "Before=local-fs.target\n" + "Before=shutdown.target\n"); + + fprintf(f, + "\n[Service]\n" + "RemainAfterExit=true\n" + "Type=oneshot\n" + "TimeoutSec=0\n" + "ExecStart=/bin/systemctl restart lvm.service\n"); + + fflush(f); + + if (ferror(f)) { + r = -errno; + log_error("Failed to write file: %m"); + goto fail; + } + + if (asprintf(&to, "%s/local-fs.target.wants/storage-after-cryptsetup.service", arg_dest) < 0) { + r = -ENOMEM; + goto fail; + } + + mkdir_parents(to, 0755); + + if (symlink("../storage-after-cryptsetup.service", to) < 0) { + log_error("Failed to create symlink ../storage-after-cryptsetup.service to '%s': %m", to); + r = -errno; + goto fail; + } + + r=0; +fail: + free(p); + free(to); + + if (f) + fclose(f); + + return r; +} + static int create_disk( const char *name, const char *device, @@ -291,6 +357,9 @@ int main(int argc, char *argv[]) { free(options); } + if (create_storage_after_cryptsetup () < 0) + r = EXIT_FAILURE; + finish: return r; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor