X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournal-file.h;h=795a446dc8dc636e7408315a07a5c70cbf5cb194;hb=8725d60ae4f7a8471aa8a0207fa105e335d069a6;hp=55cc7153af1f9e50450d08efe8a4f2a42a476860;hpb=cec736d21ff86c4ac81b4d306ddba2120333818c;p=elogind.git diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h index 55cc7153a..795a446dc 100644 --- a/src/journal/journal-file.h +++ b/src/journal/journal-file.h @@ -32,6 +32,8 @@ typedef struct JournalFile { int fd; char *path; struct stat last_stat; + mode_t mode; + int flags; int prot; bool writable; @@ -52,18 +54,12 @@ typedef struct JournalFile { uint64_t current_offset; } JournalFile; -typedef struct JournalCursor { - uint8_t version; - uint8_t reserved[7]; - uint64_t seqnum; - sd_id128_t seqnum_id; - sd_id128_t boot_id; - uint64_t monotonic; - uint64_t realtime; - uint64_t xor_hash; -} JournalCursor; +typedef enum direction { + DIRECTION_UP, + DIRECTION_DOWN +} direction_t; -int journal_file_open(const char *fname, int flags, mode_t mode, JournalFile **ret); +int journal_file_open(const char *fname, int flags, mode_t mode, JournalFile *template, JournalFile **ret); void journal_file_close(JournalFile *j); @@ -71,16 +67,19 @@ int journal_file_move_to_object(JournalFile *f, uint64_t offset, int type, Objec uint64_t journal_file_entry_n_items(Object *o); -int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const struct iovec iovec[], unsigned n_iovec, Object **ret, uint64_t *offset); +int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const struct iovec iovec[], unsigned n_iovec, uint64_t *seqno, Object **ret, uint64_t *offset); int journal_file_move_to_entry(JournalFile *f, uint64_t seqnum, Object **ret, uint64_t *offset); -int journal_file_find_first_entry(JournalFile *f, const void *data, uint64_t size, Object **ret, uint64_t *offset); -int journal_file_find_last_entry(JournalFile *f, const void *data, uint64_t size, Object **ret, uint64_t *offset); +int journal_file_find_first_entry(JournalFile *f, const void *data, uint64_t size, direction_t direction, Object **ret, uint64_t *offset); -int journal_file_next_entry(JournalFile *f, Object *o, Object **ret, uint64_t *offset); -int journal_file_prev_entry(JournalFile *f, Object *o, Object **ret, uint64_t *offset); +int journal_file_next_entry(JournalFile *f, Object *o, direction_t direction, Object **ret, uint64_t *offset); void journal_file_dump(JournalFile *f); +int journal_file_rotate(JournalFile **f); + +int journal_directory_vacuum(const char *directory, uint64_t max_use, uint64_t min_free); + + #endif