Я не уверен, fsync(2)
является атомным;если в буферном кеше файла содержится грязные 100 мегабайт, для записи этих данных потребуется несколько секунд, и ядро может дать сбой во время передачи на диск.Возможно, встроенный механизм DMA может обрабатывать только 4-мегабайтные записи.Возможно, поддержка DMA отсутствует, и ЦП должен планировать каждую запись с помощью 512-байтовых блоков.
Что вы подразумеваете под «атомарным»?
mkdir
, вероятно, «атомарно», либокаталог существует на диске и связан с родительским каталогом, или структура данных каталога еще не связана с родительским каталогом и поэтому недоступна -> не существует.
То же самое может пойтидля mount(2)
: было бы трудно найти mount(2)
на полпути завершенным, и в случае неудачи происходит полное монтирование: либо монтируется файловая система, либо нет.
umount(2)
забавно, это может быть сделано лениво, но как только оно размонтировано, оно не может быть использовано для open(2)
или creat(2)
вызовов.
Итак, я думаю, все сводится к тому, что вы подразумеваете под«атомное»?:)