/usr/include/dovecot/nfs-workarounds.h is in dovecot-dev 1:2.2.9-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #ifndef NFS_WORKAROUNDS_H
#define NFS_WORKAROUNDS_H
/* Note that some systems (Solaris) may use a macro to redefine struct stat */
#include <sys/stat.h>
/* When syscall fails with ESTALE error, how many times to try reopening the
file and retrying the operation. */
#define NFS_ESTALE_RETRY_COUNT 10
/* Same as open(), but try to handle ESTALE errors. */
int nfs_safe_open(const char *path, int flags);
/* Same as stat(), but try to handle ESTALE errors.
Doesn't flush attribute cache. */
int nfs_safe_stat(const char *path, struct stat *buf);
int nfs_safe_lstat(const char *path, struct stat *buf);
/* Same as link(), but handle problems with link() by verifying the file's
link count changes. If links1=TRUE, assume the original file's link count
is 1, otherwise stat() first to find it out. */
int nfs_safe_link(const char *oldpath, const char *newpath, bool links1);
/* Flush attribute cache for given path. The file must not be fcntl locked or
the locks may get dropped. */
void nfs_flush_attr_cache_unlocked(const char *path);
/* Flush attribute cache for given path. The file may be fcntl locked. */
void nfs_flush_attr_cache_maybe_locked(const char *path);
/* Flush attribute cache for a fcntl locked file descriptor. If locking flushes
the attribute cache with the running OS, this function does nothing.
The given path is used only for logging. */
void nfs_flush_attr_cache_fd_locked(const char *path, int fd);
/* Flush file handle cache for given file. */
void nfs_flush_file_handle_cache(const char *path);
/* Flush read cache for fd that was just fcntl locked. If the OS flushes
read cache when fcntl locking file, this function does nothing. */
void nfs_flush_read_cache_locked(const char *path, int fd);
/* Flush read cache for fd that doesn't have fcntl locks. */
void nfs_flush_read_cache_unlocked(const char *path, int fd);
#endif
|