diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-07-11 01:08:38 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-07-11 01:08:38 +0200 |
commit | a963990ff4ebc7908d3cf82bbd8cf34a42d57b7f (patch) | |
tree | ed0ec7a15879352961a08c88be739f6fb6438f40 /src/journal/journal-internal.h | |
parent | e02d1cf72d115d1d61defdca5b551672d876c6bd (diff) |
journal: rework directory enumeration/watch logic
There's now sd_journal_new_directory() for watching specific journal
directories. This is exposed in journalctl -D.
sd_journal_wait() and sd_journal_process() now return whether changes in
the journal are invalidating or just appending.
We now create inotify kernel watches only when we actually need them
Diffstat (limited to 'src/journal/journal-internal.h')
-rw-r--r-- | src/journal/journal-internal.h | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h index bcffa35055..929dfcdcb8 100644 --- a/src/journal/journal-internal.h +++ b/src/journal/journal-internal.h @@ -31,6 +31,14 @@ #include "list.h" typedef struct Match Match; +typedef struct Location Location; +typedef struct Directory Directory; + +typedef enum location_type { + LOCATION_HEAD, + LOCATION_TAIL, + LOCATION_DISCRETE +} location_type_t; struct Match { char *data; @@ -40,13 +48,7 @@ struct Match { LIST_FIELDS(Match, matches); }; -typedef enum location_type { - LOCATION_HEAD, - LOCATION_TAIL, - LOCATION_DISCRETE -} location_type_t; - -typedef struct Location { +struct Location { location_type_t type; uint64_t seqnum; @@ -62,7 +64,13 @@ typedef struct Location { uint64_t xor_hash; bool xor_hash_set; -} Location; +}; + +struct Directory { + char *path; + int wd; + bool is_root; +}; struct sd_journal { int flags; @@ -73,12 +81,15 @@ struct sd_journal { JournalFile *current_file; uint64_t current_field; + Hashmap *directories_by_path; + Hashmap *directories_by_wd; + int inotify_fd; - Hashmap *inotify_wd_dirs; - Hashmap *inotify_wd_roots; LIST_HEAD(Match, matches); unsigned n_matches; + + unsigned current_invalidate_counter, last_invalidate_counter; }; #endif |