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: