O_NOATIME é seguro para ignorar?

0

Estou projetando um sistema de arquivos para ser implementado no FUSE. Eu tenho uma pergunta sobre o que é permitido e a melhor prática. Existem dois cenários:

  • Chamadas do processo do usuário open(..., O_NOATIME). Atualizações do sistema de arquivos atime de qualquer forma. Isso é seguro?
  • Chamadas de processo do usuário open(...) sem O_NOATIME. Sistema de arquivos esquece de atualizar o atime. Isso é seguro?

Suponha que o novo atime seja gravado no disco apenas se outros atributos importantes forem alterados. Portanto, às vezes, uma atualização pode seguir, às vezes não.

O sistema de arquivos não teria parâmetros de montagem para alterar o comportamento. O comportamento descrito acima seria padrão e obrigatório.

    
por ArekBulski 15.04.2015 / 03:33

1 resposta

1

De 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.

Assim, a bandeira não garante que ela será respeitada e é explicitamente mencionada como sendo apenas importante para reduzir a atividade do disco.

Parece que você vai ficar bem no cenário 1, onde você o atualiza mesmo assim.

Quanto ao cenário 2, você ainda deve estar bem. Os sistemas de arquivos podem ser montados com um sinalizador noatime que evita que o atime seja atualizado. Portanto, o código do usuário não pode presumir que absolutamente será atualizado.

    
por Michael Terry 15.04.2015 / 03:41