With the introduction of the userdata concept, the term body has become
ambiguous and less intuitive.
To improve clarity, body is renamed to msg_body, making it clear that
the body is not the only content following the header.
In an upcoming patch, the term body_len will also be revised for further
clarity.
The current packet structure is as follows:
release, header, body, [msg_body + userdata]
Here, [msg_body + userdata] collectively forms what is currently
referred to as "body." This renaming helps to distinguish and better
understand each component of the packet.
Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Simon Horman <horms@kernel.org>
---
drivers/net/netconsole.c | 48 +++++++++++++++++++++++-----------------
1 file changed, 28 insertions(+), 20 deletions(-)
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index 8faea9422ea1..c312ad6d5cf8 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -1092,22 +1092,22 @@ static void send_msg_fragmented(struct netconsole_target *nt,
{
static char buf[MAX_PRINT_CHUNK]; /* protected by target_list_lock */
int offset = 0, userdata_len = 0;
- const char *header, *body;
- int header_len, body_len;
+ const char *header, *msgbody;
+ int header_len, msgbody_len;
const char *release;
if (userdata)
userdata_len = nt->userdata_length;
- /* need to insert extra header fields, detect header and body */
+ /* need to insert extra header fields, detect header and msgbody */
header = msg;
- body = memchr(msg, ';', msg_len);
- if (WARN_ON_ONCE(!body))
+ msgbody = memchr(msg, ';', msg_len);
+ if (WARN_ON_ONCE(!msgbody))
return;
- header_len = body - header;
- body_len = msg_len - header_len - 1;
- body++;
+ header_len = msgbody - header;
+ msgbody_len = msg_len - header_len - 1;
+ msgbody++;
/*
* Transfer multiple chunks with the following extra header.
@@ -1122,10 +1122,10 @@ static void send_msg_fragmented(struct netconsole_target *nt,
memcpy(buf + release_len, header, header_len);
header_len += release_len;
- /* for now on, the header will be persisted, and the body
+ /* for now on, the header will be persisted, and the msgbody
* will be replaced
*/
- while (offset < body_len + userdata_len) {
+ while (offset < msgbody_len + userdata_len) {
int this_header = header_len;
int this_offset = 0;
int this_chunk = 0;
@@ -1133,23 +1133,31 @@ static void send_msg_fragmented(struct netconsole_target *nt,
this_header += scnprintf(buf + this_header,
sizeof(buf) - this_header,
",ncfrag=%d/%d;", offset,
- body_len + userdata_len);
+ msgbody_len + userdata_len);
- /* Not all body data has been written yet */
- if (offset < body_len) {
- this_chunk = min(body_len - offset,
+ /* Not all msgbody data has been written yet */
+ if (offset < msgbody_len) {
+ this_chunk = min(msgbody_len - offset,
MAX_PRINT_CHUNK - this_header);
if (WARN_ON_ONCE(this_chunk <= 0))
return;
- memcpy(buf + this_header, body + offset, this_chunk);
+ memcpy(buf + this_header, msgbody + offset, this_chunk);
this_offset += this_chunk;
}
- /* Body is fully written and there is pending userdata to write,
- * append userdata in this chunk
+
+ if (offset + this_offset >= msgbody_len)
+ /* msgbody was finally written, either in the previous
+ * messages and/or in the current buf. Time to write
+ * the userdata.
+ */
+ msgbody_written = true;
+
+ /* Msg body is fully written and there is pending userdata to
+ * write, append userdata in this chunk
*/
- if (offset + this_offset >= body_len &&
- offset + this_offset < userdata_len + body_len) {
- int sent_userdata = (offset + this_offset) - body_len;
+ if (offset + this_offset >= msgbody_len &&
+ offset + this_offset < userdata_len + msgbody_len) {
+ int sent_userdata = (offset + this_offset) - msgbody_len;
int preceding_bytes = this_chunk + this_header;
if (WARN_ON_ONCE(sent_userdata < 0))
--
2.43.5
On Mon, Sep 09, 2024 at 06:07:45AM -0700, Breno Leitao wrote: > With the introduction of the userdata concept, the term body has become > ambiguous and less intuitive. > > To improve clarity, body is renamed to msg_body, making it clear that > the body is not the only content following the header. > > In an upcoming patch, the term body_len will also be revised for further > clarity. > > The current packet structure is as follows: > > release, header, body, [msg_body + userdata] > > Here, [msg_body + userdata] collectively forms what is currently > referred to as "body." This renaming helps to distinguish and better > understand each component of the packet. > > Signed-off-by: Breno Leitao <leitao@debian.org> > Reviewed-by: Simon Horman <horms@kernel.org> > --- > drivers/net/netconsole.c | 48 +++++++++++++++++++++++----------------- > 1 file changed, 28 insertions(+), 20 deletions(-) > > diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c > index 8faea9422ea1..c312ad6d5cf8 100644 > --- a/drivers/net/netconsole.c > +++ b/drivers/net/netconsole.c > @@ -1092,22 +1092,22 @@ static void send_msg_fragmented(struct netconsole_target *nt, > { > static char buf[MAX_PRINT_CHUNK]; /* protected by target_list_lock */ > int offset = 0, userdata_len = 0; > - const char *header, *body; > - int header_len, body_len; > + const char *header, *msgbody; > + int header_len, msgbody_len; > const char *release; > > if (userdata) > userdata_len = nt->userdata_length; > > - /* need to insert extra header fields, detect header and body */ > + /* need to insert extra header fields, detect header and msgbody */ > header = msg; > - body = memchr(msg, ';', msg_len); > - if (WARN_ON_ONCE(!body)) > + msgbody = memchr(msg, ';', msg_len); > + if (WARN_ON_ONCE(!msgbody)) > return; > > - header_len = body - header; > - body_len = msg_len - header_len - 1; > - body++; > + header_len = msgbody - header; > + msgbody_len = msg_len - header_len - 1; > + msgbody++; > > /* > * Transfer multiple chunks with the following extra header. > @@ -1122,10 +1122,10 @@ static void send_msg_fragmented(struct netconsole_target *nt, > memcpy(buf + release_len, header, header_len); > header_len += release_len; > > - /* for now on, the header will be persisted, and the body > + /* for now on, the header will be persisted, and the msgbody > * will be replaced > */ > - while (offset < body_len + userdata_len) { > + while (offset < msgbody_len + userdata_len) { > int this_header = header_len; > int this_offset = 0; > int this_chunk = 0; > @@ -1133,23 +1133,31 @@ static void send_msg_fragmented(struct netconsole_target *nt, > this_header += scnprintf(buf + this_header, > sizeof(buf) - this_header, > ",ncfrag=%d/%d;", offset, > - body_len + userdata_len); > + msgbody_len + userdata_len); > > - /* Not all body data has been written yet */ > - if (offset < body_len) { > - this_chunk = min(body_len - offset, > + /* Not all msgbody data has been written yet */ > + if (offset < msgbody_len) { > + this_chunk = min(msgbody_len - offset, > MAX_PRINT_CHUNK - this_header); > if (WARN_ON_ONCE(this_chunk <= 0)) > return; > - memcpy(buf + this_header, body + offset, this_chunk); > + memcpy(buf + this_header, msgbody + offset, this_chunk); > this_offset += this_chunk; > } > - /* Body is fully written and there is pending userdata to write, > - * append userdata in this chunk > + > + if (offset + this_offset >= msgbody_len) > + /* msgbody was finally written, either in the previous > + * messages and/or in the current buf. Time to write > + * the userdata. > + */ > + msgbody_written = true; Something went a bit wrong somewhere, msgbody_written isn't declared in this scope. > + > + /* Msg body is fully written and there is pending userdata to > + * write, append userdata in this chunk > */ > - if (offset + this_offset >= body_len && > - offset + this_offset < userdata_len + body_len) { > - int sent_userdata = (offset + this_offset) - body_len; > + if (offset + this_offset >= msgbody_len && > + offset + this_offset < userdata_len + msgbody_len) { > + int sent_userdata = (offset + this_offset) - msgbody_len; > int preceding_bytes = this_chunk + this_header; > > if (WARN_ON_ONCE(sent_userdata < 0)) -- pw-bot: cr
© 2016 - 2024 Red Hat, Inc.