|  |   
     | Re: lug-bg: iztrivane
 
Subject: Re: lug-bg: iztrivaneFrom: Nikolay Mitev <nikolaymitev@xxxxxxx>Date: Thu, 29 Apr 2004 18:05:00 +0300 
 
Anton Zinoviev wrote:
 Проблема е, че има race-condition. В повечето UNIX файлови системи, 
директорията е просто списък filename-> inode.
В inode има reference-count, който съдържа броя на hard links към този 
файл. Този inode се изтрива само когато този refcount стане 0.
Та вземи следната ситуация: olddir/foo.log сочи към inode X и няма други 
hard-links към него. Някоя програма го е отворила и си пише в него нещо. 
В момента, в който тая програма го е отворила, refcount на файла е 
станал 2. Като се премести директорията olddir в newdir и след това се 
изтрие, refcount пада на 1. Т.е. има inode, обаче щом програмата го 
затвори, refcount пада на 0 и самия inode се затрива. Та цялата 
информация, която е записана във файла м/у изтриването на foo.log и 
затварянето на файла от страна на програмата *СЕ ГУБИ БЕЗВЪЗВРАТНО*.
На 25.IV.2004 в 13:00 (+0300) часа Romeo Ninov писа:
 имам малко шантава идеа. проблема е че тя работи само ако се логват 
малки файлове (не както syslog-a)
mv -f olddir newdir && mkdir olddir
rm -rf newdir
 
Хм, това ми изглежда доста добра идея.  Какъв е проблемът при големи
файлове?  При Unix не е проблем да се изтриват от файловата система
файлове, които програмите са отворили и използват активно.
Антон Зиновиев
 
Това може да е, или да не е от значение, но е хубаво да се има впредвид.
cheers,
face
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================
 
 
   |  |  |