DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: thomas@monjalon.net, ferruh.yigit@amd.com,
	bruce.richardson@intel.com, stephen@networkplumber.org,
	mb@smartsharesystems.com
Subject: [PATCH v3 00/14] Detect superfluous newline in logs
Date: Mon, 18 Dec 2023 10:27:22 +0100	[thread overview]
Message-ID: <20231218092738.749604-1-david.marchand@redhat.com> (raw)
In-Reply-To: <20231117131824.1977792-1-david.marchand@redhat.com>

Getting readable and consistent logs is important when running a DPDK
application, especially when troubleshooting.
A common issue with logs is when a DPDK change do not add (or on the
contrary add too many \n) in the format string.

This issue would only get noticed when actually hitting this log (which
may be a situation hard to reach).

This series proposes to introduce a new RTE_LOG_LINE helper that is
responsible for logging a one line message and spews a build error (with
gcc) if any \n is part of the format string.


Because this is still a RFC and a lot of changes are added in this v2, no ack
from the v1 has been kept.

Since the v1 discussion on the cover letter, I changed my mind, and made the
choice to break existing logging helpers exported in the public API.
The reasoning is that those should not be used in the first place:
logs should be produced only by the library that registers the logtype.

Some multiline logging for debugging and the test assert macros are
still present, but in this case an explicit call to RTE_LOG() is done.
This can be checked with a simple:
$ git grep 'RTE_LOG(' -- lib/ :^lib/log/
lib/acl/acl_bld.c:      RTE_LOG(DEBUG, ACL, "Build phase for ACL \"%s\":\n"
lib/acl/acl_gen.c:      RTE_LOG(DEBUG, ACL, "Gen phase for ACL \"%s\":\n"
lib/bpf/bpf_validate.c: RTE_LOG(DEBUG, BPF, "%s(%p) stats:\n"
lib/bpf/bpf_validate.c: RTE_LOG(DEBUG, BPF,
lib/eal/common/eal_common_debug.c:              RTE_LOG(CRIT, EAL, "Error - exiting with code: %d\n"
lib/eal/include/rte_test.h:             RTE_LOG(ERR, EAL, "Test assert %s line %d failed: "           \
lib/ip_frag/ip_frag_common.h:#define    IP_FRAG_LOG(lvl, fmt, args...)  RTE_LOG(lvl, IPFRAG, fmt, ##args)
lib/sched/rte_sched.c:  RTE_LOG(DEBUG, SCHED, "Low level config for pipe profile %u:\n"
lib/sched/rte_sched.c:  RTE_LOG(DEBUG, SCHED, "Low level config for subport profile %u:\n"


Changes since RFC v2:
- sent as non RFC,
- fixed format string crossing line boundaries,
- avoided potential collision with BPF_ namespace,

Changes since RFC v1:
- rebased after Stephen log changes,
- added more fixes as I was making progress on the topic,
- added a check so dpdk developers stop using RTE_LOG(),
- added preparation patches, like "lib: replace logging helpers",
- converted all libraries, keeping some special cases with explicit
  calls to RTE_LOG,


-- 
David Marchand

David Marchand (14):
  hash: remove some dead code
  regexdev: fix logtype register
  lib: use dedicated logtypes and macros
  lib: add newline in logs
  lib: remove redundant newline from logs
  eal/linux: remove log paraphrasing the doc
  bpf: remove log level in internal helper
  lib: simplify multilines log messages
  rcu: introduce a logging helper
  vhost: improve log for memory dumping configuration
  log: add a per line log helper
  lib: convert to per line logging
  lib: replace logging helpers
  lib: use per line logging in helpers

 devtools/checkpatches.sh                   |   8 +
 drivers/crypto/ipsec_mb/ipsec_mb_ops.c     |   2 +-
 lib/acl/acl_bld.c                          |  28 +-
 lib/acl/acl_gen.c                          |   8 +-
 lib/acl/rte_acl.c                          |   8 +-
 lib/acl/tb_mem.c                           |   4 +-
 lib/bbdev/rte_bbdev.c                      |  11 +-
 lib/bpf/bpf.c                              |   2 +-
 lib/bpf/bpf_convert.c                      |  16 +-
 lib/bpf/bpf_exec.c                         |  12 +-
 lib/bpf/bpf_impl.h                         |   5 +-
 lib/bpf/bpf_jit_arm64.c                    |   8 +-
 lib/bpf/bpf_jit_x86.c                      |   4 +-
 lib/bpf/bpf_load.c                         |   2 +-
 lib/bpf/bpf_load_elf.c                     |  24 +-
 lib/bpf/bpf_pkt.c                          |   4 +-
 lib/bpf/bpf_stub.c                         |   6 +-
 lib/bpf/bpf_validate.c                     |  44 +-
 lib/cfgfile/rte_cfgfile.c                  |  18 +-
 lib/compressdev/rte_compressdev_internal.h |   5 +-
 lib/compressdev/rte_compressdev_pmd.c      |   4 +-
 lib/cryptodev/rte_cryptodev.c              |   4 +-
 lib/cryptodev/rte_cryptodev.h              |  16 +-
 lib/dispatcher/rte_dispatcher.c            |  12 +-
 lib/dmadev/rte_dmadev.c                    |   8 +-
 lib/eal/common/eal_common_bus.c            |  22 +-
 lib/eal/common/eal_common_class.c          |   4 +-
 lib/eal/common/eal_common_config.c         |   2 +-
 lib/eal/common/eal_common_debug.c          |   6 +-
 lib/eal/common/eal_common_dev.c            |  80 +-
 lib/eal/common/eal_common_devargs.c        |  18 +-
 lib/eal/common/eal_common_dynmem.c         |  34 +-
 lib/eal/common/eal_common_fbarray.c        |  12 +-
 lib/eal/common/eal_common_interrupts.c     |  38 +-
 lib/eal/common/eal_common_lcore.c          |  26 +-
 lib/eal/common/eal_common_memalloc.c       |  12 +-
 lib/eal/common/eal_common_memory.c         |  66 +-
 lib/eal/common/eal_common_memzone.c        |  24 +-
 lib/eal/common/eal_common_options.c        | 236 +++---
 lib/eal/common/eal_common_proc.c           | 112 +--
 lib/eal/common/eal_common_tailqs.c         |  12 +-
 lib/eal/common/eal_common_thread.c         |  12 +-
 lib/eal/common/eal_common_timer.c          |   6 +-
 lib/eal/common/eal_common_trace_utils.c    |   2 +-
 lib/eal/common/eal_trace.h                 |   4 +-
 lib/eal/common/hotplug_mp.c                |  54 +-
 lib/eal/common/malloc_elem.c               |   6 +-
 lib/eal/common/malloc_heap.c               |  40 +-
 lib/eal/common/malloc_mp.c                 |  72 +-
 lib/eal/common/rte_keepalive.c             |   2 +-
 lib/eal/common/rte_malloc.c                |  10 +-
 lib/eal/common/rte_service.c               |   8 +-
 lib/eal/freebsd/eal.c                      |  74 +-
 lib/eal/freebsd/eal_alarm.c                |   2 +-
 lib/eal/freebsd/eal_dev.c                  |   8 +-
 lib/eal/freebsd/eal_hugepage_info.c        |  22 +-
 lib/eal/freebsd/eal_interrupts.c           |  60 +-
 lib/eal/freebsd/eal_lcore.c                |   2 +-
 lib/eal/freebsd/eal_memalloc.c             |  10 +-
 lib/eal/freebsd/eal_memory.c               |  34 +-
 lib/eal/freebsd/eal_thread.c               |   2 +-
 lib/eal/freebsd/eal_timer.c                |  10 +-
 lib/eal/linux/eal.c                        | 122 +--
 lib/eal/linux/eal_alarm.c                  |   2 +-
 lib/eal/linux/eal_dev.c                    |  40 +-
 lib/eal/linux/eal_hugepage_info.c          |  38 +-
 lib/eal/linux/eal_interrupts.c             | 116 +--
 lib/eal/linux/eal_lcore.c                  |   4 +-
 lib/eal/linux/eal_memalloc.c               | 120 +--
 lib/eal/linux/eal_memory.c                 | 208 ++---
 lib/eal/linux/eal_thread.c                 |   4 +-
 lib/eal/linux/eal_timer.c                  |  14 +-
 lib/eal/linux/eal_vfio.c                   | 270 +++----
 lib/eal/linux/eal_vfio_mp_sync.c           |   4 +-
 lib/eal/riscv/rte_cycles.c                 |   4 +-
 lib/eal/unix/eal_filesystem.c              |  14 +-
 lib/eal/unix/eal_firmware.c                |   2 +-
 lib/eal/unix/eal_unix_memory.c             |   8 +-
 lib/eal/unix/rte_thread.c                  |  34 +-
 lib/eal/windows/eal.c                      |  36 +-
 lib/eal/windows/eal_alarm.c                |  12 +-
 lib/eal/windows/eal_debug.c                |   8 +-
 lib/eal/windows/eal_dev.c                  |   8 +-
 lib/eal/windows/eal_hugepages.c            |  10 +-
 lib/eal/windows/eal_interrupts.c           |  10 +-
 lib/eal/windows/eal_lcore.c                |   6 +-
 lib/eal/windows/eal_memalloc.c             |  50 +-
 lib/eal/windows/eal_memory.c               |  22 +-
 lib/eal/windows/eal_windows.h              |   4 +-
 lib/eal/windows/include/rte_windows.h      |   4 +-
 lib/eal/windows/rte_thread.c               |  28 +-
 lib/efd/rte_efd.c                          |  58 +-
 lib/ethdev/ethdev_driver.c                 |  44 +-
 lib/ethdev/ethdev_pci.h                    |   2 +-
 lib/ethdev/ethdev_private.c                |  10 +-
 lib/ethdev/rte_class_eth.c                 |   2 +-
 lib/ethdev/rte_ethdev.c                    | 854 ++++++++++-----------
 lib/ethdev/rte_ethdev.h                    |  51 +-
 lib/ethdev/rte_ethdev_cman.c               |  16 +-
 lib/ethdev/rte_ethdev_telemetry.c          |  44 +-
 lib/ethdev/rte_flow.c                      |  64 +-
 lib/ethdev/rte_flow.h                      |   3 -
 lib/ethdev/sff_telemetry.c                 |  30 +-
 lib/eventdev/eventdev_pmd.h                |  14 +-
 lib/eventdev/rte_event_crypto_adapter.c    |  12 +-
 lib/eventdev/rte_event_dma_adapter.c       |  18 +-
 lib/eventdev/rte_event_eth_rx_adapter.c    |  40 +-
 lib/eventdev/rte_event_eth_tx_adapter.c    |   2 +-
 lib/eventdev/rte_event_timer_adapter.c     |  21 +-
 lib/eventdev/rte_eventdev.c                |  10 +-
 lib/fib/rte_fib.c                          |  14 +-
 lib/fib/rte_fib6.c                         |  14 +-
 lib/gpudev/gpudev.c                        |   6 +-
 lib/graph/graph_private.h                  |   5 +-
 lib/hash/rte_cuckoo_hash.c                 |  52 +-
 lib/hash/rte_cuckoo_hash.h                 |  11 -
 lib/hash/rte_fbk_hash.c                    |   4 +-
 lib/hash/rte_hash_crc.c                    |  12 +-
 lib/hash/rte_thash.c                       |  20 +-
 lib/hash/rte_thash_gfni.c                  |   8 +-
 lib/ip_frag/rte_ip_frag_common.c           |   8 +-
 lib/latencystats/rte_latencystats.c        |  41 +-
 lib/log/log.c                              |   6 +-
 lib/log/rte_log.h                          |  21 +
 lib/lpm/rte_lpm.c                          |  12 +-
 lib/lpm/rte_lpm6.c                         |  10 +-
 lib/mbuf/rte_mbuf.c                        |  14 +-
 lib/mbuf/rte_mbuf_dyn.c                    |  14 +-
 lib/mbuf/rte_mbuf_pool_ops.c               |   4 +-
 lib/member/member.h                        |  14 +
 lib/member/rte_member.c                    |  15 +-
 lib/member/rte_member.h                    |   9 -
 lib/member/rte_member_heap.h               |  39 +-
 lib/member/rte_member_ht.c                 |  13 +-
 lib/member/rte_member_sketch.c             |  41 +-
 lib/member/rte_member_vbf.c                |   9 +-
 lib/mempool/rte_mempool.c                  |  24 +-
 lib/mempool/rte_mempool.h                  |   2 +-
 lib/mempool/rte_mempool_ops.c              |  10 +-
 lib/metrics/rte_metrics_telemetry.c        |   6 +-
 lib/mldev/rte_mldev.c                      | 102 +--
 lib/mldev/rte_mldev.h                      |   5 +-
 lib/net/rte_net_crc.c                      |  14 +-
 lib/node/ethdev_rx.c                       |   4 +-
 lib/node/ip4_lookup.c                      |   2 +-
 lib/node/ip6_lookup.c                      |   2 +-
 lib/node/kernel_rx.c                       |   8 +-
 lib/node/kernel_tx.c                       |   4 +-
 lib/node/node_private.h                    |   6 +-
 lib/pdump/rte_pdump.c                      | 113 ++-
 lib/pipeline/rte_pipeline.c                | 228 +++---
 lib/port/rte_port_ethdev.c                 |  18 +-
 lib/port/rte_port_eventdev.c               |  18 +-
 lib/port/rte_port_fd.c                     |  24 +-
 lib/port/rte_port_frag.c                   |  14 +-
 lib/port/rte_port_ras.c                    |  12 +-
 lib/port/rte_port_ring.c                   |  18 +-
 lib/port/rte_port_sched.c                  |  12 +-
 lib/port/rte_port_source_sink.c            |  48 +-
 lib/port/rte_port_sym_crypto.c             |  18 +-
 lib/power/guest_channel.c                  |  36 +-
 lib/power/power_acpi_cpufreq.c             | 116 +--
 lib/power/power_amd_pstate_cpufreq.c       | 132 ++--
 lib/power/power_common.c                   |  14 +-
 lib/power/power_common.h                   |   6 +-
 lib/power/power_cppc_cpufreq.c             | 130 ++--
 lib/power/power_intel_uncore.c             |  72 +-
 lib/power/power_kvm_vm.c                   |  22 +-
 lib/power/power_pstate_cpufreq.c           | 156 ++--
 lib/power/rte_power.c                      |  22 +-
 lib/power/rte_power_pmd_mgmt.c             |  34 +-
 lib/power/rte_power_uncore.c               |  14 +-
 lib/rawdev/rte_rawdev_pmd.h                |   4 +-
 lib/rcu/rte_rcu_qsbr.c                     |  66 +-
 lib/rcu/rte_rcu_qsbr.h                     |  17 +-
 lib/regexdev/rte_regexdev.c                |  88 +--
 lib/regexdev/rte_regexdev.h                |  13 +-
 lib/reorder/rte_reorder.c                  |  32 +-
 lib/rib/rte_rib.c                          |  10 +-
 lib/rib/rte_rib6.c                         |  10 +-
 lib/ring/rte_ring.c                        |  24 +-
 lib/sched/rte_pie.c                        |  18 +-
 lib/sched/rte_sched.c                      | 274 +++----
 lib/stack/rte_stack.c                      |   8 +-
 lib/stack/stack_pvt.h                      |   4 +-
 lib/table/rte_table_acl.c                  |  72 +-
 lib/table/rte_table_array.c                |  16 +-
 lib/table/rte_table_hash_cuckoo.c          |  22 +-
 lib/table/rte_table_hash_ext.c             |  22 +-
 lib/table/rte_table_hash_key16.c           |  38 +-
 lib/table/rte_table_hash_key32.c           |  38 +-
 lib/table/rte_table_hash_key8.c            |  38 +-
 lib/table/rte_table_hash_lru.c             |  22 +-
 lib/table/rte_table_lpm.c                  |  42 +-
 lib/table/rte_table_lpm_ipv6.c             |  44 +-
 lib/table/rte_table_stub.c                 |   4 +-
 lib/telemetry/telemetry.c                  |  39 +-
 lib/vhost/fd_man.c                         |   8 +-
 lib/vhost/iotlb.c                          |  36 +-
 lib/vhost/socket.c                         | 102 +--
 lib/vhost/vdpa.c                           |   8 +-
 lib/vhost/vduse.c                          | 120 +--
 lib/vhost/vduse.h                          |   4 +-
 lib/vhost/vhost.c                          | 118 +--
 lib/vhost/vhost.h                          |  24 +-
 lib/vhost/vhost_crypto.c                   |  12 +-
 lib/vhost/vhost_user.c                     | 530 ++++++-------
 lib/vhost/virtio_net.c                     | 188 ++---
 lib/vhost/virtio_net_ctrl.c                |  38 +-
 209 files changed, 3976 insertions(+), 3963 deletions(-)
 create mode 100644 lib/member/member.h

-- 
2.43.0


  parent reply	other threads:[~2023-12-18  9:27 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-17 13:18 [RFC 0/3] " David Marchand
2023-11-17 13:18 ` [RFC 1/3] lib: remove redundant newline from logs David Marchand
2023-11-17 13:18 ` [RFC 2/3] log: add a per line log helper David Marchand
2023-11-17 13:18 ` [RFC 3/3] lib: use per line logging David Marchand
2023-11-17 13:27 ` [RFC 0/3] Detect superfluous newline in logs Bruce Richardson
2023-11-17 13:48   ` David Marchand
2023-11-17 14:11     ` Bruce Richardson
2023-11-17 14:21       ` David Marchand
2023-11-17 13:47 ` Morten Brørup
2023-11-17 14:09   ` David Marchand
2023-11-17 14:17     ` Morten Brørup
2023-12-08 14:59 ` [RFC v2 00/14] " David Marchand
2023-12-08 14:59   ` [RFC v2 01/14] hash: remove some dead code David Marchand
2023-12-08 16:53     ` Stephen Hemminger
2023-12-08 20:46     ` Tyler Retzlaff
2023-12-08 14:59   ` [RFC v2 02/14] regexdev: fix logtype register David Marchand
2023-12-08 16:58     ` Stephen Hemminger
2023-12-08 20:46     ` Tyler Retzlaff
2023-12-14 10:11     ` Ori Kam
2023-12-08 14:59   ` [RFC v2 03/14] lib: use dedicated logtypes David Marchand
2023-12-08 17:00     ` Stephen Hemminger
2023-12-08 20:49     ` Tyler Retzlaff
2023-12-16  9:47     ` Andrew Rybchenko
2023-12-08 14:59   ` [RFC v2 04/14] lib: add newline in logs David Marchand
2023-12-08 17:01     ` Stephen Hemminger
2023-12-11 12:38       ` David Marchand
2023-12-08 20:50     ` Tyler Retzlaff
2023-12-16  9:43     ` Andrew Rybchenko
2023-12-08 14:59   ` [RFC v2 05/14] lib: remove redundant newline from logs David Marchand
2023-12-08 17:02     ` Stephen Hemminger
2023-12-09  7:15     ` fengchengwen
2023-12-11  8:48     ` Mattias Rönnblom
2023-12-08 14:59   ` [RFC v2 06/14] eal/linux: remove log paraphrasing the doc David Marchand
2023-12-08 17:03     ` Stephen Hemminger
2023-12-08 20:54     ` Tyler Retzlaff
2023-12-08 14:59   ` [RFC v2 07/14] bpf: remove log level in internal helper David Marchand
2023-12-08 17:04     ` Stephen Hemminger
2023-12-08 21:02     ` Tyler Retzlaff
2023-12-08 14:59   ` [RFC v2 08/14] lib: simplify multilines log messages David Marchand
2023-12-08 17:05     ` Stephen Hemminger
2023-12-16  9:26       ` Andrew Rybchenko
2023-12-08 21:03     ` Tyler Retzlaff
2023-12-08 14:59   ` [RFC v2 09/14] rcu: introduce a logging helper David Marchand
2023-12-08 17:08     ` Stephen Hemminger
2023-12-08 18:26     ` Honnappa Nagarahalli
2023-12-08 21:27     ` Tyler Retzlaff
2023-12-12 15:00       ` David Marchand
2023-12-12 19:11         ` Tyler Retzlaff
2023-12-18  9:37           ` David Marchand
2023-12-18 19:52             ` Tyler Retzlaff
2023-12-08 14:59   ` [RFC v2 10/14] vhost: improve log for memory dumping configuration David Marchand
2023-12-08 17:14     ` Stephen Hemminger
2023-12-08 14:59   ` [RFC v2 11/14] log: add a per line log helper David Marchand
2023-12-08 17:15     ` Stephen Hemminger
2023-12-09  7:21     ` fengchengwen
2023-12-08 14:59   ` [RFC v2 12/14] lib: convert to per line logging David Marchand
2023-12-08 17:16     ` Stephen Hemminger
2023-12-11 12:34       ` David Marchand
2023-12-16  9:30     ` Andrew Rybchenko
2023-12-08 14:59   ` [RFC v2 13/14] lib: replace logging helpers David Marchand
2023-12-08 17:18     ` Stephen Hemminger
2023-12-11 12:36       ` David Marchand
2023-12-16  9:42     ` Andrew Rybchenko
2023-12-08 14:59   ` [RFC v2 14/14] lib: use per line logging in helpers David Marchand
2023-12-09  7:19     ` fengchengwen
2023-12-16  9:41     ` Andrew Rybchenko
2023-12-18  9:27 ` David Marchand [this message]
2023-12-18  9:27   ` [PATCH v3 01/14] hash: remove some dead code David Marchand
2023-12-18  9:27   ` [PATCH v3 02/14] regexdev: fix logtype register David Marchand
2023-12-18  9:27   ` [PATCH v3 03/14] lib: use dedicated logtypes and macros David Marchand
2023-12-18  9:27   ` [PATCH v3 04/14] lib: add newline in logs David Marchand
2023-12-18  9:27   ` [PATCH v3 05/14] lib: remove redundant newline from logs David Marchand
2023-12-18  9:27   ` [PATCH v3 06/14] eal/linux: remove log paraphrasing the doc David Marchand
2023-12-18  9:27   ` [PATCH v3 07/14] bpf: remove log level in internal helper David Marchand
2023-12-18  9:27   ` [PATCH v3 08/14] lib: simplify multilines log messages David Marchand
2023-12-18 10:05     ` Andrew Rybchenko
2023-12-18  9:27   ` [PATCH v3 09/14] rcu: introduce a logging helper David Marchand
2023-12-18  9:27   ` [PATCH v3 10/14] vhost: improve log for memory dumping configuration David Marchand
2023-12-18  9:27   ` [PATCH v3 11/14] log: add a per line log helper David Marchand
2023-12-18  9:27   ` [PATCH v3 12/14] lib: convert to per line logging David Marchand
2023-12-18  9:27   ` [PATCH v3 13/14] lib: replace logging helpers David Marchand
2023-12-18  9:27   ` [PATCH v3 14/14] lib: use per line logging in helpers David Marchand
2023-12-18 14:37 ` [PATCH v4 00/14] Detect superfluous newline in logs David Marchand
2023-12-18 14:37   ` [PATCH v4 01/14] hash: remove some dead code David Marchand
2023-12-18 14:37   ` [PATCH v4 02/14] regexdev: fix logtype register David Marchand
2023-12-18 16:46     ` Stephen Hemminger
2023-12-18 14:37   ` [PATCH v4 03/14] lib: use dedicated logtypes and macros David Marchand
2023-12-18 14:37   ` [PATCH v4 04/14] lib: add newline in logs David Marchand
2023-12-18 14:37   ` [PATCH v4 05/14] lib: remove redundant newline from logs David Marchand
2023-12-18 14:37   ` [PATCH v4 06/14] eal/linux: remove log paraphrasing the doc David Marchand
2023-12-18 14:37   ` [PATCH v4 07/14] bpf: remove log level in internal helper David Marchand
2023-12-18 14:37   ` [PATCH v4 08/14] lib: simplify multilines log messages David Marchand
2023-12-18 14:37   ` [PATCH v4 09/14] rcu: introduce a logging helper David Marchand
2023-12-18 14:37   ` [PATCH v4 10/14] vhost: improve log for memory dumping configuration David Marchand
2023-12-18 14:38   ` [PATCH v4 11/14] log: add a per line log helper David Marchand
2023-12-19 15:45     ` Thomas Monjalon
2023-12-19 17:16       ` Stephen Hemminger
2023-12-20  8:26         ` David Marchand
2023-12-18 14:38   ` [PATCH v4 12/14] lib: convert to per line logging David Marchand
2023-12-20 13:46     ` Thomas Monjalon
2023-12-20 14:00       ` David Marchand
2023-12-18 14:38   ` [PATCH v4 13/14] lib: replace logging helpers David Marchand
2023-12-18 14:38   ` [PATCH v4 14/14] lib: use per line logging in helpers David Marchand
2023-12-20 15:35 ` [PATCH v5 00/13] Detect superfluous newline in logs David Marchand
2023-12-20 15:35   ` [PATCH v5 01/13] hash: remove some dead code David Marchand
2023-12-21  5:58     ` Ruifeng Wang
2023-12-21  6:26     ` Ruifeng Wang
2023-12-20 15:35   ` [PATCH v5 02/13] regexdev: fix logtype register David Marchand
2023-12-20 15:35   ` [PATCH v5 03/13] lib: use dedicated logtypes and macros David Marchand
2023-12-20 15:35   ` [PATCH v5 04/13] lib: add newline in logs David Marchand
2023-12-20 15:35   ` [PATCH v5 05/13] lib: remove redundant newline from logs David Marchand
2023-12-20 15:35   ` [PATCH v5 06/13] eal/linux: remove log paraphrasing the doc David Marchand
2023-12-20 15:36   ` [PATCH v5 07/13] bpf: remove log level in internal helper David Marchand
2023-12-20 15:36   ` [PATCH v5 08/13] lib: simplify multilines log messages David Marchand
2023-12-20 15:36   ` [PATCH v5 09/13] lib: add more logging helpers David Marchand
2023-12-20 15:36   ` [PATCH v5 10/13] vhost: improve log for memory dumping configuration David Marchand
2023-12-20 15:36   ` [PATCH v5 11/13] log: add a per line log helper David Marchand
2023-12-20 15:42     ` David Marchand
2023-12-20 15:36   ` [PATCH v5 12/13] lib: replace logging helpers David Marchand
2023-12-20 15:36   ` [PATCH v5 13/13] lib: use per line logging in helpers David Marchand
2023-12-21  9:31   ` [PATCH v5 00/13] Detect superfluous newline in logs David Marchand
2023-12-21 16:32   ` Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231218092738.749604-1-david.marchand@redhat.com \
    --to=david.marchand@redhat.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@amd.com \
    --cc=mb@smartsharesystems.com \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).