Синхронный ввод-вывод

По умолчанию данные записываются в файлы JFS и JFS2 асинхронно.

Однако JFS и JFS2 поддерживают следующие типы синхронного ввода-вывода:
  • Тип, задаваемый флагом O_DSYNC. Если он будет указан при открытии файла, системный вызов write () будет возвращать управление программе только после записи в постоянную память всех данных и метаданных, необходимых для восстановления этих данных.
  • Тип, задаваемый флагом O_SYNC. При указании этого флага функция write() будет выполнять те же действия, что и для флага O_DSYNC. Кроме того, перед передачей управления программе она запишет в постоянную память все атрибуты файла, связанные с вводом-выводом, даже если они не нужны для восстановления файла.

    Перед появлением флага O_DSYNC его функции в AIX выполнял флаг O_SYNC. Этот тип ввода-вывода поддерживается для обеспечения двоичной совместимости. Для того чтобы воспользоваться фактическими функциями флага O_SYNC, при открытии файла нужно указать оба флага O_DSYNC и O_SYNC. Флаг O_SYNC также будет выполнять свои функции, если будет экспортирована переменная среды XPG_SUS_ENV=ON.

  • Тип, задаваемый флагом O_RSYNC. Он выполняет функции флагов O_SYNC и _DSYNC для операций чтения. Для файлов JFS и JFS2 флаг O_RSYNC имеет смысл указывать только в сочетании с флагом O_SYNC. В этом случае системный вызов read будет возвращать управление программе только после записи в постоянную память времени обращения к файлу.