Синхронизирует ли msync все файлы в файловой системе с диском, как fsync на ext3? - PullRequest
1 голос
/ 10 октября 2011

Насколько я знаю, в большинстве систем ext3 с режимом журнала "data = order" fsync не только синхронизирует файл, указанный в fd, но и все файлы в файловой системе, и эта проблема не была исправлена до ядра 2.6.30

И у меня возник вопрос, то есть msync делает то же самое, что и fsync?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Это не ошибка, это особенность. Ext3 - это журнализированная файловая система. data = order означает, что вы запрашиваете изменения в файловой системе для записи в порядке их внесения .

Итак, когда вы запрашиваете синхронизацию изменений в конкретном файле, вы должны зафиксировать все предыдущие изменения, будь то эти файлы или другие, или вы нарушаете директиву, чтобы держать данные в порядке. По этой причине я подозреваю, что msync будет вести себя так же, хотя я не проверял.

На самом деле, можно утверждать, что если это не так, то это ошибка файловой системы ...

0 голосов
/ 11 октября 2011

Читая различные статьи, я не думаю, что это вообще так. Он не сбрасывает все грязные данные на диск, если вы выполните одну команду fsync. Он сбрасывает только метаданные, принадлежащие одному и тому же файлу.

Более того, проблема, описанная с data = order, заключается в том, что она ожидает других ожидающих запросов ввода-вывода к тому же устройству, даже если это логически должно иметь более высокий приоритет. Не для очистки всех грязных данных (например, sync ()).

Я бы хотел провести эксперимент, чтобы выяснить.

...