Безопасно ли игнорировать O_NOATIME?

Я проектирую файловую систему для реализации в FUSE. У меня есть вопрос относительно того, что разрешено и лучшая практика. Существует 2 сценария:

  • Вызовы пользовательского процесса open(..., O_NOATIME). Файловая система всегда обновляется. Безопасно ли это?
  • Пользовательский процесс вызывает open(...) без O_NOATIME. Файловая система забывает обновлять время. Безопасно ли это?

Предположим, что новое atime записывается на диск, только если изменились и другие важные атрибуты. Поэтому иногда обновление может последовать, иногда нет.

Файловая система не будет иметь параметров монтирования для изменения поведения. Поведение, описанное выше, будет стандартным и обязательным.

0
задан 15 April 2015 в 04:59

1 ответ

От man 2 open:

O_NOATIME (since Linux 2.6.8)
       Do  not update the file last access time (st_atime in the inode)
       when the file is read(2).  This flag  is  intended  for  use  by
       indexing  or  backup  programs,  where its use can significantly
       reduce the amount of disk activity.  This flag may not be effec‐
       tive  on  all filesystems.  One example is NFS, where the server
       maintains the access time.

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

Кажется, что Вы будете хорошо для сценария 1, где Вы обновляете его так или иначе.

Что касается сценария 2, необходимо все еще быть в порядке. Файловые системы могут быть смонтированы с noatime флаг, который препятствует тому, чтобы atime был обновлен. Таким образом, пользовательский код не может предположить, что абсолютно будет обновлен.

1
ответ дан 15 April 2015 в 14:59

Другие вопросы по тегам:

Похожие вопросы: