Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Jan 2009 08:41:01 +0200
From:      Giorgos Keramidas <keramida@freebsd.org>
To:        Rong-en Fan <grafan@gmail.com>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r187782 - in head: etc/rc.d share/man/man5
Message-ID:  <87hc3i8via.fsf@kobe.laptop>
In-Reply-To: <6eb82e0901282128o1e38724bsc2dd7a44ebb7de1e@mail.gmail.com> (Rong-en Fan's message of "Thu, 29 Jan 2009 13:28:39 %2B0800")
References:  <200901272013.n0RKDOBR095434@svn.freebsd.org> <6eb82e0901272050l6678ea37idc8ea53e948a15e5@mail.gmail.com> <87r62nnb7t.fsf@kobe.laptop> <6eb82e0901282128o1e38724bsc2dd7a44ebb7de1e@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 29 Jan 2009 13:28:39 +0800, Rong-en Fan <grafan@gmail.com> wrote:
>>> Shouldn't we keep ntp running after the clock is adjusted?
>>
>> This is correct too.  The effect of `ntpd_sync_on_start' is supposed to
>> be the same as if we run `ntpdate' before the real ntpd starts, so this
>> option only applies to the first sync-once instance of ntpd.  The real
>> ntpd starts later, and finds the clock pre-synced.
>
> Hmm... I think I'm confused. According to rc.d/ntpd, if ntpd_sync_on_start
> is set to yes, it adds '-q -g' to rc_flags. By doing so, ntpd start makes
> ntpd exists immediately after the first sync. Then, who is responsible
> to start the "real ntpd" you said above?

Oops, testing with ntpd_sync_on_start again I think I broke rc.d/ntpd.

I thought precmd was run in _addition_ to the start rc command, but it
only runs before it and affects the flags of start too.  I think I'll
back out the change until we the sync on start for real.

The folowing seems to work much better, but it shows a duplicate message
about `Starting ntpd.' so I have reverted the broken change until I've
worked through the patch a bit more:

%%%
diff -r 0c625c73ecc0 etc/rc.d/ntpd
--- a/etc/rc.d/ntpd	Wed Jan 28 18:38:39 2009 +0200
+++ b/etc/rc.d/ntpd	Thu Jan 29 08:40:43 2009 +0200
@@ -8,29 +8,48 @@
 # BEFORE:  LOGIN
 # KEYWORD: nojail shutdown
 
 . /etc/rc.subr
 
 name=ntpd
 rcvar=`set_rcvar`
 command="/usr/sbin/${name}"
 pidfile="/var/run/${name}.pid"
 start_precmd="ntpd_precmd"
+sync_cmd="ntpd_sync"
+extra_commands="sync"
 
 load_rc_config $name
 
+ntpd_sync()
+{
+	rc_flags="-c ${ntpd_config} ${ntpd_flags}"
+
+	# Emulate ntpdate by running once and disabling threshold checks.
+	local _rc_flags_save="${rc_flags}"
+	local _sync_on_start="${ntpd_sync_on_start}"
+
+	rc_flags="-q -g $rc_flags"
+	ntpd_sync_on_start="NO"			# Avoid recursion in the next `start'
+
+	run_rc_command start
+
+	rc_flags="${_rc_flags_save}"
+	ntpd_sync_on_start="${_sync_on_start}"
+}
+
 ntpd_precmd()
 {
 	rc_flags="-c ${ntpd_config} ${ntpd_flags}"
 
 	if checkyesno ntpd_sync_on_start; then
-		rc_flags="-q -g $rc_flags"
+		run_rc_command sync
 	fi
 
 	if [ -z "$ntpd_chrootdir" ]; then
 		return 0;
 	fi
 
 	# If running in a chroot cage, ensure that the appropriate files
 	# exist inside the cage, as well as helper symlinks into the cage
 	# from outside.
 	#
%%%



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?87hc3i8via.fsf>