This is an automated email from the git hooks/post-receive script.
teigland pushed a commit to branch master
in repository sanlock.
The following commit(s) were added to refs/heads/master by this push:
new 5e42f1e sanlock: fix setting checksum for direct write_leader
5e42f1e is described below
commit 5e42f1e458b304a469e15a3254a7ef9a7d88982d
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Tue Feb 25 16:43:40 2025 -0600
sanlock: fix setting checksum for direct write_leader
---
src/delta_lease.c | 7 ++++++-
src/main.c | 17 +++--------------
2 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/src/delta_lease.c b/src/delta_lease.c
index 144c0ea..fa69ed1 100644
--- a/src/delta_lease.c
+++ b/src/delta_lease.c
@@ -299,11 +299,16 @@ int delta_lease_leader_clobber(struct task *task, int io_timeout,
struct leader_record *leader,
const char *caller)
{
- struct leader_record leader_end;
+ struct leader_record leader_end = { 0 };
+ uint32_t checksum;
int rv;
leader_record_out(leader, &leader_end);
+ checksum = leader_checksum(&leader_end);
+
+ leader_end.checksum = cpu_to_le32(checksum);
+
rv = write_sector(disk, leader->sector_size, host_id - 1, (char *)&leader_end, sizeof(struct leader_record),
task, io_timeout, caller);
if (rv < 0)
diff --git a/src/main.c b/src/main.c
index 6f63bf8..32f7df4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3785,7 +3785,6 @@ static int read_file_leader(struct leader_record *leader, int is_ls)
char field[MAX_LINE];
char val[MAX_LINE];
uint32_t checksum = 0;
- uint32_t new_checksum;
struct leader_record lr;
int rv;
@@ -3806,7 +3805,7 @@ static int read_file_leader(struct leader_record *leader, int is_ls)
rv = sscanf(line, "%s %s", field, val);
if (rv != 2) {
- log_tool("ignore line: \"%s\"", line);
+ log_tool("ignoring empty field \"%s\"", field);
continue;
}
@@ -3848,6 +3847,7 @@ static int read_file_leader(struct leader_record *leader, int is_ls)
} else if (!strcmp(field, "checksum")) {
sscanf(val, "0x%x", &checksum);
+ log_tool("ignoring checksum, will be recalculated.");
} else if (!strcmp(field, "io_timeout")) {
sscanf(val, "%hu", &lr.io_timeout);
@@ -3870,24 +3870,13 @@ static int read_file_leader(struct leader_record *leader, int is_ls)
} else if (!is_ls && !strcmp(field, "write_timestamp")) {
sscanf(val, "%llu", (unsigned long long *)&lr.write_timestamp);
} else {
- log_tool("ignore field: \"%s\"", field);
+ log_tool("ignoring unknown field \"%s\"", field);
}
memset(line, 0, sizeof(line));
}
fclose(file);
- new_checksum = leader_checksum(&lr);
-
- if (!com.force_mode) {
- lr.checksum = new_checksum;
- log_tool("use new generated checksum %x", new_checksum);
- } else {
- lr.checksum = checksum;
- log_tool("warning: using specified checksum %x (generated is %x)",
- checksum, new_checksum);
- }
-
memcpy(leader, &lr, sizeof(lr));
return 0;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.