Control: retitle -1 unblock: systemd/215-16 Hi Julien,
Am 12.04.2015 um 10:43 schrieb Julien Cristau: > Control: tags -1 d-i > > On Sat, Apr 11, 2015 at 13:40:57 +0100, Martin Pitt wrote: > >> Package: release.debian.org >> Severity: normal >> User: release.debian....@packages.debian.org >> Usertags: unblock >> >> systemd 215-15 hit unstable two days ago. There have been no new RC >> bugs since 215-14, so for a change this is a "polishing" upload with >> small and safe fixes for some corner cases. One was already >> pre-approved. >> >> So far there have been no regression reports, and these changes have >> already been tested in experimental, Ubuntu, and upstream for a much >> longer time, so I'm quite confident in them. >> >> I attach the full debdiff between 215-14 and -15, but as usual I also >> link to the individual commits on anonscm. >> >> Note that there are zero changes for udev-udeb (for d-i). >> > Looks ok to me, but still would like a d-i ack :) > I decided to make another upload today. It includes 3 changes. | [ Christian Seiler ] | * Don't run hwclock-save.service in containers. (Closes: #782377) http://anonscm.debian.org/cgit/pkg-systemd/systemd.git/commit/?id=c22859a6897e9d6e5483bd0164b687875442f10a The hwclock-save.service is a recent addition and this is an obvious one-line fix. Didn't see a good reason to not include it even though it doesn't qualify as release critical. | [ Michael Biebl ] | * Do not print anything while passwords are being queried. This should make | password prompts without plymouth more usable. (Closes: #765013) http://anonscm.debian.org/cgit/pkg-systemd/systemd.git/commit/?id=12483a05fe541014d5eee3f5b03072c51ad7c584 This is a cherry-pick of an upstream commit which has been part of v219, thus seen fairly extensive testing in experimental and ubuntu. It suppresses output while a password query is running. As we don't install plymouth by default, I think this is a rather important fix to get into jessie, since it makes those password prompts decently usable. | * Skip filesystem check if already done by the initramfs. (Closes: #782522) http://anonscm.debian.org/cgit/pkg-systemd/systemd.git/commit/?id=b5db1e5ab22a53e8e8a9facebdd2e08204cc8cf9 This is a followup for the recent changes in initramfs-tools, which now provide flag files which we use to skip the fsck for / and /usr. Since I expect systems with local time being not that uncommon, I'd like to see this fix in jessie to avoid those Superblock time checks. Complete debdiff between -15 and -16 is attached as well. Baring any new RC bugs, this should hopefully be the final upload for jessie. Thanks for considering. Michael -- Why is it that all of the instruments seeking intelligent life in the universe are pointed away from Earth?
diff --git a/debian/changelog b/debian/changelog index 929502c..29ff5a3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +systemd (215-16) unstable; urgency=medium + + [ Christian Seiler ] + * Don't run hwclock-save.service in containers. (Closes: #782377) + + [ Michael Biebl ] + * Do not print anything while passwords are being queried. This should make + password prompts without plymouth more usable. (Closes: #765013) + * Skip filesystem check if already done by the initramfs. (Closes: #782522) + + -- Michael Biebl <bi...@debian.org> Mon, 13 Apr 2015 19:42:32 +0200 + systemd (215-15) unstable; urgency=medium [ Adam Conrad ] diff --git a/debian/extra/hwclock-save.service b/debian/extra/hwclock-save.service index 1e0f99a..16fbade 100644 --- a/debian/extra/hwclock-save.service +++ b/debian/extra/hwclock-save.service @@ -5,6 +5,7 @@ Before=shutdown.target ConditionFileIsExecutable=!/usr/sbin/ntpd ConditionFileIsExecutable=!/usr/sbin/openntpd ConditionFileIsExecutable=!/usr/sbin/chrony +ConditionVirtualization=!container [Service] Type=oneshot diff --git a/debian/patches/Skip-filesystem-check-if-already-done-by-the-initram.patch b/debian/patches/Skip-filesystem-check-if-already-done-by-the-initram.patch new file mode 100644 index 0000000..70ab1ed --- /dev/null +++ b/debian/patches/Skip-filesystem-check-if-already-done-by-the-initram.patch @@ -0,0 +1,44 @@ +From: Michael Biebl <bi...@debian.org> +Date: Mon, 13 Apr 2015 19:34:23 +0200 +Subject: Skip filesystem check if already done by the initramfs + +Newer versions of initramfs-tools already fsck and mount / and /usr in +the initramfs. Skip the filesystem check in this case. + +Closes: #782522 +--- + src/fstab-generator/fstab-generator.c | 4 +++- + units/systemd-fsck-root.service.in | 1 + + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c +index cb3d9dc..3323884 100644 +--- a/src/fstab-generator/fstab-generator.c ++++ b/src/fstab-generator/fstab-generator.c +@@ -163,11 +163,13 @@ static bool mount_is_network(struct mntent *me) { + } + + static bool mount_in_initrd(struct mntent *me) { ++ struct stat sb; ++ + assert(me); + + return + hasmntopt(me, "x-initrd.mount") || +- streq(me->mnt_dir, "/usr"); ++ (streq(me->mnt_dir, "/usr") && stat("/run/initramfs/fsck-usr", &sb) == 0); + } + + static int add_mount( +diff --git a/units/systemd-fsck-root.service.in b/units/systemd-fsck-root.service.in +index 4162983..0668107 100644 +--- a/units/systemd-fsck-root.service.in ++++ b/units/systemd-fsck-root.service.in +@@ -13,6 +13,7 @@ After=systemd-readahead-collect.service systemd-readahead-replay.service + Before=local-fs.target shutdown.target + + ConditionPathIsReadWrite=!/ ++ConditionPathExists=!/run/initramfs/fsck-root + + [Service] + Type=oneshot diff --git a/debian/patches/fstab-generator-don-t-rely-on-usr-being-mounted-in-t.patch b/debian/patches/fstab-generator-don-t-rely-on-usr-being-mounted-in-t.patch deleted file mode 100644 index 1c63e1e..0000000 --- a/debian/patches/fstab-generator-don-t-rely-on-usr-being-mounted-in-t.patch +++ /dev/null @@ -1,30 +0,0 @@ -From: Michael Stapelberg <stapelb...@debian.org> -Date: Tue, 29 Oct 2013 22:29:22 +0100 -Subject: =?utf-8?q?fstab-generator=3A_don=E2=80=99t_rely_on_/usr_being_mou?= - =?utf-8?q?nted_in_the_initrd?= -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -Debian is not there yet. Let’s revert this upstream change for now. - -Closes: #724797 ---- - src/fstab-generator/fstab-generator.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c -index 1256a1c..21d30c8 100644 ---- a/src/fstab-generator/fstab-generator.c -+++ b/src/fstab-generator/fstab-generator.c -@@ -160,9 +160,7 @@ static bool mount_is_network(struct mntent *me) { - static bool mount_in_initrd(struct mntent *me) { - assert(me); - -- return -- hasmntopt(me, "x-initrd.mount") || -- streq(me->mnt_dir, "/usr"); -+ return hasmntopt(me, "x-initrd.mount"); - } - - static int add_mount( diff --git a/debian/patches/manager-do-not-print-anything-while-passwords-are-be.patch b/debian/patches/manager-do-not-print-anything-while-passwords-are-be.patch new file mode 100644 index 0000000..157db86 --- /dev/null +++ b/debian/patches/manager-do-not-print-anything-while-passwords-are-be.patch @@ -0,0 +1,182 @@ +From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbys...@in.waw.pl> +Date: Sat, 25 Oct 2014 20:30:51 -0400 +Subject: manager: do not print anything while passwords are being queried + +https://bugs.freedesktop.org/show_bug.cgi?id=73942 +--- + src/core/manager.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++- + src/core/manager.h | 5 +++ + 2 files changed, 109 insertions(+), 1 deletion(-) + +diff --git a/src/core/manager.c b/src/core/manager.c +index 4532833..8f7e744 100644 +--- a/src/core/manager.c ++++ b/src/core/manager.c +@@ -25,6 +25,8 @@ + #include <signal.h> + #include <sys/wait.h> + #include <unistd.h> ++#include <sys/inotify.h> ++#include <sys/epoll.h> + #include <sys/poll.h> + #include <sys/reboot.h> + #include <sys/ioctl.h> +@@ -202,6 +204,96 @@ static void manager_print_jobs_in_progress(Manager *m) { + + } + ++static int have_ask_password(void) { ++ _cleanup_closedir_ DIR *dir; ++ ++ dir = opendir("/run/systemd/ask-password"); ++ if (!dir) { ++ if (errno == ENOENT) ++ return false; ++ else ++ return -errno; ++ } ++ ++ for (;;) { ++ struct dirent *de; ++ ++ errno = 0; ++ de = readdir(dir); ++ if (!de && errno != 0) ++ return -errno; ++ if (!de) ++ return false; ++ ++ if (startswith(de->d_name, "ask.")) ++ return true; ++ } ++} ++ ++static int manager_dispatch_ask_password_fd(sd_event_source *source, ++ int fd, uint32_t revents, void *userdata) { ++ Manager *m = userdata; ++ ++ assert(m); ++ ++ flush_fd(fd); ++ ++ m->have_ask_password = have_ask_password(); ++ if (m->have_ask_password < 0) ++ /* Log error but continue. Negative have_ask_password ++ * is treated as unknown status. */ ++ log_error("Failed to list /run/systemd/ask-password: %s", strerror(m->have_ask_password)); ++ ++ return 0; ++} ++ ++static void manager_close_ask_password(Manager *m) { ++ assert(m); ++ ++ m->ask_password_inotify_fd = safe_close(m->ask_password_inotify_fd); ++ m->ask_password_event_source = sd_event_source_unref(m->ask_password_event_source); ++ m->have_ask_password = -EINVAL; ++} ++ ++static int manager_check_ask_password(Manager *m) { ++ int r; ++ ++ assert(m); ++ ++ if (!m->ask_password_event_source) { ++ assert(m->ask_password_inotify_fd < 0); ++ ++ mkdir_p_label("/run/systemd/ask-password", 0755); ++ ++ m->ask_password_inotify_fd = inotify_init1(IN_NONBLOCK|IN_CLOEXEC); ++ if (m->ask_password_inotify_fd < 0) { ++ log_error("inotify_init1() failed: %m"); ++ return -errno; ++ } ++ ++ if (inotify_add_watch(m->ask_password_inotify_fd, "/run/systemd/ask-password", IN_CREATE|IN_DELETE|IN_MOVE) < 0) { ++ log_error("Failed to add watch on /run/systemd/ask-password: %m"); ++ manager_close_ask_password(m); ++ return -errno; ++ } ++ ++ r = sd_event_add_io(m->event, &m->ask_password_event_source, ++ m->ask_password_inotify_fd, EPOLLIN, ++ manager_dispatch_ask_password_fd, m); ++ if (r < 0) { ++ log_error("Failed to add event source for /run/systemd/ask-password: %m"); ++ manager_close_ask_password(m); ++ return -errno; ++ } ++ ++ /* Queries might have been added meanwhile... */ ++ manager_dispatch_ask_password_fd(m->ask_password_event_source, ++ m->ask_password_inotify_fd, EPOLLIN, m); ++ } ++ ++ return m->have_ask_password; ++} ++ + static int manager_watch_idle_pipe(Manager *m) { + int r; + +@@ -435,6 +527,9 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) { + m->pin_cgroupfs_fd = m->notify_fd = m->signal_fd = m->time_change_fd = m->dev_autofs_fd = m->private_listen_fd = m->kdbus_fd = -1; + m->current_job_id = 1; /* start as id #1, so that we can leave #0 around as "null-like" value */ + ++ m->ask_password_inotify_fd = -1; ++ m->have_ask_password = -EINVAL; /* we don't know */ ++ + r = manager_default_environment(m); + if (r < 0) + goto fail; +@@ -815,6 +910,8 @@ void manager_free(Manager *m) { + safe_close(m->time_change_fd); + safe_close(m->kdbus_fd); + ++ manager_close_ask_password(m); ++ + manager_close_idle_pipe(m); + + udev_unref(m->udev); +@@ -2479,6 +2576,9 @@ void manager_check_finished(Manager *m) { + /* Turn off confirm spawn now */ + m->confirm_spawn = false; + ++ /* No need to update ask password status when we're going non-interactive */ ++ manager_close_ask_password(m); ++ + if (dual_timestamp_is_set(&m->finish_timestamp)) + return; + +@@ -2801,12 +2901,15 @@ static bool manager_get_show_status(Manager *m) { + if (!IN_SET(manager_state(m), MANAGER_STARTING, MANAGER_STOPPING)) + return false; + ++ /* If we cannot find out the status properly, just proceed. */ ++ if (manager_check_ask_password(m) > 0) ++ return false; ++ + if (m->show_status > 0) + return true; + + /* If Plymouth is running make sure we show the status, so + * that there's something nice to see when people press Esc */ +- + return plymouth_running(); + } + +diff --git a/src/core/manager.h b/src/core/manager.h +index f2c1b0d..aa99ad6 100644 +--- a/src/core/manager.h ++++ b/src/core/manager.h +@@ -259,6 +259,11 @@ struct Manager { + unsigned n_on_console; + unsigned jobs_in_progress_iteration; + ++ /* Do we have any outstanding password prompts? */ ++ int have_ask_password; ++ int ask_password_inotify_fd; ++ sd_event_source *ask_password_event_source; ++ + /* Type=idle pipes */ + int idle_pipe[4]; + sd_event_source *idle_pipe_event_source; diff --git a/debian/patches/series b/debian/patches/series index 1fdc97f..29ceab0 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -148,6 +148,7 @@ units-make-sure-container-getty-.service-stops-resta.patch timesyncd-enable-timesyncd-in-virtual-machines.patch logind-handle-runtime-dir-without-CAP_SYS_ADMIN.patch sd-bus-create-clean-error-when-a-property-Set-call-w.patch +manager-do-not-print-anything-while-passwords-are-be.patch ## Debian specific patches: Add-back-support-for-Debian-specific-config-files.patch @@ -157,7 +158,6 @@ systemctl-don-t-skip-native-units-when-enabling-disa.patch Run-update-rc.d-defaults-before-update-rc.d-enable-d.patch don-t-try-to-start-autovt-units-when-not-running-wit.patch timedated-don-t-rely-on-usr-being-mounted-in-the-ini.patch -fstab-generator-don-t-rely-on-usr-being-mounted-in-t.patch Make-logind-hostnamed-localed-timedated-D-Bus-activa.patch Launch-logind-via-a-shell-wrapper.patch Start-logind-on-demand-via-libpam-systemd.patch @@ -203,3 +203,4 @@ core-don-t-fail-to-run-services-in-user-instances-if.patch PrivateTmp-shouldn-t-require-tmpfs.patch sysv-generator-add-support-for-etc-insserv-overrides.patch syslog-Increase-max_dgram_qlen-by-pulling-in-systemd.patch +Skip-filesystem-check-if-already-done-by-the-initram.patch
signature.asc
Description: OpenPGP digital signature