Bug#782426: unblock: systemd/215-15
Michael Biebl
biebl at debian.org
Mon Apr 13 21:03:51 BST 2015
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.org at 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?
-------------- next part --------------
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 <biebl at 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 <biebl at 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 <stapelberg at 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?= <zbyszek at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20150413/762c40ce/attachment-0002.sig>
More information about the Pkg-systemd-maintainers
mailing list