mirror of
https://github.com/systemd/systemd.git
synced 2024-10-30 06:25:37 +03:00
Merge pull request #23135 from DaanDeMeyer/journal-move
journal: Only move to object if requested
This commit is contained in:
commit
968680b23d
@ -2358,6 +2358,19 @@ static int generic_array_bisect(
|
||||
uint64_t *ret_offset,
|
||||
uint64_t *ret_idx) {
|
||||
|
||||
/* Given an entry array chain, this function finds the object "closest" to the given needle in the
|
||||
* chain, taking into account the provided direction. A function can be provided to determine how
|
||||
* an object is matched against the given needle.
|
||||
*
|
||||
* Given a journal file, the offset of an object and the needle, the test_object() function should
|
||||
* return TEST_LEFT if the needle is located earlier in the entry array chain, TEST_RIGHT if the
|
||||
* needle is located later in the entry array chain and TEST_FOUND if the object matches the needle.
|
||||
* If test_object() returns TEST_FOUND for a specific object, that object's information will be used
|
||||
* to populate the return values of this function. If test_object() never returns TEST_FOUND, the
|
||||
* return values are populated with the details of one of the objects closest to the needle. If the
|
||||
* direction is DIRECTION_UP, the earlier object is used. Otherwise, the later object is used.
|
||||
*/
|
||||
|
||||
uint64_t a, p, t = 0, i = 0, last_p = 0, last_index = UINT64_MAX;
|
||||
bool subtract_one = false;
|
||||
Object *array = NULL;
|
||||
|
@ -493,7 +493,6 @@ static int next_for_match(
|
||||
|
||||
int r;
|
||||
uint64_t np = 0;
|
||||
Object *n;
|
||||
|
||||
assert(j);
|
||||
assert(m);
|
||||
@ -569,12 +568,12 @@ static int next_for_match(
|
||||
|
||||
assert(np > 0);
|
||||
|
||||
r = journal_file_move_to_object(f, OBJECT_ENTRY, np, &n);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (ret) {
|
||||
r = journal_file_move_to_object(f, OBJECT_ENTRY, np, ret);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
if (ret)
|
||||
*ret = n;
|
||||
if (offset)
|
||||
*offset = np;
|
||||
|
||||
@ -633,7 +632,6 @@ static int find_location_for_match(
|
||||
|
||||
} else if (m->type == MATCH_OR_TERM) {
|
||||
uint64_t np = 0;
|
||||
Object *n;
|
||||
|
||||
/* Find the earliest match */
|
||||
|
||||
@ -652,12 +650,12 @@ static int find_location_for_match(
|
||||
if (np == 0)
|
||||
return 0;
|
||||
|
||||
r = journal_file_move_to_object(f, OBJECT_ENTRY, np, &n);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (ret) {
|
||||
r = journal_file_move_to_object(f, OBJECT_ENTRY, np, ret);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
if (ret)
|
||||
*ret = n;
|
||||
if (offset)
|
||||
*offset = np;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user