summaryrefslogtreecommitdiffstats
path: root/src/libsystemd/sd-journal/journal-file.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-09-25 23:05:21 +0200
committerYu Watanabe <watanabe.yu+github@gmail.com>2023-11-04 02:54:43 +0100
commitf6548f053d29542d5f640d0d5bf2dca68e808c24 (patch)
tree76beb6cc71db690ba63e17df5f22519fffb824be /src/libsystemd/sd-journal/journal-file.c
parenttest: wait for the nvme device to appear (diff)
downloadsystemd-f6548f053d29542d5f640d0d5bf2dca68e808c24.tar.xz
systemd-f6548f053d29542d5f640d0d5bf2dca68e808c24.zip
sd-journal: drop redundant re-reading of entry array object
This effectively reverts e562f131585fe6ae32b1f035ba48c1548d695259. In the loop of the generic_array_bisect(), the offset of the entry array object is unchanged, the object is read at the beginning of the loop, and we do not read any other entry array object. Hence, it is not necessary to re-read the object every time we use the object.
Diffstat (limited to '')
-rw-r--r--src/libsystemd/sd-journal/journal-file.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c
index 334a28f948..4091336c3d 100644
--- a/src/libsystemd/sd-journal/journal-file.c
+++ b/src/libsystemd/sd-journal/journal-file.c
@@ -2877,8 +2877,8 @@ enum {
static int generic_array_bisect_one(
JournalFile *f,
- uint64_t a, /* offset of entry array object. */
- uint64_t i, /* index of the entry item we will test. */
+ Object *array, /* entry array object */
+ uint64_t i, /* index of the entry item in the array we will test. */
uint64_t needle,
int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
direction_t direction,
@@ -2886,21 +2886,17 @@ static int generic_array_bisect_one(
uint64_t *right,
uint64_t *ret_offset) {
- Object *array;
uint64_t p;
int r;
assert(f);
+ assert(array);
assert(test_object);
assert(left);
assert(right);
assert(*left <= i);
assert(i <= *right);
- r = journal_file_move_to_object(f, OBJECT_ENTRY_ARRAY, a, &array);
- if (r < 0)
- return r;
-
p = journal_file_entry_array_item(f, array, i);
if (p <= 0)
r = -EBADMSG;
@@ -2998,7 +2994,7 @@ static int generic_array_bisect(
return 0;
right--;
- r = generic_array_bisect_one(f, a, right, needle, test_object, direction, &left, &right, &lp);
+ r = generic_array_bisect_one(f, array, right, needle, test_object, direction, &left, &right, &lp);
if (r == -ENOANO) {
n = right;
continue;
@@ -3012,13 +3008,13 @@ static int generic_array_bisect(
* neighbors of the last index we looked at. */
if (last_index > 0 && last_index - 1 < right) {
- r = generic_array_bisect_one(f, a, last_index - 1, needle, test_object, direction, &left, &right, NULL);
+ r = generic_array_bisect_one(f, array, last_index - 1, needle, test_object, direction, &left, &right, NULL);
if (r < 0 && r != -ENOANO)
return r;
}
if (last_index < right) {
- r = generic_array_bisect_one(f, a, last_index + 1, needle, test_object, direction, &left, &right, NULL);
+ r = generic_array_bisect_one(f, array, last_index + 1, needle, test_object, direction, &left, &right, NULL);
if (r < 0 && r != -ENOANO)
return r;
}
@@ -3035,7 +3031,7 @@ static int generic_array_bisect(
assert(left < right);
i = (left + right) / 2;
- r = generic_array_bisect_one(f, a, i, needle, test_object, direction, &left, &right, NULL);
+ r = generic_array_bisect_one(f, array, i, needle, test_object, direction, &left, &right, NULL);
if (r < 0 && r != -ENOANO)
return r;
}
@@ -3065,10 +3061,6 @@ found:
if (subtract_one && t == 0 && i == 0)
return 0;
- r = journal_file_move_to_object(f, OBJECT_ENTRY_ARRAY, a, &array);
- if (r < 0)
- return r;
-
p = journal_file_entry_array_item(f, array, 0);
if (p <= 0)
return -EBADMSG;