chiark / gitweb /
Zbigniew Jędrzejewski-Szmek [Mon, 25 Feb 2013 04:51:41 +0000 (05:51 +0100)]
log-show: look at everything in /run/log/journal
Logs written by journald from the initramfs may be written to a
directory with the name created from a random machine-id. Afterwards,
when the root filesystem has been mounted and machine-id reinitalized,
logs will be written to the directory with a name created from the
proper machine-id. When logs are flushed to /var/log/journal,
everything is copied to one output directory.
When journalctl without '-m' is run after the logs have been flushed
to /var/log/journal, all messages are shown. However, when run while
logs are still in /run/log/journal, those stored under the random
machine-id will not be shown.
Make journalctl behave the same regardless whether persistent storage
has been enabled or not, and slurp all files from /run/log/journal
even without '-m'.
Zbigniew Jędrzejewski-Szmek [Mon, 25 Feb 2013 14:24:10 +0000 (15:24 +0100)]
bash-completion: journalctl query by binary and device
The approach taken is different between the two:
- since there are many files in /usr, but messages appear
only for a tiny subset, the completion is performed
only for stuff shown by journalctl -F _EXE. This makes
sense because the list is already in proper form.
- since it is hard to convert _KERNEL_DEVICE to device
file name, simply all files in /dev/ are used as possible
completions.
Unfortunately zsh completion requires more work and is not
covered by this commit.
Lennart Poettering [Wed, 27 Feb 2013 01:24:10 +0000 (02:24 +0100)]
update TODO, hackfest edition
Daniel Buch [Tue, 26 Feb 2013 13:24:12 +0000 (14:24 +0100)]
test-util.c: added hexchar, unhexchar, octchar, unoctchar, decchar, undecchar tests
Kay Sievers [Tue, 26 Feb 2013 15:17:54 +0000 (16:17 +0100)]
TODO: update
Harald Hoyer [Tue, 26 Feb 2013 13:58:38 +0000 (14:58 +0100)]
kernel-install: rename the loader entry filename
The wildcard matching the default loader entry should always be able to point to
the same machine.
So instead of sorting by <distribution>-<kernel-version>-<machine-id>
we better sort by <machine-id>-<kernel-version>.
Harald Hoyer [Tue, 26 Feb 2013 09:56:07 +0000 (10:56 +0100)]
kernel-install: create the loader entries with absolute paths relative to /boot
Harald Hoyer [Tue, 26 Feb 2013 07:56:45 +0000 (08:56 +0100)]
kernel-install: replace URLs with man pages in the error messages
Harald Hoyer [Tue, 26 Feb 2013 07:47:18 +0000 (08:47 +0100)]
kernel-install: fixed paths in boot loader entry
For the loader entry a relative path has to be used.
Thomas Hindoe Paaboel Andersen [Mon, 25 Feb 2013 22:41:55 +0000 (23:41 +0100)]
tests: add a few more tests to test-util.c
Add asserts on the resutls in FOREACH_WORD_QUOTED
Added tests for:
FOREACH_WORD
strstrip
delete_chars
in_charset
Kay Sievers [Mon, 25 Feb 2013 22:18:57 +0000 (23:18 +0100)]
kernel-install: remove LANG=
Lennart Poettering [Mon, 25 Feb 2013 17:21:13 +0000 (18:21 +0100)]
nspawn: add --bind= and --bind-ro= to bind mount host paths into the container
Harald Hoyer [Mon, 25 Feb 2013 18:29:16 +0000 (19:29 +0100)]
kernel-install(8): add documentation about the configuration files used
Harald Hoyer [Fri, 22 Feb 2013 16:18:47 +0000 (17:18 +0100)]
kernel-install: add kernel-install tool
Michal Schmidt [Mon, 25 Feb 2013 17:33:08 +0000 (18:33 +0100)]
Revert "nspawn: catch config mistake of specifying -b and args"
This reverts commit
cb96a2c69a312fb089fef4501650f4fc40a1420b.
It is not a mistake to pass args when -b is specified. They will simply
be passed on to the container's init.
The manpage needs fixing, that's true.
Tom Gundersen [Fri, 22 Feb 2013 16:40:00 +0000 (17:40 +0100)]
debug-shell: don't be picky, use /bin/sh rather than /bin/bash
In a minimal initramfs, one might not always have the full bash available.
Typically if using busybox.
Dave Reisner [Sun, 24 Feb 2013 21:39:25 +0000 (16:39 -0500)]
build: remove explicit -shared in LDFLAGS
This doesn't need to be passed, as it's handled by libtool. Since the
default for autoconf is --disable-static, this change is effectively a
noop. It only matters if you pass --enable-static, in which case the
static libs for systemd libraries will actually be built.
Nitpicky, but this only affects systemd libs. The override for the
other libs remains since these libs are always loaded dynamically and
never compiled staticly.
Paul W. Frields [Sun, 24 Feb 2013 14:27:51 +0000 (15:27 +0100)]
journal: fix --until
https://bugs.freedesktop.org/show_bug.cgi?id=58946
Zbigniew Jędrzejewski-Szmek [Sun, 24 Feb 2013 13:10:51 +0000 (14:10 +0100)]
nspawn: catch config mistake of specifying -b and args
Michal Schmidt [Fri, 22 Feb 2013 17:59:07 +0000 (18:59 +0100)]
test: test irreversible jobs
Kay Sievers [Fri, 22 Feb 2013 16:02:06 +0000 (17:02 +0100)]
build-sys: move systemd-analyze to /usr/bin
Zbigniew Jędrzejewski-Szmek [Fri, 22 Feb 2013 15:54:42 +0000 (16:54 +0100)]
TODO: drop two items
Michal Schmidt [Fri, 22 Feb 2013 12:37:57 +0000 (13:37 +0100)]
systemctl: generalize action table to be usable in more action<->verb mappings
Should be no functional change.
Michal Schmidt [Fri, 22 Feb 2013 10:21:47 +0000 (11:21 +0100)]
systemctl: make shutdown operations use irreversible jobs
Occasionally people report problem with reboot/poweroff operations hanging in
the middle. One known cause is when a new transaction to start a unit is
enqueued while the shutdown is going on. The start of the unit conflicts with
the shutdown jobs, so they get cancelled. The failure case can be quite unpleasant,
becase getty and sshd may already be stopped.
Fix it by using irreversible jobs for shutdown (reboot/poweroff/...) actions.
This applies to commands like "reboot", "telinit 6", "systemctl reboot". Should
someone desire to use reversible jobs, they can say "systemctl start reboot.target".`
Michal Schmidt [Fri, 22 Feb 2013 10:21:37 +0000 (11:21 +0100)]
core, systemctl: add support for irreversible jobs
Add a new job mode: replace-irreversibly. Jobs enqueued using this mode
cannot be implicitly canceled by later enqueued conflicting jobs.
They can however still be canceled with an explicit "systemctl cancel"
call.
Michal Schmidt [Fri, 22 Feb 2013 08:56:16 +0000 (09:56 +0100)]
systemctl: make "systemctl default" use "isolate" job mode
"systemctl default" should behave identically to "telinit N" (where N is the
corresponding runlevel target number), therefore it should use isolate job mode
too.
Zbigniew Jędrzejewski-Szmek [Fri, 22 Feb 2013 10:18:46 +0000 (11:18 +0100)]
journal: sd_journal_get_cursor should return 0 on success
Documentation states that 0 is correct, and all other
similar functions return 0 on success.
Pointed-out-by: Steven Hiscocks <steven-systemd@hiscocks.me.uk>
Harald Hoyer [Thu, 21 Feb 2013 09:30:14 +0000 (10:30 +0100)]
TODO: removed ratelimit
Harald Hoyer [Thu, 21 Feb 2013 09:23:58 +0000 (10:23 +0100)]
fstab-generator: change kernel command line mount path for root
Use /sysroot instead of /new_root to mount the real root in the
initramfs.
Max F. Albrecht [Wed, 20 Feb 2013 21:49:57 +0000 (13:49 -0800)]
man: be even more clear about ExecStart's first argument.
Thomas Hindoe Paaboel Andersen [Wed, 20 Feb 2013 21:34:06 +0000 (22:34 +0100)]
tests: more tests for util.c
tests for:
test_parse_pid
test_parse_uid
test_safe_atolli
test_safe_atod
Zbigniew Jędrzejewski-Szmek [Wed, 20 Feb 2013 10:17:43 +0000 (11:17 +0100)]
man: document %%
Daniel Buch [Sun, 17 Feb 2013 19:15:52 +0000 (20:15 +0100)]
test-strv.c: ported test_specifier_printf() to _cleanup_free_ + assert_se + cleanup
Daniel Buch [Mon, 18 Feb 2013 15:48:12 +0000 (16:48 +0100)]
test-strv.c: added OOM check for current tests
New OOM check patch:
I do assert_se() before variable is used to do correct check.
Daniel Buch [Mon, 18 Feb 2013 22:53:33 +0000 (23:53 +0100)]
test-strv.c: added strv_split_nulstr() test
Thomas Hindoe Paaboel Andersen [Mon, 18 Feb 2013 22:49:04 +0000 (23:49 +0100)]
tests: add test of memdup_multiply
William Giokas [Sun, 17 Feb 2013 04:04:29 +0000 (22:04 -0600)]
man: Add reason for disk model info not working
In systemd-bootchart, the disk model information will not be found
unless the root device is specified using `root=/dev/sdxY` on the kernel
line. Just add a note as to why this doesn't happen.
Kay Sievers [Sun, 17 Feb 2013 21:28:21 +0000 (22:28 +0100)]
bootctl: show "n/a" for empty boot option labels
Kay Sievers [Sun, 17 Feb 2013 20:16:56 +0000 (21:16 +0100)]
udev: usb_id: parse only 'size' bytes of the 'descriptors' buffer
Kay Sievers [Sun, 17 Feb 2013 18:55:15 +0000 (19:55 +0100)]
udev: usb_id - ignore non-ASCII serial numbers
On Thu, Feb 7, 2013 at 3:52 PM, Robert Milasan <rmilasan@suse.com> wrote:
> Hi, seems that using some strange usb devices with really bogus serial
> numbers usb_id creates links with junk strings in it:
>
> /dev/disk/by-id/usb-TSSTcorp_BDDVDW_SE-506AB_㡒䍌䜶䉗ぁㄴ㌴†ँ-0:0
>
> Initially was believed that usb_id is to blame, then the kernel, but it
> turns out that really the usb cd/dvd drive has this bogus serial number:
>
> output from dmesg:
> [ 538.200160] usb 1-2: new high-speed USB device number 5 using
> ehci_hcd [ 538.335067] usb 1-2: New USB device found, idVendor=0e8d,
> idProduct=1956 [ 538.335080] usb 1-2: New USB device strings: Mfr=1,
> Product=2, SerialNumber=3 [ 538.335089] usb 1-2: Product: MT1956
> [ 538.335097] usb 1-2: Manufacturer: MediaTek Inc
> [ 538.335105] usb 1-2: SerialNumber:
> \xffffffe3\xffffffa1\xffffff92\xffffffe4\xffffff8d\xffffff8c ...
> [ 538.337540] scsi6 : usb-storage 1-2:1.0 [ 539.341385] scsi 6:0:0:0:
> CD-ROM TSSTcorp BDDVDW SE-506AB TS00 PQ: 0 ANSI: 0
> [ 539.354240] sr0: scsi3-mmc drive: 0x/24x writer dvd-ram cd/rw
> xa/form2 cdda tray [ 539.354777] sr 6:0:0:0: Attached scsi CD-ROM sr0
> [ 539.355122] sr 6:0:0:0: Attached scsi generic sg2 type 5
Kay Sievers [Sun, 17 Feb 2013 18:54:29 +0000 (19:54 +0100)]
efi: compare by substraction
Zeeshan Ali (Khattak) [Sun, 17 Feb 2013 01:21:27 +0000 (03:21 +0200)]
udev: expose new ISO9660 properties from libblkid
Auke Kok [Sun, 17 Feb 2013 00:40:02 +0000 (16:40 -0800)]
TODO
Zbigniew Jędrzejewski-Szmek [Sat, 16 Feb 2013 22:20:28 +0000 (17:20 -0500)]
systemctl: allow comma sepearted property lists
Zbigniew Jędrzejewski-Szmek [Sat, 16 Feb 2013 21:28:21 +0000 (16:28 -0500)]
man: prettify systemctl(1)
- reindent with two spaces, otherwise everything is squeezed near
the right margin,
- mark only optional arguments as optional,
- some typos, etc.
Zbigniew Jędrzejewski-Szmek [Sat, 16 Feb 2013 20:16:24 +0000 (15:16 -0500)]
bootchart: rename --filter to --no-filter
Turning off filtering with --filter is just too confusing.
Config option "Filter" doesn't have to be changed, here
"Filter=yes" already meant to filter.
Zbigniew Jędrzejewski-Szmek [Sat, 16 Feb 2013 18:29:28 +0000 (13:29 -0500)]
bootchart: provide better error messages
Zbigniew Jędrzejewski-Szmek [Sat, 16 Feb 2013 17:40:33 +0000 (12:40 -0500)]
man: move bootchart README to manpage, docbooksify
Jan Janssen [Fri, 15 Feb 2013 15:10:36 +0000 (16:10 +0100)]
systemctl: Don't give re-activation warning if unit is masked
Zbigniew Jędrzejewski-Szmek [Thu, 14 Feb 2013 21:55:24 +0000 (16:55 -0500)]
systemctl: allow status with no units
This makes 'status' behave like 'list-units':
systemctl status -> status of all units
systemctl -t error status -> status of error units
systemctl -t mount status -> etc.
Michal Schmidt [Fri, 15 Feb 2013 21:42:26 +0000 (22:42 +0100)]
unit: don't Require systemd-journald.socket from units
It is not really necessary to have a hard requirement dependency on
systemd-journald.socket in almost every unit. The socket gets pulled
into boot via at least two ways:
sockets.target -> systemd-journald.socket
sysinit.target -> systemd-journald.service -> systemd-journald.socket
So just assume something pulled the socket in and drop the automatic
requirement dependencies on it.
"systemctl stop systemd-journald.socket" will now not take the whole
system down with it.
Michal Schmidt [Fri, 15 Feb 2013 23:34:12 +0000 (00:34 +0100)]
execute: increase severity of journal connect failure message
journald is supposed to work. Failure to connect to its socket implies
losing messages. It should be a very unusual event. Log the failure with
LOG_CRIT.
Just because this unit's stdout/stderr failed to connect to the journal
does not necessarily mean that we shouldn't try to log the failure using
a structured entry, so let's use log_struct_unit.
Michal Schmidt [Fri, 15 Feb 2013 22:36:23 +0000 (23:36 +0100)]
execute: unify setup_{output,error}
The functions are quite similar. Unify them into one.
The source gets shorter, the binary gets slightly smaller.
Michal Schmidt [Fri, 15 Feb 2013 21:43:23 +0000 (22:43 +0100)]
execute: robustness against journald failures
Almost every unit logs to the journal. If journald gets a permanent
failure, units would not be able to start (exit code 209/STDOUT).
Add a fallback to /dev/null to avoid making the system entirely
unusable in such a case.
Michal Schmidt [Fri, 15 Feb 2013 21:41:19 +0000 (22:41 +0100)]
log: fix fallbacks to kmsg
write_to_journal() returns 0 if journal_fd is closed and nothing is
written. We need to make sure we'll try log_open_kmsg() then to make the
fallback work for "journal-or-kmsg".
William Giokas [Thu, 14 Feb 2013 22:59:48 +0000 (16:59 -0600)]
man: Update bootchart.conf(5)
Recent changes in config options makes almost eveny variable in the man
page obsolete.
Harald Hoyer [Thu, 14 Feb 2013 10:26:06 +0000 (11:26 +0100)]
bootchart: if "root=/dev" is not matched, don't try to read /sys
Thomas Hindoe Paaboel Andersen [Thu, 14 Feb 2013 21:16:58 +0000 (22:16 +0100)]
update TODO
Thomas Hindoe Paaboel Andersen [Thu, 14 Feb 2013 21:03:40 +0000 (22:03 +0100)]
bootchart: stricter checks of cli input
Thomas Hindoe Paaboel Andersen [Thu, 14 Feb 2013 20:32:49 +0000 (21:32 +0100)]
bootchart: use conf-parser & CamelCase names in .conf
Umut Tezduyar [Thu, 7 Feb 2013 08:06:20 +0000 (09:06 +0100)]
core: do not overwrite existing units source
Only set source for freshly created .mounts coming from
mountinfo file.
Zbigniew Jędrzejewski-Szmek [Thu, 14 Feb 2013 19:08:09 +0000 (14:08 -0500)]
systemctl: print wall message only if successful
systemctl would write to the wall even if unsuccessful.
https://bugs.freedesktop.org/show_bug.cgi?id=60393
Zbigniew Jędrzejewski-Szmek [Thu, 14 Feb 2013 18:32:19 +0000 (13:32 -0500)]
systemctl: use automatic cleanup
Zbigniew Jędrzejewski-Szmek [Thu, 14 Feb 2013 16:02:02 +0000 (11:02 -0500)]
nspawn: fail if unable to close pipe
William Giokas [Thu, 14 Feb 2013 06:13:54 +0000 (00:13 -0600)]
man: Add even more to the bootchart man page
Essentially transfer the 'README' file in src/bootchart to the man page
for easier reading by users.
Moved the 'History' section to the bottom, before the 'See Also' section.
man/systemd-bootchart.xml | 100 ++++++++++++++++++++++++++++++++++++++--------
1 file changed, 83 insertions(+), 17 deletions(-)
Harald Hoyer [Thu, 14 Feb 2013 10:26:07 +0000 (11:26 +0100)]
bootchart: parse /etc/os-release rather than system-release
Also parse it early, so that we can get it in the initramfs.
Harald Hoyer [Thu, 14 Feb 2013 10:26:05 +0000 (11:26 +0100)]
bootchart: more fixes for bootchart in the initramfs
Zbigniew Jędrzejewski-Szmek [Sat, 12 Jan 2013 21:55:04 +0000 (16:55 -0500)]
nspawn: print PID and show how to enter the namespace
systemd-nspawn will now print the PID of the child.
An example showing how to enter the container is added
to the man page.
Support for nsenter without an explicit command was
added in https://github.com/karelzak/util-linux/commit/
5758069
(post v2.22.2). So this example requires both a new kernel
and the latest util-linux.
Harald Hoyer [Thu, 14 Feb 2013 15:37:31 +0000 (16:37 +0100)]
Harald Hoyer [Thu, 14 Feb 2013 11:26:13 +0000 (12:26 +0100)]
honor SELinux labels, when creating and writing config files
Also split out some fileio functions to fileio.c and provide a SELinux
aware pendant in fileio-label.c
see https://bugzilla.redhat.com/show_bug.cgi?id=881577
Auke Kok [Thu, 14 Feb 2013 04:22:12 +0000 (20:22 -0800)]
bootchart items
Zbigniew Jędrzejewski-Szmek [Thu, 14 Feb 2013 03:46:37 +0000 (22:46 -0500)]
man: use <replaceable> in various places
Zbigniew Jędrzejewski-Szmek [Thu, 14 Feb 2013 02:51:31 +0000 (21:51 -0500)]
man: add filenames to the index
Limiting the addition to filenames from <refsynopsis>
seems to give a good enough S/N ratio.
William Giokas [Wed, 13 Feb 2013 20:49:24 +0000 (14:49 -0600)]
man: bootchart: change /var/log to /run/log
As of [1], bootchart stores files in /run/log, not /var/log, by default.
[1]
f2f85884caac671da84256acb44148df9a4dca70
Auke Kok [Wed, 13 Feb 2013 22:51:12 +0000 (14:51 -0800)]
Add systemd-analyze to .gitignore
Simon Peeters [Wed, 13 Feb 2013 22:17:28 +0000 (14:17 -0800)]
Move systemctl dot to systemd-analyze dot
Simon Peeters [Wed, 6 Feb 2013 14:21:03 +0000 (15:21 +0100)]
systemd-analyze: rewrite in C.
Written by Peeters Simon <peeters.simon@gmail.com>.
Makefile stuff and cleaned up a bit by Auke Kok <auke-jan.h.kok@intel.com>.
Some code inspired by Marc-Antoine Perennou <Marc-Antoine@Perennou.com>.
Marc-Antoine Perennou [Thu, 31 Jan 2013 08:57:25 +0000 (09:57 +0100)]
systemctl: use parse_unit_info
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
Marc-Antoine Perennou [Thu, 31 Jan 2013 08:50:21 +0000 (09:50 +0100)]
dbus: introduce parse_unit_info
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
Marc-Antoine Perennou [Thu, 31 Jan 2013 08:49:35 +0000 (09:49 +0100)]
dbus: import struct unit_info from systemctl
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
Lennart Poettering [Wed, 13 Feb 2013 22:08:52 +0000 (23:08 +0100)]
update TODO
Lennart Poettering [Wed, 13 Feb 2013 22:07:59 +0000 (23:07 +0100)]
build-sys: make EFI support build-time optional
Lennart Poettering [Wed, 13 Feb 2013 21:56:43 +0000 (22:56 +0100)]
build-sys: make PolicyKit support compile-time optional (was runtime-optional already)
Zbigniew Jędrzejewski-Szmek [Wed, 13 Feb 2013 21:13:56 +0000 (16:13 -0500)]
build-sys: fix build without -Wl,--gc-sections
bootctl needs libsystemd-daemon.la too.
Lennart Poettering [Wed, 13 Feb 2013 21:02:40 +0000 (22:02 +0100)]
efi: efi_get_boot_options() should already sort the entries, the random order in the efivars fs is probably not useful
This also introduces a new FOREACH_DIRENT macro and makes use of it.
Lennart Poettering [Wed, 13 Feb 2013 20:24:10 +0000 (21:24 +0100)]
efi: use efi_get_variable_string() instead of efi_get_variable() where we can
Lennart Poettering [Wed, 13 Feb 2013 20:20:42 +0000 (21:20 +0100)]
update TODO
Daniel Buch [Wed, 13 Feb 2013 15:13:39 +0000 (16:13 +0100)]
test-strv.c: Changed assert() to assert_se()
test-strv.c: Indent fix
Daniel Buch [Wed, 13 Feb 2013 15:13:38 +0000 (16:13 +0100)]
test-strv.c: added strv_append test
Daniel Buch [Wed, 13 Feb 2013 15:13:37 +0000 (16:13 +0100)]
test-strv.c: added strv_merge_concat test
Daniel Buch [Wed, 13 Feb 2013 15:13:36 +0000 (16:13 +0100)]
test-strv.c: added strv_merge test
Lennart Poettering [Wed, 13 Feb 2013 18:35:28 +0000 (19:35 +0100)]
TODO
Lennart Poettering [Wed, 13 Feb 2013 18:35:08 +0000 (19:35 +0100)]
selinux: use a dynamically sized string when generating audit messages
https://bugzilla.redhat.com/show_bug.cgi?id=883043
Thomas Hindoe Paaboel Andersen [Wed, 13 Feb 2013 17:13:22 +0000 (18:13 +0100)]
use streq instead of strcmp
Kay Sievers [Wed, 13 Feb 2013 16:49:48 +0000 (17:49 +0100)]
bootctl: always show slashes not backslashes
Kay Sievers [Wed, 13 Feb 2013 16:34:57 +0000 (17:34 +0100)]
efi: unify BootXXXX reading
Lennart Poettering [Wed, 13 Feb 2013 15:25:33 +0000 (16:25 +0100)]
Revert "log_error() if inotify_add_watch() fails"
This reverts commit
2826d14091e43ed3397d862dee79d09d0115c84e.
We never should generate log messages from a library.
Harald Hoyer [Wed, 13 Feb 2013 14:09:36 +0000 (15:09 +0100)]
log_error() if inotify_add_watch() fails
[zj: Reworded message s/to watch/to add watch on/ to make it clear
that it was the watch init action that failed, and not the
"process of watching". I think this way it'll be clearer to
people who don't know what inotify does.]
Zbigniew Jędrzejewski-Szmek [Wed, 13 Feb 2013 14:55:32 +0000 (09:55 -0500)]
sysctl: fix uninitalized memory access in error path
src/sysctl/sysctl.c: In function ‘parse_file’:
src/sysctl/sysctl.c:172:41: warning: ‘property’ may be used uninitialized in this function [-Wmaybe-uninitialized]
Zbigniew Jędrzejewski-Szmek [Mon, 11 Feb 2013 19:42:24 +0000 (14:42 -0500)]
man: rename systemd.conf to systemd-system.conf
Alias as systemd-user.conf is also provided. This should help
users running systemd in session mode.
https://bugzilla.redhat.com/show_bug.cgi?id=690868