Anvar Bagautdinov wrote:

 > Добрый день
 > 
 > Наткнулся на следующую неприятность, при большом размере
 > дискового cache выделенного для oops (в моем случае это 140G)
 > некорестно отрабатывает кострукции (total_free*100)/total_blks
 > в clean_disk.c.
 > 
 > int total_free=35888054
 > 35888054*100=3588805400 это больше int ( 2147483647)
 > И то что мы делим на total_blks уже роли не играет так кам
 > мы уже переполнили int.
 > 
 > Все бы ничего, если бы такая конструкция использовалась только
 > в выводе, но она же используется и для определения не пора ли
 > удалять старые обьекты и как результат только положненные
 > обьекты в storage тут же удаляются expire.
 > 
 > Пачт прилагается. Хотя возможно нужно просто перевести всех их
 > к uint64 и забыть. Но это уже решать автору, как с его точки зрения 
 > правильно.
 > 
 > FreeBSD 5.2.1-RELEASE, oops последний cvs.
 > # ./oops -V
 > oops version 1.5.23
 > CC=cc
 > CFLAGS=-O2 -pipe -mcpu=pentiumpro -fPIC -D_REENTRANT -DFREEBSD 
 > -D_THREAD_SAFE -DFD_SETSIZE=2048 -I. -DWITH_LARGE_FILES 
 > -I/usr/local/include -I/usr/local/include/db4 -export-dynamic
 > LIBS=-lc_r -lfl -lfl -lpam  -lcrypt  /usr/local/lib/libpcreposix.a 
 > /usr/local/lib/libpcre.a -L/usr/local/lib -ldb4
 > 
 > 
 > -- 
 > 20, Karl Marx Avenue,       Phone:  +7-3832-462484
 > Russia, Novosibirsk 630092  E-mail: [EMAIL PROTECTED]

 > --- src/clean_disk.c.orig    Wed Dec 19 21:15:16 2001
 > +++ src/clean_disk.c Fri Aug 27 12:59:10 2004
 > @@ -182,7 +182,7 @@
 >  {
 >      if ( forced_cleanup )
 >      return(1);
 > -    if ( ( low_free > 0 ) && ((total_free*100)/total_blks < low_free) )
 > +    if ( ( low_free > 0 ) && ((total_free*100.)/total_blks < low_free) )

а зачем тут плавучка?
не проще ли тогда уж total_free/total_blks*100?

-- 
There is no likelihood man can ever tap the power of the atom.
                -- Robert Millikan, Nobel Prize in Physics, 1923
=====================================================================
If you would like to unsubscribe from this list send message to
[EMAIL PROTECTED] with "unsubscribe oops" in message body.
Archive is accessible on http://lists.paco.net/oops-rus/

Дати відповідь електронним листом