Глюк dom0 (el5) относительно hwclock [message #25476] |
Thu, 27 December 2007 09:49 |
|
Ситуация: hаботаю под xen-3.1.2 и ядром openvz-el5-051 в качестве dom0. Правлю hwclock и делаю ошибку -- с аргументом
она теперь пытается установить неверное время. Но никакого сообщения об ошибке нет. О проблеме узнал, лишь загрузившись под ядром для нормального режима работы (без xen, но из тех же исходников).
Надо бы проверить эффект на чистом dom0-ядре (без RedHat и openvz), но очень ломает. Есть подозрение, что глюк останется.
А так вроде все работает
|
|
|
|
|
|
Re: Глюк dom0 (el5) относительно hwclock [message #25557 is a reply to message #25531] |
Sun, 30 December 2007 13:33 |
|
Спасибо команде openvz за то, что она есть и тянет нелегкую тему. Счастья и удачи вам в Новом году!
Quote: |
Что Вы подразумеваете под ошибкой с аргументом --hctosys? Что за неправильное время она пытается поставить?
Не объясните ли поподробнее что именно у Вас произошло?
|
Ложная тревога, скорее всего.
Проблема: программа hwclock из util-linux выдает данные из железных часов, не корректируя время (его уход). Из-за этого в GENTOO системное время устанавливается в два шага: сначала корректируется значение времени в железных часах (RTC) с помощью команды "hwclock --adjust", а потом уж устанавливается системное время. Установка железного времени требует доступа по записи к /etc/adjtime. Поэтому в GENTOO процедура выполняется после проверки корнего раздела, что неудобно. Хотелось бы пораньше.
Тем более, что в RedHat установка системного времени происходит именно _до_ монтирования корневого раздела.
Правда тут получается, что в RedHat при отсутствии доступа компа к интернету уход железных часов за то время, когда комп был выключен (неделя в деревне, скажем ) _никак_ не будет скорректирован.
Вот я и решил подправить hwclock от Gentoo (может в RedHat это уже и сделано). Чтоб hwclock при показе времени (аргумент --show), и при установке системного времени (аргумент --hctosys)
использовал уже скорректированное время.
Однако проглядел момент, что данные для корректировки не инициализируются и проограмма начала использовать фактически произвольные данные.
Но под Xen-монитором никаких ошибок стабильно не выдавалось. И проблему я заметил только неделю спустя, когда перезагрузился под ядро без Xen-монитора. Под этим ядром опять же стабильно выдавалась ошибка 22 (неверный аргумент) в системном вызове установки времени.
Эксперимент показал, что какая-то проверка валидности существует и под Xen. Но впечатление, что она более либеральная.
openvz к этому факту, скорее всего, не имеет никакого отношения. Под чистым Xen-ядром 2.6.18 от xen-3.1.2 тоже ошибок не выдается. Единственно, что я еще не проверил -- чистое не Xen-ядро, без openvz. Вдруг оно тоже ошибок выдавать не будет
|
|
|
Re: Глюк dom0 (el5) относительно hwclock [message #25579 is a reply to message #25557] |
Wed, 02 January 2008 01:08 |
|
Quote: |
Единственно, что я еще не проверил -- чистое не Xen-ядро, без openvz. Вдруг оно тоже ошибок выдавать не будет
|
Проверил. Действительно, и оно ошибок не выдает. Вы не вводили ли дополнительных проверок на установку системного времени в openvz? Причем эта проверка в выриант openvz+xen кажется не попала (отдельный файл).
Разбираться более подробно пока нет времени.
|
|
|
Re: Глюк dom0 (el5) относительно hwclock [message #25585 is a reply to message #25579] |
Wed, 02 January 2008 10:57 |
vaverin
Messages: 708 Registered: September 2005
|
Senior Member |
|
|
Сергей,
Я посмотрел sys_settimeofday() и sys_stime(), там везде одинаковые проверки: -EINVAL (-22) возвращается в случае когда
(unsigned long)tv->tv_nsec >= NSEC_PER_SEC
sys_settimeofday() еще проверяет что tv_sec положительное
Но отличий между обычным и xen ядром я не нашел. И патчей наших в этой области я тоже не нашел.
Поэтому я полагаю что это было дело случая -- на одних ядрах tv_nsec стабильно не попадал в диапазон, поэтому шла ошибка, а на других tv_nsec проходил валидацию и в результате ставилось некорректное время.
На всякий случай, пришлите пожалуйста strace, вдруг я где-нить ошибся или посмотрел не туда.
С уважением,
Василий Аверин
|
|
|