FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Debian > Debian Laptop

 
 
LinkBack Thread Tools
 
Old 04-06-2011, 08:10 PM
Chris Lumens
 
Default Update restart-anaconda to work with systemd.

---
loader/loader.c | 39 +++++++++++++++++++++++++--------------
scripts/restart-anaconda | 29 ++++-------------------------
2 files changed, 29 insertions(+), 39 deletions(-)

diff --git a/loader/loader.c b/loader/loader.c
index 4365e40..79c1b8c 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1778,19 +1778,25 @@ void loaderUsrXHandler(int signum) {
init_sig = signum;
}

-int restart_anaconda(struct loaderData_s *loaderData) {
+void restart_anaconda(struct loaderData_s *loaderData) {
if (access("/tmp/restart_anaconda", R_OK))
- return 0;
+ return;
+
puts("Restarting Anaconda.");
unlink("/tmp/restart_anaconda");
- if (loaderData->updatessrc) {
+
+ if (!access("/var/run/loader.run", R_OK))
+ unlink("/var/run/loader.run");
+
+ if (loaderData && loaderData->updatessrc) {
int updates_fd = open("/tmp/updates", O_RDONLY);
if (recursiveRemove(updates_fd))
fprintf(stderr, "Error removing /tmp/updates. Updates won't be re-downloaded.");
else
loadUpdatesFromRemote(loaderData->updatessrc, loaderData);
}
- return 1;
+
+ return;
}

static int anaconda_trace_init(int isDevelMode) {
@@ -1977,16 +1983,6 @@ int main(int argc, char ** argv) {
rc = anaconda_trace_init(isDevelMode);
setupEnv();

- if (!access("/var/run/loader.run", R_OK)) {
- printf(_("loader has already been run. Starting shell.
"));
- execl("/bin/sh", "-/bin/sh", NULL);
- doExit(0);
- }
-
- f = fopen("/var/run/loader.run", "w+");
- fprintf(f, "%d
", getpid());
- fclose(f);
-
/* uncomment to send mac address in ks=http:/ header by default*/
flags |= LOADER_FLAGS_KICKSTART_SEND_MAC;

@@ -2012,6 +2008,21 @@ int main(int argc, char ** argv) {
extraArgs[0] = NULL;
parseCmdLineFlags(&loaderData);

+ /* If the anaconda process is now being restarted, we need to do some
+ * environment cleanup first.
+ */
+ restart_anaconda(&loaderData);
+
+ if (!access("/var/run/loader.run", R_OK)) {
+ printf(_("loader has already been run. Starting shell.
"));
+ execl("/bin/sh", "-/bin/sh", NULL);
+ doExit(0);
+ }
+
+ f = fopen("/var/run/loader.run", "w+");
+ fprintf(f, "%d
", getpid());
+ fclose(f);
+
logMessage(INFO, "anaconda version %s on %s starting", VERSION, getProductArch());

init_serial(&orig_cmode, &orig_flags, cmdline);
diff --git a/scripts/restart-anaconda b/scripts/restart-anaconda
index 8a82b51..639e47a 100755
--- a/scripts/restart-anaconda
+++ b/scripts/restart-anaconda
@@ -20,38 +20,17 @@
#

RESTART_FILE=/tmp/restart_anaconda
-ANACONDA_PID=`cat /var/run/anaconda.pid`
-
-descendants() {
- PID=$1
- DIRECT=`ps --ppid $PID -o pid=`
- INDIRECT='
- for child in $DIRECT; do
- INDIRECT+=' '`descendants $child`
- done
- # prepend grandchildren, we are goingt to kill them first
- DESCENDANTS=$INDIRECT' '$DIRECT
- echo $DESCENDANTS
-}
-
-anaconda_descendants() {
- descendants $ANACONDA_PID
-}

# this is how loader knows it should restart stuff.
# it will also delete the file once the restart is in progress.
touch $RESTART_FILE

-# kill all anaconda descendants and anaconda itself
-RESTART_VICTIMS=`anaconda_descendants`
-RESTART_VICTIMS+=' '$ANACONDA_PID
if [[ -f /var/run/iscsid.pid ]]; then
# iscsid must die else it will cause us troubles on the next run
- RESTART_VICTIMS+=' '`cat /var/run/iscsid.pid`
# log out of all nodes
/sbin/iscsiadm -m node --logoutall=all
fi
-echo "killing processes: " $RESTART_VICTIMS
-for child in $RESTART_VICTIMS; do
- kill -s KILL $child &>/dev/null
-done
+
+# This will kill all programs in the loader group and restart the
+# service.
+systemctl restart loader.service
--
1.7.4.1

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 12:59 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org