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)
Tue, Feb 24, 9:38 AM
Unknown Object (File)
Fri, Feb 20, 11:38 AM
Unknown Object (File)
Sun, Feb 8, 12:38 PM
Unknown Object (File)
Sun, Feb 8, 12:24 PM
Unknown Object (File)
Jan 31 2026, 5:09 AM
Unknown Object (File)
Jan 25 2026, 4:54 PM
Unknown Object (File)
Jan 23 2026, 1:06 AM
Unknown Object (File)
Jan 20 2026, 6:32 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