Thomas Nikolajsen [Mon, 15 Sep 2008 20:03:36 +0000 (20:03 +0000)]
Add note on move of kernel and modules to boot directory.
Sascha Wildner [Mon, 15 Sep 2008 18:22:48 +0000 (18:22 +0000)]
Small fix.
Sascha Wildner [Mon, 15 Sep 2008 17:25:39 +0000 (17:25 +0000)]
Sync zoneinfo database with tzdata2008f from elsie.
africa: 8.15 -> 8.16
asia: 8.22 -> 8.23
europe: 8.17 -> 8.18
southamerica: 8.26 -> 8.27
From Arthur David Olson's comments:
* africa
- Mauritius
DST 2008 ff. from last Sun Oct to last Sun Mar
(per Riad M. Hossen Ally)
- Morocco
End of DST 2008 ff. changed from Sep 28 to Sep 1
(per Steffen Thorsen)
* asia
- Gaza
End of DST 2008 ff. changed from second Thu in Sep to
last Thu in Aug (per Alexander Krivenyshev)
- Pakistan
End of DST 2008 only changed from Sep 1 to Nov 1
(per Alexander Krivenyshev)
* europe
- Turkey
Add comments about proposed changes in 2011
(per Sue Williams)
* southamerica
- Argentina
Start of DST 2008 ff. changed from first to third Sun
(per Alexander Krivenyshev)
- Brazil
Start of DST 2008 ff. changed from second to third Sun
(per Steffen Thorsen)
Matthew Dillon [Mon, 15 Sep 2008 17:02:49 +0000 (17:02 +0000)]
Fix an invalidation case that tends to occur under load on NFS servers or
on machines with low amounts of main memory. The buf was being recursively
locked and a ref count assertion was wrong.
The code-path was previously untested and would dependably panic the
machine every time prior to the fix.
Reported-by: Thomas Nikolajsen <thomas.nikolajsen@mail.dk>
Sepherosa Ziehau [Mon, 15 Sep 2008 05:12:56 +0000 (05:12 +0000)]
Update pfil manpage:
- MPSAFE
- PFIL_WAITOK is gone
- Addition of pfil_func_t
- pfil(4) is standard part of kernel
Sepherosa Ziehau [Mon, 15 Sep 2008 05:11:02 +0000 (05:11 +0000)]
We always wait during pfil hook's adding and removing; we could not afford
to fail upon these operations.
Sascha Wildner [Sun, 14 Sep 2008 22:04:36 +0000 (22:04 +0000)]
Avoid conflict with <paths.h>.
Sascha Wildner [Sun, 14 Sep 2008 21:08:29 +0000 (21:08 +0000)]
Fix bug in normalization.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Sun, 14 Sep 2008 20:18:17 +0000 (20:18 +0000)]
Add MLINK for dehumanize_number(3).
Sascha Wildner [Sun, 14 Sep 2008 20:04:59 +0000 (20:04 +0000)]
Add dehumanize_number(3).
Taken-from: NetBSD
Sascha Wildner [Sun, 14 Sep 2008 20:03:06 +0000 (20:03 +0000)]
Add NetBSD 5.0
Sascha Wildner [Sun, 14 Sep 2008 19:15:04 +0000 (19:15 +0000)]
Count only partitions where the size was specified and use 1M as
the theoretical low limit for the '*' partition.
This simplifies the last commit and catches the case where a '*'
partition was specified but the rest of the partitions already
exceeded the slice size.
Sascha Wildner [Sun, 14 Sep 2008 13:49:41 +0000 (13:49 +0000)]
Fix calculation of total_capacity in case the user requested a partition
to span the remainder of the disk. This makes creating only a single '/'
partition with size '*' work.
Sepherosa Ziehau [Sun, 14 Sep 2008 11:13:00 +0000 (11:13 +0000)]
Make pfil(4) MPSAFE using following way:
- The pfil hook lists alteration is serialized by netisr0 (rev 1.10)
- Duplicate the pfil hook lists to be altered.
- Alter the pfil hook lists' duplication
- Save the original pfil hook lists, install the altered pfil hook lists
- Sync all network msgports to make sure that no one sees the original
lists after this syncing
- Free the original pfil hook lists
Sepherosa Ziehau [Sun, 14 Sep 2008 08:58:55 +0000 (08:58 +0000)]
Serialize pfil hooks' adding/removing by netisr0
Hasso Tepper [Sun, 14 Sep 2008 08:58:33 +0000 (08:58 +0000)]
Put IPV6_RTHDR_TYPE_0 define back until the world fixes itself.
Sepherosa Ziehau [Sun, 14 Sep 2008 05:22:44 +0000 (05:22 +0000)]
typedef pfil_func_t
Sepherosa Ziehau [Sun, 14 Sep 2008 04:48:31 +0000 (04:48 +0000)]
pfil_get_hook() is gone
Sepherosa Ziehau [Sun, 14 Sep 2008 04:34:26 +0000 (04:34 +0000)]
Merge pfil_hook_get() into pfil_run_hooks(), use TAILQ_FOREACH afterwards.
Sepherosa Ziehau [Sun, 14 Sep 2008 04:11:10 +0000 (04:11 +0000)]
- Use {TAILQ,LIST}_FOREACH
- Minor style changes
Sepherosa Ziehau [Sun, 14 Sep 2008 02:05:07 +0000 (02:05 +0000)]
pfil_hook_get() is only used in pfil.c, so hide it
Sascha Wildner [Sat, 13 Sep 2008 19:08:05 +0000 (19:08 +0000)]
Add line width calculations for 15/16 and 24/32 bit modes in case
the "Get Scan Line Length" function fails, as it does in Parallels
(in Version 2.2, Build 2112 at least).
Sepherosa Ziehau [Sat, 13 Sep 2008 12:57:07 +0000 (12:57 +0000)]
Move ipfw(4) code for ip_{input,output}() into ip_fw2.c to create in/out
pfil hooks for AF_INET pfil head.
During ipfw(4) module loading, ipfw(4) pfil hooks will be added to AF_INET
pfil head, only if fw_enable is 1. ipfw(4) pfil hooks could be added and
deleted from AF_INET pfil head dynamicly by setting net.inet.ip.fw.enable
(1 to add, 0 to delete)
Simon Schubert [Sat, 13 Sep 2008 11:46:28 +0000 (11:46 +0000)]
Consolidate moved variables.
Simon Schubert [Sat, 13 Sep 2008 11:45:45 +0000 (11:45 +0000)]
Enable hammer read support in boot2.
Simon Schubert [Sat, 13 Sep 2008 11:38:58 +0000 (11:38 +0000)]
Add hammer read support for loader.
Sepherosa Ziehau [Sat, 13 Sep 2008 10:47:23 +0000 (10:47 +0000)]
Add a place holder sysctl function to enable and disable ipfw(4)
Sepherosa Ziehau [Sat, 13 Sep 2008 10:23:39 +0000 (10:23 +0000)]
Move ipfw(4) related bits into ip_fw2_glue.c
Sepherosa Ziehau [Sat, 13 Sep 2008 09:07:31 +0000 (09:07 +0000)]
pf(4) may reassemble ip fragments, so we probably should recalculate hlen
Sepherosa Ziehau [Sat, 13 Sep 2008 08:48:42 +0000 (08:48 +0000)]
- Move IPDIVERT related bits into netinet/ip_divert.c
- Expose ip_reass(), which is used by ip_divert_in()
- Add function ptr ip_divert_p, which will be set to ip_divert(), if IPDIVERT
support is compiled into kernel. ip_divert() dispatches real work to either
ip_divert_in() or ip_divert_out() based on the third parameter
- Hide divert_packet() after above change
Sepherosa Ziehau [Sat, 13 Sep 2008 07:15:14 +0000 (07:15 +0000)]
Add FW_MBUF_REDISPATCH, which should be set by various firewall code,
if ip fragments get reassembled.
Sepherosa Ziehau [Sat, 13 Sep 2008 05:49:08 +0000 (05:49 +0000)]
- Let caller of ip_fw_dn_io_ptr call ip_dn_queue(), so that callers have the
chance to save additional information to dummynet tag (e.g. ip_output)
- In ip_{input,output}(), call ip_dn_queue() outside of ipfw(4) processing
code block
- Move saving dst, ro and flags from ipfw_dummynet_io() to ip_output()
- Remove unused fields in ip_fw_args
- Update comment
Sepherosa Ziehau [Sat, 13 Sep 2008 04:04:39 +0000 (04:04 +0000)]
Use extended interface FIFO depth to workaround CRC errors emitted by
JMC250 chips before rev.B
Information provided by Ethan <ethanhsiao@jmicron.com>
Sepherosa Ziehau [Sat, 13 Sep 2008 03:12:23 +0000 (03:12 +0000)]
- Save device caps in device id array
- CAP_NOJUMBO -> CAP_JUMBO
Sepherosa Ziehau [Sat, 13 Sep 2008 03:04:17 +0000 (03:04 +0000)]
Split capabilities and flags
Sepherosa Ziehau [Sat, 13 Sep 2008 02:47:03 +0000 (02:47 +0000)]
- Clean up header inclusion
- Add revid for JMC250
Sepherosa Ziehau [Sat, 13 Sep 2008 02:30:37 +0000 (02:30 +0000)]
Use IDs from pcidevs.h
Sepherosa Ziehau [Sat, 13 Sep 2008 02:22:40 +0000 (02:22 +0000)]
regen
Sepherosa Ziehau [Sat, 13 Sep 2008 02:21:56 +0000 (02:21 +0000)]
Add IDs for JMicron and its JMC250/JMC260
Sepherosa Ziehau [Fri, 12 Sep 2008 11:37:41 +0000 (11:37 +0000)]
- Fix function parameters order bug:
udp_addrcpu() expects faddr,fport,laddr,lport not faddr,laddr,fport,lport
- Add IP_DEBUGROUTE flag to let ip_output() know that we have confidence in
the inp's route cache. Currently UDP output sets this flag, since after
the above fix, UDP inp's route cache would only be used on its owner CPU
- Rename remote_free_panic to route_assert_owner_access, and expose it as
global variable. Keep net.route.remote_free_panic as an alias to
net.route.assert_owner_access
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1134>
Sascha Wildner [Thu, 11 Sep 2008 20:25:34 +0000 (20:25 +0000)]
Sync libmd with FreeBSD:
* Some bugfixes
* Addition of *_FileChunk()
* Minor changes/cleanup
Sepherosa Ziehau [Thu, 11 Sep 2008 11:23:29 +0000 (11:23 +0000)]
- Add rtfree_remote(), which send rtentry to its owner CPU to be freed.
Print backtrace, if net.route.remote_free_panic is 0. This function
only serves as _temporary_ workaround.
- In ip_output(), if passed rtentry cache's owner CPU is not the current,
then keep it untouched and use the stack variable to relocate the route.
Add comment about it. This at least could happen in the following
callgraph on a TCP socket, on which listen(2) has been called:
ip_input() -> tcp_input() -> tcp_respond() -> ip_output()
Related to Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1134>
YONETANI Tomokazu [Thu, 11 Sep 2008 01:11:42 +0000 (01:11 +0000)]
#ifdef DDB without including "opt_ddb.h"
Matthew Dillon [Thu, 11 Sep 2008 00:35:49 +0000 (00:35 +0000)]
Improve code flow for KASSERT and KKASSERT using __predict_false().
Fix a bug in KKASSERT related to the use of an else clause after
the KKASSERT.
Matthew Dillon [Wed, 10 Sep 2008 18:17:01 +0000 (18:17 +0000)]
Augment loader.conf's manual page to describe hw.usb.hack_defer_exploration
and vfs.root.mountfrom.
Matthias Schmidt [Wed, 10 Sep 2008 10:01:18 +0000 (10:01 +0000)]
Fix spurious printing of the "got link" message.
YONETANI Tomokazu [Wed, 10 Sep 2008 09:50:09 +0000 (09:50 +0000)]
missing crit_exit()
Matthew Dillon [Tue, 9 Sep 2008 23:34:21 +0000 (23:34 +0000)]
Fix bug in hammer mirror command when used with a remote source
specification.
Reported-by: Michael Neumann <mneumann@ntecs.de>
Matthias Schmidt [Tue, 9 Sep 2008 11:38:43 +0000 (11:38 +0000)]
Add example crontab line to the prune section.
Sepherosa Ziehau [Tue, 9 Sep 2008 11:37:08 +0000 (11:37 +0000)]
- ipfw(4) does not need opt_ipdn.h and opt_ipdivert.h
- Use BUILDING_WITH_KERNEL in module Makefile
- Make ipfw(4) building depends on opt_inet.h and opt_ipfw.h
Matthew Dillon [Tue, 9 Sep 2008 07:21:57 +0000 (07:21 +0000)]
Add a MSGF_NORESCHED feature for lwkt thread-based message ports. The
idea is to use it to allow certain async messages to be queued to higher
priority system threads and schedule those threads without forcing an
immediate reschedule.
The feature will be used by the new socket code to prevent cavitation
between a user process and system protocol thread when the user process
is write()ing a lot of data over the network.
Matthew Dillon [Tue, 9 Sep 2008 04:06:20 +0000 (04:06 +0000)]
Fix issues with the scheduler that were causing unnecessary reschedules
between tightly coupled processes as well as inefficient reschedules under
heavy loads.
The basic problem is that a process entering the kernel is 'passively
released', meaning its thread priority is left at TDPRI_USER_NORM. The
thread priority is only raised to TDPRI_KERN_USER if the thread switches
out. This has the side effect of forcing a LWKT reschedule when any other
user process woke up from a blocked condition in the kernel, regardless of
its user priority, because it's LWKT thread was at the higher
TDPRI_KERN_USER priority. This resulted in some significant switching
cavitation under load.
There is a twist here because we do not want to starve threads running in
the kernel acting on behalf of a very low priority user process, because
doing so can deadlock the namecache or other kernel elements that sleep with
lockmgr locks held. In addition, the 'other' LWKT thread might be associated
with a much higher priority user process that we *DO* in fact want to give
cpu to.
The solution is elegant. First, do not force a LWKT reschedule for the
above case. Second, force a LWKT reschedule on every hard clock. Remove
all the old hacks. That's it!
The result is that the current thread is allowed to return to user
mode and run until the next hard clock even if other LWKT threads (running
on behalf of a user process) are runnable. Pure kernel LWKT threads still
get absolute priority, of course. When the hard clock occurs the other LWKT
threads get the cpu and at the end of that whole mess most of those
LWKT threads will be trying to return to user mode and the user scheduler
will be able to select the best one. Doing this on a hardclock boundary
prevents cavitation from occuring at the syscall enter and return boundary.
With this change the TDF_NORESCHED and PNORESCHED flags and their associated
code hacks have also been removed, along with lwkt_checkpri_self() which
is no longer needed.
Sepherosa Ziehau [Mon, 8 Sep 2008 12:41:39 +0000 (12:41 +0000)]
- Factor out ip_localforward()
- Reroute the packet using the route variable on the stack, if it could not
be forwarded locally
- Move next_hop (transparent forwarding) processing out of ipfw code block
Hasso Tepper [Mon, 8 Sep 2008 10:16:23 +0000 (10:16 +0000)]
Turn power off for detached (module unloaded) PCI devices. No power down is
done by default, you have to use hw.pci.do_power_nodriver sysctl.
Sepherosa Ziehau [Sun, 7 Sep 2008 11:12:15 +0000 (11:12 +0000)]
Move next_hop (tranparent forwarding) testing and extraction out of ipfw
processing code block
Sepherosa Ziehau [Sun, 7 Sep 2008 10:03:45 +0000 (10:03 +0000)]
Let ipfw_chk() return IP_FW_{PASS,DENY,DUMMYNET,TEE,DIVERT} and the caller
proceeds according to the return value in well strutured switch block. The
additional information related to the return value (e.g. pipe/queue number
of IP_FW_DUMMYNET) is saved in ip_fw_args.cookie.
Idea-from: FreeBSD
Sascha Wildner [Sun, 7 Sep 2008 08:36:54 +0000 (08:36 +0000)]
Add missing .Nm
Sascha Wildner [Sun, 7 Sep 2008 08:24:40 +0000 (08:24 +0000)]
Minor wording improvement.
Sascha Wildner [Sun, 7 Sep 2008 08:21:57 +0000 (08:21 +0000)]
Add missing .Nm's
Sascha Wildner [Sun, 7 Sep 2008 08:18:54 +0000 (08:18 +0000)]
Use FILES section for referencing files etc.
Sepherosa Ziehau [Sun, 7 Sep 2008 08:15:25 +0000 (08:15 +0000)]
Check the mbuf returned by ip_fw_chk_ptr against NULL before accessing the mbuf
Sascha Wildner [Sun, 7 Sep 2008 08:09:39 +0000 (08:09 +0000)]
Remove unused variables.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Sun, 7 Sep 2008 07:54:48 +0000 (07:54 +0000)]
Use standard section for examples.
Sascha Wildner [Sun, 7 Sep 2008 07:51:39 +0000 (07:51 +0000)]
Use .Dq
Sascha Wildner [Sun, 7 Sep 2008 07:48:29 +0000 (07:48 +0000)]
Remove unused variable.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Sat, 6 Sep 2008 21:31:21 +0000 (21:31 +0000)]
Remove obsolete sentence about ports & improve wording.
Hasso Tepper [Sat, 6 Sep 2008 21:21:31 +0000 (21:21 +0000)]
Make acpi support modules depend on acpi module.
Hasso Tepper [Sat, 6 Sep 2008 21:18:39 +0000 (21:18 +0000)]
Sync pci_[gs]et_powerstate_method with FreeBSD which makes things a little
bit more friendly to devices.
Obtained-from: FreeBSD
Peter Avalos [Sat, 6 Sep 2008 20:43:02 +0000 (20:43 +0000)]
Upgrade to OpenSSL 0.9.8h.
Submitted-by: "VOROSKOI Andras" <voroskoi@gmail.com>
Peter Avalos [Sat, 6 Sep 2008 20:36:16 +0000 (20:36 +0000)]
Merge from vendor branch OPENSSL:
Import OpenSSL 0.9.8h.
Peter Avalos [Sat, 6 Sep 2008 20:36:16 +0000 (20:36 +0000)]
Import OpenSSL 0.9.8h.
Sascha Wildner [Sat, 6 Sep 2008 14:24:44 +0000 (14:24 +0000)]
Add markup.
Sascha Wildner [Sat, 6 Sep 2008 14:18:29 +0000 (14:18 +0000)]
irregardless -> regardless
Sascha Wildner [Sat, 6 Sep 2008 14:17:56 +0000 (14:17 +0000)]
1) Small mdoc nit 2) regardless if -> regardless of.
Sepherosa Ziehau [Sat, 6 Sep 2008 14:12:50 +0000 (14:12 +0000)]
Break long line
Sepherosa Ziehau [Sat, 6 Sep 2008 14:07:30 +0000 (14:07 +0000)]
- Save the route struct in dummynet mbuf tag into the route stack variable,
so that ip_output() no longer depends on dummynet mbuf tag and firewall
code could do anything with it (e.g. delete and free it).
- Move dummynet mbuf tag deletion and ipfw args setup code into ipfw processing
code block.
Thomas Nikolajsen [Sat, 6 Sep 2008 12:14:08 +0000 (12:14 +0000)]
Adapt manual pages to change in boot code to support using
either / or /boot on boot file system.
Sepherosa Ziehau [Sat, 6 Sep 2008 12:04:03 +0000 (12:04 +0000)]
Move dummynet tag extraction and ipfw args setup into ipfw processing
code block
Thomas Nikolajsen [Sat, 6 Sep 2008 10:36:27 +0000 (10:36 +0000)]
Fix Xrefs for ata[control](4): add / change to nata[control](4) as appropriate.
Thomas Nikolajsen [Sat, 6 Sep 2008 10:25:04 +0000 (10:25 +0000)]
Add a bit markup.
Thomas Nikolajsen [Sat, 6 Sep 2008 10:23:39 +0000 (10:23 +0000)]
Add a bit markup.
Thomas Nikolajsen [Sat, 6 Sep 2008 10:18:21 +0000 (10:18 +0000)]
Delete false note.
Thomas Nikolajsen [Sat, 6 Sep 2008 10:15:29 +0000 (10:15 +0000)]
Add an example os how to change label format from 32 bit to 64 bit,
and delete note that it require reboot.
Fix typo: missing line break, which got .Xr hide sentence.
Thomas Nikolajsen [Sat, 6 Sep 2008 10:03:45 +0000 (10:03 +0000)]
Fix typo.
Thomas Nikolajsen [Sat, 6 Sep 2008 09:38:33 +0000 (09:38 +0000)]
Add missing description on context addresses.
Obtained-from: FreeBSD
with minor corrections and additions.
Sepherosa Ziehau [Sat, 6 Sep 2008 06:09:42 +0000 (06:09 +0000)]
- Staticize lo{output,ioctl}
- Regroup function declaration
Sepherosa Ziehau [Sat, 6 Sep 2008 05:46:47 +0000 (05:46 +0000)]
- Move stack variable near its usage
- Use M_ASSERTPKTHDR
- Minor style change
Matthew Dillon [Sat, 6 Sep 2008 05:44:59 +0000 (05:44 +0000)]
Increase sockbuf send and receive buffers to 57344 bytes. In particular,
note that we want to use buffer limits that allow lo0's mtu of 16384 to
be fully utilized.
Sepherosa Ziehau [Sat, 6 Sep 2008 05:36:05 +0000 (05:36 +0000)]
Add hwcsum support to lo interface. This is mainly used to help new sockbuf
testing, however, it accidentally doubles the current lo0 performance.
Suggested-by: dillon@
Sepherosa Ziehau [Sat, 6 Sep 2008 05:07:35 +0000 (05:07 +0000)]
Bring in if_loop.c 1.47.2.9 from FreeBSD (silby@freebsd.org):
don't bother defragging mbuf chains sent to the loopback,
the ipv6 stack can handle them just fine as is.
Noticed-by: dillon@
Matthew Dillon [Sat, 6 Sep 2008 02:25:43 +0000 (02:25 +0000)]
Add missing sleep.
Reported-by: "Hale Boyes, Kevin " <Kevin.HaleBoyes@encana.com>
Matthew Dillon [Sat, 6 Sep 2008 01:36:24 +0000 (01:36 +0000)]
Bump up the size of the boot partition in the boot+HAMMER rconfig
example from 128M to 256M.
Matthew Dillon [Fri, 5 Sep 2008 23:27:12 +0000 (23:27 +0000)]
Fix an endless recursion and double fault which could occur when accessing
a filesystem mounted via nullfs where the mount itself used a path through
another nullfs filesystem.
The forwarding nullm_vfs mount pointer must be set to the actual mount
point and not the governing nullfs. Any read-only status from the governing
nullfs mount will still be inherited.
Sascha Wildner [Fri, 5 Sep 2008 20:43:08 +0000 (20:43 +0000)]
Bump .Dd, add .Lb, and use 'RFC xxxx'.
Matthew Dillon [Fri, 5 Sep 2008 17:03:15 +0000 (17:03 +0000)]
Fix a crash on access to TAP's owning thread. The owning thread can go away
with the descriptor still open, for example if the opening process forks
into a background daemon and the foreground process exits.
Use the SIGIO mechanic to record the owning thread so we can detect if
the process goes away.
Hasso Tepper [Fri, 5 Sep 2008 10:39:36 +0000 (10:39 +0000)]
Quite minimal patchset to help to save some more power - put unused PCI
devices (devices with no drivers) into D3 state. Device has to support it
of course.
Obtained-from: FreeBSD
Hasso Tepper [Fri, 5 Sep 2008 10:28:35 +0000 (10:28 +0000)]
acpi_cpu(4) update. It's now possible to use higher (lower power usage) C
states than C1 in modern (multicore) CPUs.
Obtained-from: FreeBSD
YONETANI Tomokazu [Fri, 5 Sep 2008 03:16:55 +0000 (03:16 +0000)]
Don't fail if the file flags of source and copied symlinks don't match.
Although there's no lchflags(), symlinks inherit file flags of their
parent directory(for history retention flags), so file flags may be set
on symlinks. chflags(1) on a symlink doesn't do anything nor does it
return an error code, so the new behavior is more consistent with
chflags(1)'s.
Symlinks don't inherit file flags on previous versions of DragonFly
or on FreeBSD, so this code has never had a chance to return ENOSYS.
Suggested-By: Matt
Sascha Wildner [Thu, 4 Sep 2008 21:00:28 +0000 (21:00 +0000)]
Ansify (silence -Wold-style-definition)
Sascha Wildner [Thu, 4 Sep 2008 17:30:52 +0000 (17:30 +0000)]
Silence warning.