<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>26730</bug_id>
          
          <creation_ts>2011-12-19 19:22:53 +0400</creation_ts>
          <short_desc>Не пишется время в RTC при завершении работы</short_desc>
          <delta_ts>2015-10-14 07:16:11 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>startup</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Liakhovets">a.o.liakh</reporter>
          <assigned_to name="Alexey Gladkov">legion</assigned_to>
          <cc>dd1email</cc>
    
    <cc>evg</cc>
    
    <cc>glebfm</cc>
    
    <cc>ldv</cc>
    
    <cc>legion</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>127807</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Liakhovets">a.o.liakh</who>
    <bug_when>2011-12-19 19:22:53 +0400</bug_when>
    <thetext>При выключении или перезагрузке компьютера текущее время не записывается в RTC.
При этом такая команда
# /etc/rc.d/init.d/clock sync
работает.
На мой взгляд, виновата эта строка в /etc/rc.d/init.d/clock для stop:
 if is_yes &quot;$HWCLOCK_SET_AT_HALT&quot; &amp;&amp; clock_unsynced; then
По-моему, проверка clock_unsynced должна быть инвертирована.
Во всяком случае, я не понимаю, зачем надо записывать в RTC несинхронизированное
время. В исходниках ядра (kernel/time/ntp.c) вроде бы такая же позиция.

Информация о системе:

startup-0.9.8.31-alt1

$ egrep -v &apos;^(#|$)&apos; /etc/sysconfig/clock 
HWCLOCK_SET_TIME_AT_START=true
HWCLOCK_SET_AT_HALT=true
HWCLOCK_ADJUST=false
UTC=true
ZONE=Europe/Moscow

Время синхронизируется при помощи ntp:
$ /usr/sbin/ntpq -nc rv
assID=0 status=0684 leap_none, sync_ntp, 8 events, event_peer/strat_chg,
version=&quot;ntpd 4.2.4p7@1.1607 Tue May 19 14:54:01 UTC 2009 (1)&quot;,
processor=&quot;i686&quot;, system=&quot;Linux/3.1.5-un-def-alt0.M60P.1&quot;, leap=00,
stratum=2, precision=-20, rootdelay=7.316, rootdispersion=42.341,
peer=19195, refid=195.2.64.5,
reftime=d299c9d0.dceaebad  Mon, Dec 19 2011 18:33:52.862, poll=10,
clock=d299ce50.79c52abe  Mon, Dec 19 2011 18:53:04.475, state=4,
offset=-3.215, frequency=-29.903, jitter=1.262, noise=1.239,
stability=0.130

$ /bin/clock_unsynced ; echo $?
1

На Сизифе должно быть то же самое, т.к. startup и clock_unsynced.c такие же.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128351</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2012-01-17 20:03:18 +0400</bug_when>
    <thetext>clock_unsynced возвращает EXIT_SUCCESS если и только если adjtimex(2) возвращает статус STA_UNSYNC.  По идее, только в этом случае время нужно синхронизировать вручную.

Что у вас, кстати, показывает
$ strace -eadjtimex clock_unsynced</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128353</commentid>
    <comment_count>2</comment_count>
    <who name="Andrey Liakhovets">a.o.liakh</who>
    <bug_when>2012-01-17 23:22:52 +0400</bug_when>
    <thetext>(В ответ на комментарий №1)
&gt; clock_unsynced возвращает EXIT_SUCCESS если и только если adjtimex(2)
&gt; возвращает статус STA_UNSYNC.  По идее, только в этом случае время нужно
&gt; синхронизировать вручную.

То есть это именно так и задумано?
Только несинхронизированное системное время может быть записано в RTC при
выключении?
Предполагается, что синхронизированное время и так периодически записывается в
RTC, как сказано в документации ядра (rtc.txt)?

На указанной машине время почти всегда синхронизировано через NTP, но в RTC
ничего не менялось. Поэтому и возник этот баг.
Или ядро пишет в RTC только минуты и секунды? (встретил такое на сайте ntp.org,
код не смотрел)

&gt; Что у вас, кстати, показывает
&gt; $ strace -eadjtimex clock_unsynced

adjtimex({modes=0, offset=20914, freq=-1964601, maxerror=179152, esterror=379,
status=STA_PLL|0x2000, constant=8, precision=1, tolerance=32768000,
time={1326818814, 27600648}, tick=10000, ppsfreq=0, jitter=0, shift=0,
stabil=0, jitcnt=0, calcnt=0, errcnt=0, stbcnt=0}) = 0 (TIME_OK)
+++ exited with 1 +++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128359</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2012-01-18 02:15:50 +0400</bug_when>
    <thetext>(In reply to comment #2)
&gt; (В ответ на комментарий №1)
&gt; &gt; clock_unsynced возвращает EXIT_SUCCESS если и только если adjtimex(2)
&gt; &gt; возвращает статус STA_UNSYNC.  По идее, только в этом случае время нужно
&gt; &gt; синхронизировать вручную.
&gt; 
&gt; То есть это именно так и задумано?
&gt; Только несинхронизированное системное время может быть записано в RTC при
&gt; выключении?
&gt; Предполагается, что синхронизированное время и так периодически записывается в
&gt; RTC, как сказано в документации ядра (rtc.txt)?

Да, в то время, когда был реализован нынешний механизм с clock_unsynced, ядро именно так себя и вело: если ntpd снимал флаг STA_UNSYNC, то ядро само периодически синхронизировало системное время с RTC.

&gt; На указанной машине время почти всегда синхронизировано через NTP, но в RTC
&gt; ничего не менялось. Поэтому и возник этот баг.
&gt; Или ядро пишет в RTC только минуты и секунды? (встретил такое на сайте ntp.org,
&gt; код не смотрел)

Надо проверить, не случилось ли в ядре радикального изменения поведения в этой ситуации.

&gt; &gt; Что у вас, кстати, показывает
&gt; &gt; $ strace -eadjtimex clock_unsynced
&gt; 
&gt; adjtimex({modes=0, offset=20914, freq=-1964601, maxerror=179152, esterror=379,
&gt; status=STA_PLL|0x2000, constant=8, precision=1, tolerance=32768000,
&gt; time={1326818814, 27600648}, tick=10000, ppsfreq=0, jitter=0, shift=0,
&gt; stabil=0, jitcnt=0, calcnt=0, errcnt=0, stbcnt=0}) = 0 (TIME_OK)
&gt; +++ exited with 1 +++

STA_PLL|STA_NANO, вроде бы ничего особенного.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>