[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Как реализован "in place upgrade" в Дебиан? На чем основан и чем чревато?



>>>>> Victor Wagner <vitus@wagner.pp.ru> writes:

[…]

 > Кроме уже рассмотренного системного вызова unlink(2) есть еще вызов
 > rename(2).  Он отличается тем, что работает атомарно.  Поэтому если
 > записать файл на диск под именем something.tmp а потом удалить старый
 > something и переименовать something.tmp в something, время когда на
 > диске не существует корректного файла c именем something (либо
 > старого, либо нового) будет минимальным.

	Нулевым, если говорить об ФС.  (Состояние /диска/ может и не
	быть целостным.)  С поправкой на то, что явный unlink на новое
	имя перед вызовом rename не требуется.

--cut: http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html --
    […] If the link named by the new argument exists, it shall be
    removed and old renamed to new.  In this case, a link named new shall
    remain visible to other processes throughout the renaming operation
    and refer either to the file referred to by new or old before the
    operation began.
--cut: http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html --

-- 
FSF associate member #7257


Reply to: