]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
move data to a ramfs and clean up mounts on exit
authorRay Strode <rstrode@redhat.com>
Mon, 22 Oct 2007 00:52:27 +0000 (20:52 -0400)
committerRay Strode <rstrode@redhat.com>
Mon, 22 Oct 2007 00:52:27 +0000 (20:52 -0400)
Shutdown was being noisy because we didn't unmount
/var/run/plymouth/{proc,dev/pts} etc.  Also we want
/var/run/plymouth to be a ramfs so that nash doesn't
go deleting it while its still running

src/main.c

index 3cc75ee3e2e27db63d240be418d1815cd01f01e2..0eddfb59bd5121ccaade32b7e19c406164a56aba 100644 (file)
@@ -93,9 +93,16 @@ static void
 on_quit (state_t *state)
 {
   ply_terminal_session_close_log (state->session);
-  umount ("/sysroot");
   ply_boot_splash_hide (state->boot_splash);
   ply_event_loop_exit (state->loop, 0);
+
+  fchdir (state->original_root_dir_fd);
+  chroot (".");
+  ply_unmount_filesystem (PLY_WORKING_DIRECTORY "/sysroot");
+  ply_unmount_filesystem (PLY_WORKING_DIRECTORY "/sysroot");
+  ply_unmount_filesystem (PLY_WORKING_DIRECTORY "/proc");
+  ply_unmount_filesystem (PLY_WORKING_DIRECTORY "/dev/pts");
+  ply_unmount_filesystem (PLY_WORKING_DIRECTORY);
 }
 
 static ply_boot_server_t *
@@ -185,7 +192,7 @@ create_working_directory (state_t *state)
 {
   ply_trace ("creating working directory '%s'",
              PLY_WORKING_DIRECTORY);
-  if (!ply_create_directory (PLY_WORKING_DIRECTORY))
+  if (!ply_create_detachable_directory (PLY_WORKING_DIRECTORY))
     return false;
 
   ply_trace ("changing to working directory");
@@ -212,6 +219,10 @@ create_working_directory (state_t *state)
   if (!ply_create_directory (PLYMOUTH_PLUGIN_PATH + 1))
     return false;
 
+  ply_trace ("creating sysroot subdirectory");
+  if (!ply_create_directory ("sysroot"))
+    return false;
+
   return true;
 }