On Fri, Feb 19, 2021 at 10:56:11PM +0100, David Sterba wrote: > On Tue, Feb 16, 2021 at 04:28:40PM +0000, Sidong Yang wrote: > > Remove a code that inserting new line in fmt_end() for text mode. > > Old code made a failure in fstest btrfs/006. > > > > Signed-off-by: Sidong Yang <realwa...@gmail.com> > > --- > > Hi, I've just read mail that Filipe written that some failure about fstest. > > I'm worried about this patch makes other problem. So make it RFC. Thanks. > > I found the discussion under the device stats patch adding json, the > added line was known and "hopefully not causing problems", but the > fstests seem to notice. > > I think we can fix that by removing the fmt_end newline but we also need > to update how the fmt_print is done for the text output. Ie. for json > there are some strict rules for line continuations (",") but for the > textual output, each line ended by "\n" right away, without delaying > that to the next fmt_* call should work.
You mean that if this patch applied and the code prints device stats for text format manually replaced to fmt_print(), there is no last new line for text output? fmt_print() prints new line before print some value now. I think that it should prints new line at the end of each fmt_print(). like below diff --git a/common/format-output.c b/common/format-output.c index f5b12548..9a9f5bf7 100644 --- a/common/format-output.c +++ b/common/format-output.c @@ -242,7 +239,6 @@ void fmt_print(struct format_ctx *fctx, const char* key, ...) const bool print_colon = row->out_text[0]; int len; - putchar('\n'); fmt_indent1(fctx->indent); len = strlen(row->out_text); @@ -312,6 +308,8 @@ void fmt_print(struct format_ctx *fctx, const char* key, ...) } fmt_end_value(fctx, row); + if (bconf.output_format == CMD_FORMAT_TEXT) + putchar('\n'); /* No newline here, the line is closed by next value or group end */ va_end(args); } Thanks, Sidong