00001
00002
00003
00004
00005
00006 #ifndef _COMMON_H
00007 #define _COMMON_H
00008
00009 #include <sys/types.h>
00010 #include <stdint.h>
00011 #include <sys/uio.h>
00012 #include <pthread.h>
00013
00014 #include "fiu-local.h"
00015
00016 #define _F_READ 0x00001
00017 #define _F_WRITE 0x00010
00018 #define _F_LOCK 0x00100
00019 #define _F_TLOCK 0x01000
00020 #define _F_ULOCK 0x10000
00021
00022 #define F_LOCKR (_F_LOCK | _F_READ)
00023 #define F_LOCKW (_F_LOCK | _F_WRITE)
00024 #define F_TLOCKR (_F_TLOCK | _F_READ)
00025 #define F_TLOCKW (_F_TLOCK | _F_WRITE)
00026 #define F_UNLOCK (_F_ULOCK)
00027
00028 #define MAX_TSIZE (SSIZE_MAX)
00029
00031 struct jfs {
00033 int fd;
00034
00036 char *name;
00037
00039 char *jdir;
00040
00042 int jdirfd;
00043
00045 int jfd;
00046
00048 unsigned int *jmap;
00049
00051 uint32_t flags;
00052
00054 uint32_t open_flags;
00055
00057 struct jlinger *ltrans;
00058
00060 size_t ltrans_len;
00061
00063 pthread_mutex_t ltlock;
00064
00066 pthread_mutex_t lock;
00067
00069 struct autosync_cfg *as_cfg;
00070 };
00071
00072
00073 off_t plockf(int fd, int cmd, off_t offset, off_t len);
00074 ssize_t spread(int fd, void *buf, size_t count, off_t offset);
00075 ssize_t spwrite(int fd, const void *buf, size_t count, off_t offset);
00076 ssize_t swritev(int fd, struct iovec *iov, int iovcnt);
00077 int get_jdir(const char *filename, char *jdir);
00078 void get_jtfile(struct jfs *fs, unsigned int tid, char *jtfile);
00079 uint64_t ntohll(uint64_t x);
00080 uint64_t htonll(uint64_t x);
00081
00082 uint32_t checksum_buf(uint32_t sum, const unsigned char *buf, size_t count);
00083
00084 void autosync_check(struct jfs *fs);
00085
00086 #endif
00087