1) ext3fs, NTFS, др. распространённые системы гарантируют последовательность записи? Если я сказал записать 4096 байт в конец файла, потом передвинул на начало 3-гигового файла и записал в начало 512 байт, то может оказаться так, что 512 байт в начале окажутся записанными, а 4096 в конце диск/система хитро запланируют записать потом? Я хочу выделить 3 гигабайта места, начать туда записывать, а подтверждение готовности всей бодяги выразить в наличии в начале файла 512 специальных байтов. Если при открытии такого файла в начале есть кодовые 512 байт, значит всё что было нужно записать в остальной части файла — уже записалось. Я понимаю, что в реальности тяжёлая радиация попортит сектора в любой момент и не спасут никакие флаги и заголовки, надо контрольную сумму всего барахла считать, но куле, это Васе понятно. Вопрос про здоровый диск, но с выдёргиванием шнура питания.
2) Допустим я открою один файл, долго буду его записывать 3 гига данных, потом создам рядом файл «ready» нулевой длины как атомарный способ обозначения факта готовности снепшота. При этом я не вызываю fsync() всяких, а просто соблюдаю последовательность. Всё идёт через буферы ФС с отложенной записью. Дёргаю шнур питалова в неопределённый момент. Потом я открываю каталог и смотрю — если лежит «ready» нулевой длины, значит 3-гиговый файл точно дописалсо, иначе бекап считается просранным. Может ли так оказаться, что ФС сработает так, что «ready» будет лежать, а хвост 3-гигового файла ФС ещё только собиралась дописывать? Я куею.