Bug 17806

Summary: В новом glibc не работает futimes на kernel-image-ovz-smp-2.6.18
Product: Branch 4.0 Reporter: Vitaly Lipatov <lav>
Component: kernel-image-ovz-smpAssignee: Dmitry V. Levin <ldv>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: aspsk, mibori, mike
Version: 4.0   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
исходник none

Description Vitaly Lipatov 2008-11-06 19:46:16 MSK
$ rpm -q glibc
glibc-2.8.90-alt2

В этой сборке функция futimes реализована через системный вызов utimensat (хотя glibc умеет и по-другому), который отсутствует в ядрах старее 2.6.22.

Получается, что новый glibc не полностью работоспособен на старых ядрах, причём узнать это малореально.
Comment 1 Dmitry V. Levin 2008-11-06 19:57:00 MSK
(In reply to comment #0)
> $ rpm -q glibc
> glibc-2.8.90-alt2
> 
> В этой сборке функция futimes реализована через системный вызов utimensat (хотя glibc
> умеет и по-другому),

Там есть fallback на прежний метод, который работает через /proc.

> который отсутствует в ядрах старее 2.6.22.
> 
> Получается, что новый glibc не полностью работоспособен на старых ядрах,

В чём это выражается?  Вывод strace, ещё чего-нибудь есть?
Comment 2 AntonRundnev 2008-11-06 20:27:51 MSK
есть.

исходник приаттачен.
 
испытание номер раз:
[mibori@builder glibct]$ ./a.out
fd = 4
futimes error, errno == 14
error is : Bad address
[mibori@builder glibct]$ uname -r
2.6.18-ovz-smp-alt24
[mibori@builder glibct]$ rpm -q glibc
glibc-2.8.90-alt2
[mibori@builder glibct]$

испытание номер два:
[mibori@atlant glibct]$ ./a.out
fd = 4
futimes normal
[mibori@atlant glibct]$ uname -r
2.6.25-std-def-alt6.M41.1
[mibori@atlant glibct]$ rpm -q glibc
glibc-2.5.1-alt7
[mibori@atlant glibct]$
Comment 3 AntonRundnev 2008-11-06 20:29:05 MSK
Created attachment 3043 [details]
исходник

исходник
Comment 4 Dmitry V. Levin 2008-11-06 20:37:37 MSK
(In reply to comment #2)
> есть.
> 
> исходник приаттачен.
> 
> испытание номер раз:
> [mibori@builder glibct]$ ./a.out
> fd = 4
> futimes error, errno == 14
> error is : Bad address
> [mibori@builder glibct]$ uname -r
> 2.6.18-ovz-smp-alt24

В 2.6.18-std-smp этой проблемы нет.

В 2.6.18-ovz-smp есть системный вызов utimensat, портированный туда специально людьми из openvz.org (коммит 028stab051-10-g815bdcacf0138c3b677e46445dcc778d2cfcc251).

К сожалению, этот бэкпорт нерабочий, лучше бы его вообще не было.
Я думаю что в следующей сборке ovz-smp для 4.0, которая будет очень скоро, этот бэкпорт будет убран.
Comment 5 Dmitry V. Levin 2008-11-14 02:04:46 MSK
Fixed in kernel-image-ovz-smp-2.6.18-alt26.M40.2
Comment 6 Vitaly Lipatov 2008-11-14 23:17:56 MSK
Спасибо!