This version updates the dynfield3 proposal based on review feedback from
Morten.

The optional area is now configured by byte size instead of pointer count,
so the configured value is independent of 32-bit or 64-bit builds.  The
storage is represented as uint64_t elements, and the configured size must
be a multiple of sizeof(uint64_t) and reserve a multiple of the cache line
size.

The extra area remains part of the dynamic mbuf field allocator.  To
preserve the historical behavior expected for dynamic fields while still
supporting per-mbuf private metadata use cases, copying this area is
controlled by a separate build option.  The default does not copy dynfield3
in the generic mbuf copy/clone path; users that want the existing copied
dynamic-field semantics can opt in with mbuf_dynfield3_copy.

This version does not add a per-field isolate registration flag.  The
immediate use case needs a configured per-mbuf metadata area whose contents
remain local to each mbuf by default, matching the downstream storage this
replaces.  Keeping dynfield3 allocator-backed preserves the dynamic-field
extension model, while the build-time copy option lets deployments opt in
to copied dynamic-field semantics without imposing that behavior on private
metadata users.

Validation:
- devtools/check-git-log.sh -n1
- devtools/checkpatches.sh -n1
- default generic-all build
- build with mbuf_dynfield3_size=128 and mbuf_dynfield3_copy=true
- mbuf_autotest with default and enabled builds

Randy Tice (1):
  mbuf: add optional dynfield3 storage

 app/test/test_mbuf.c                   |  5 +++--
 config/meson.build                     | 16 ++++++++++++++++
 doc/guides/rel_notes/release_26_11.rst | 15 +++++++++++++++
 lib/mbuf/rte_mbuf.h                    |  6 ++++++
 lib/mbuf/rte_mbuf_core.h               | 17 +++++++++++++++++
 lib/mbuf/rte_mbuf_dyn.c                |  3 +++
 meson_options.txt                      |  4 ++++
 7 files changed, 64 insertions(+), 2 deletions(-)

-- 
2.35.6

Reply via email to