1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-10-28 20:25:52 +03:00
lvm2/lib/misc/lvm-file.h
Zdenek Kabelac 6606b1bff3 lvm-file: wrapper to read ctim from stat
When available use nanosecond stat info.

If commands are running closely enough after config update,
the .cache file from persistent filter could have been ignored.

This happens sometimes during i.e. synthetic test suite run.
2015-03-18 13:42:24 +01:00

77 lines
2.4 KiB
C

/*
* Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
* Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
*
* This file is part of LVM2.
*
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions
* of the GNU Lesser General Public License v.2.1.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _LVM_FILE_H
#define _LVM_FILE_H
/*
* Create a temporary filename, and opens a descriptor to the file.
*/
int create_temp_name(const char *dir, char *buffer, size_t len, int *fd,
unsigned *seed);
/*
* NFS-safe rename of a temporary file to a common name, designed
* to avoid race conditions and not overwrite the destination if
* it exists.
*/
int lvm_rename(const char *old, const char *new);
/*
* Return 1 if path exists else return 0
*/
int path_exists(const char *path);
int dir_exists(const char *path);
/*
* Return 1 if dir is empty
*/
int is_empty_dir(const char *dir);
/* Sync directory changes */
void sync_dir(const char *file);
/* fcntl locking wrappers */
int fcntl_lock_file(const char *file, short lock_type, int warn_if_read_only);
void fcntl_unlock_file(int lockfd);
#define is_same_inode(buf1, buf2) \
((buf1).st_ino == (buf2).st_ino && \
(buf1).st_dev == (buf2).st_dev)
#define is_valid_fd(fd) (!(fcntl(fd, F_GETFD) == -1 && errno == EBADF))
/*
* Close the specified stream, taking care to detect and diagnose any write
* error. If there is an error, use the supplied file name in a diagnostic
* that is reported via log_error or log_sys_error, as appropriate.
* Use this function to close a stream when you've written data to it via
* unchecked fprintf, fputc, etc. calls. Return 0 on success, EOF on failure.
*/
int lvm_fclose(FILE *fp, const char *filename);
/*
* Convert stat->st_ctim status of last change in nanoseconds
* uses st_ctime when not available.
*/
void lvm_stat_ctim(struct timespec *ts, const struct stat *buf);
/* Inspired by <sys/time.h> timercmp() macro for timeval */
#define timespeccmp(tsp, usp, cmp)\
(((tsp)->tv_sec == (usp)->tv_sec) ?\
((tsp)->tv_nsec cmp (usp)->tv_nsec) :\
((tsp)->tv_sec cmp (usp)->tv_sec))
#endif