#include "log.h"
#include "umount.h"
#include "util.h"
+#include "virt.h"
#define TIMEOUT_USEC (5 * USEC_PER_SEC)
#define FINALIZE_ATTEMPTS 50
log_error("Failed to open /dev/console: %m");
else {
make_stdio(fd);
- /* initialize the controlling terminal */
- setsid();
- ioctl(0, TIOCSCTTY, NULL);
+
+ /* Initialize the controlling terminal */
+ setsid();
+ ioctl(STDIN_FILENO, TIOCSCTTY, NULL);
}
return 0;
log_set_target(LOG_TARGET_CONSOLE); /* syslog will die if not gone yet */
log_open();
+ umask(0022);
+
if (getpid() != 1) {
log_error("Not executed by init (pid 1).");
r = -EPERM;
log_error("Failed to detach DM devices: %s", strerror(-r));
}
- if (!need_umount && !need_swapoff && !need_loop_detach && !need_dm_detach)
+ if (!need_umount && !need_swapoff && !need_loop_detach && !need_dm_detach) {
+ if (retries > 0)
+ log_info("All filesystems, swaps, loop devices, DM devices detached.");
/* Yay, done */
break;
+ }
/* If in this iteration we didn't manage to
* unmount/deactivate anything, we either kill more