Page MenuHomeFreeBSD

m_uiotombuf: write total memory length of the allocated chain in pkthdr
ClosedPublic

Authored by glebius on May 23 2022, 9:02 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Dec 1, 11:21 AM
Unknown Object (File)
Thu, Nov 27, 6:47 PM
Unknown Object (File)
Nov 25 2025, 3:13 AM
Unknown Object (File)
Oct 31 2025, 6:11 PM
Unknown Object (File)
Oct 31 2025, 1:12 PM
Unknown Object (File)
Oct 31 2025, 10:59 AM
Unknown Object (File)
Oct 29 2025, 1:28 PM
Unknown Object (File)
Oct 29 2025, 1:23 PM
Subscribers

Details

Summary

Data allocated by m_uiotombuf() usually goes into a socket buffer.
We are interested in the length of useful data to be added to sb_ccc,
as well as total memory used by mbufs. The later would be added to
sb_mbcnt. Calculating this value at allocation time allows to save
on extra traversal of the mbuf chain.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 45682
Build 42570: arc lint + arc unit

Event Timeline

sys/sys/mbuf.h
209

How is a consumer supposed to know whether memlen is populated or not? It sounds very general but it's only set by m_uiotombuf().

How do we know that setting memlen won't clobber a field in PH_loc? I'm not very familiar with PH_loc's usage so it's not clear to me.

sys/sys/mbuf.h
209

At this moment m_uiotombuf() supports it, but other chain allocation functions can and should support it future.

The PH_loc belongs to a subsystem that is sure it owns the mbuf. For a freshly allocated mbuf this works perfect.

This revision is now accepted and ready to land.May 30 2022, 1:20 PM