Я пытаюсь понять, как работает запись на блочном устройстве. Я понимаю, что все записи должны быть выровнены по секторам. Таким образом, если размер сектора 512 байт, тогда все записи имеют размер 512 байт. Теперь допустим, что я создаю файл и начинаю последовательно в него записывать (без буферизации на стороне приложения). Теперь предположим, что я начинаю с записи 16 байтов с нулевым смещением файла. Как это перевести в запись на уровне блока? Буферизируется ли он до тех пор, пока я не напишу объем данных "размера сектора" и не вытолкну на диск? Если вызывается fsync, заполняются ли оставшиеся байты, а затем записываются? Правильно ли понимание или я ухожу?
Следующий вопрос заключался в следующем. Если у меня есть файл, скажем, размером 64K. Допустим, я выполняю произвольную запись 16 байтов со смещением 64. Затем читается соответствующий сектор из 512 байтов, 16 байтов записываются в буфер со смещением 64 и затем 512 байтов записываются на диск. Правильно ли понимание?