4 #include <linux/types.h>
6 #if __BYTE_ORDER == __LITTLE_ENDIAN
7 #include <linux/byteorder/little_endian.h>
9 #include <linux/byteorder/big_endian.h>
12 extern int log_writes_verbose;
14 #define le64_to_cpu __le64_to_cpu
15 #define le32_to_cpu __le32_to_cpu
21 * Constants copied from kernel file drivers/md/dm-log-writes.c
23 #define LOG_FLUSH_FLAG (1 << 0)
24 #define LOG_FUA_FLAG (1 << 1)
25 #define LOG_DISCARD_FLAG (1 << 2)
26 #define LOG_MARK_FLAG (1 << 3)
28 #define WRITE_LOG_VERSION 1
29 #define WRITE_LOG_MAGIC 0x6a736677736872
33 * Basic info about the log for userspace.
35 * Copied from kernel file drivers/md/dm-log-writes.c
37 struct log_write_super {
45 * sector - the sector we wrote.
46 * nr_sectors - the number of sectors we wrote.
47 * flags - flags for this log entry.
48 * data_len - the size of the data in this log entry, this is for private log
49 * entry stuff, the MARK data provided by userspace for example.
51 * Copied from kernel file drivers/md/dm-log-writes.c
53 struct log_write_entry {
60 #define LOG_IGNORE_DISCARD (1 << 0)
61 #define LOG_DISCARD_NOT_SUPP (1 << 1)
74 struct log *log_open(char *logfile, char *replayfile);
75 int log_replay_next_entry(struct log *log, struct log_write_entry *entry,
77 int log_seek_entry(struct log *log, u64 entry_num);
78 int log_seek_next_entry(struct log *log, struct log_write_entry *entry,
80 void log_free(struct log *log);