All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Günther Noack" <gnoack3000@gmail.com>
To: Alejandro Colomar <alx@kernel.org>
Cc: linux-man@vger.kernel.org, "Günther Noack" <gnoack3000@gmail.com>,
	"Pavel Emelyanov" <xemul@virtuozzo.com>,
	"Dmitry V. Levin" <ldv@strace.io>,
	"Michael Kerrisk" <mtk.manpages@gmail.com>,
	"Kuniyuki Iwashima" <kuniyu@google.com>
Subject: [PATCH v2 05/24] man/man7/sock_diag.7: udiag_wqueue: This is memory in use, not memory available
Date: Sun, 18 Oct 2026 19:36:53 +0200	[thread overview]
Message-ID: <20261018173712.27670-6-gnoack3000@gmail.com> (raw)
In-Reply-To: <20261018173712.27670-1-gnoack3000@gmail.com>

The reported value is equivalent to what SIOCINQ/SIOCOUTQ report, as
also discussed in the commit message in linux.git c9da99e6475f
(2011-12-30; "unix_diag: Fixup RQLEN extension report").  (Those are
socket-flavoured synonyms of TIOCINQ(2const), TIOCOUTQ(2const))

In Linux code, the reasoning is as follows:

* The udiag_wqueue field is set in sk_diag_show_rqlen() in linux.git
  net/unix/diag.c, where for non-listening sockets, unix_outq_len() is
  assigned.
* unix_outq_len() in linux.git net/unix/af_unix.c returns
  sk_wmem_alloc_get().
* sk_wmem_alloc_get() in linux.git include/net/sock.h reads its return
  value from refcount_read(&sk->sk_wmem_alloc) (with some technical
  tweaks).
* The field sk_wmem_alloc is documented in the same file as:
  @sk_wmem_alloc: transmit queue bytes committed

That this interpretation of sk_wmem_alloc is correct can also be seen
in the places where the protocol-specific code adds to it.
The UNIX sockets increment sk->sk_wmem_alloc as follows:

* unix_dgram_sendmsg() and unix_stream_sendmsg() in net/unix/af_unix.c
  invoke sock_alloc_send_pskb()
* sock_alloc_send_pskb() in net/core/sock.c calls skb_set_owner_w()
* skb_set_owner_w() in the same file increments the counter using
  __refcount_add(skb->truesize, &sk->sk_wmem_alloc, &old_wmem);

Fixes: 4f6a0a4a909e (2016-12-07; "sock_diag.7: New page documenting NETLINK_SOCK_DIAG interface")
Cc: Pavel Emelyanov <xemul@virtuozzo.com>
Cc: Dmitry V. Levin <ldv@strace.io>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Kuniyuki Iwashima <kuniyu@google.com>
Assisted-by: LLM
Signed-off-by: Günther Noack <gnoack3000@gmail.com>
---

Notes:
    Verified in kernel code; the udiag_wqueue field does indeed have these
    different semantics -- it's the data already sent, which is still
    stuck in the output queue, not the maximum size of the output queue.

 man/man7/sock_diag.7 | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/man/man7/sock_diag.7 b/man/man7/sock_diag.7
index 35a6d5a80ffc..8f8b28b4404d 100644
--- a/man/man7/sock_diag.7
+++ b/man/man7/sock_diag.7
@@ -248,7 +248,9 @@ the backlog size which equals to the value passed as the second argument to
 .BR listen (2).
 .IP
 For established sockets:
-the amount of memory available for sending.
+the amount of memory currently allocated for data
+that was sent on this socket
+but has not yet been received by the peer.
 .RE
 .TP
 .B UDIAG_SHOW_MEMINFO
-- 
2.56.0


  parent reply	other threads:[~2026-10-18 17:37 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-18 17:36 [PATCH v2 00/24] Documentation fixes in unix(7) Günther Noack
2026-10-18 17:36 ` [PATCH v2 01/24] man/man7/unix.7: ERRORS: EINVAL: The address field is sun_family, not sun_type Günther Noack
2026-10-18 17:36 ` [PATCH v2 02/24] man/man7/unix.7: Socket options: SOL_SOCKET is a level, not a family Günther Noack
2026-10-18 17:36 ` [PATCH v2 03/24] man/man7/unix.7: SO_PASSCRED: ffix Günther Noack
2026-10-18 17:36 ` [PATCH v2 04/24] man/man7/sock_diag.7: Fix member order of struct unix_diag_vfs Günther Noack
2026-10-18 17:36 ` Günther Noack [this message]
2026-10-18 17:36 ` [PATCH v2 06/24] man/man7/unix.7: ERRORS: EPROTONOSUPPORT: Protocol 0 is also accepted Günther Noack
2026-10-18 17:36 ` [PATCH v2 07/24] man/man7/unix.7: ERRORS: ETOOMANYREFS: Fix the conditions Günther Noack
2026-10-18 17:36 ` [PATCH v2 08/24] man/man7/socket.7: SO_PEEK_OFF: This option is no longer specific to unix(7) Günther Noack
2026-10-18 17:36 ` [PATCH v2 09/24] man/man7/unix.7: SO_PEERCRED: Also works for SOCK_SEQPACKET Günther Noack
2026-10-18 17:36 ` [PATCH v2 10/24] man/man7/unix.7: SIOCINQ: Document behavior " Günther Noack
2026-10-18 17:36 ` [PATCH v2 11/24] man/man7/sock_diag.7: udiag_states: Document TCP_CLOSE Günther Noack
2026-10-18 17:37 ` [PATCH v2 12/24] man/man7/sock_diag.7: UNIX_DIAG_NAME: The payload is not always a pathname Günther Noack
2026-10-18 17:37 ` [PATCH v2 13/24] man/man7/sock_diag.7: Document UDIAG_SHOW_UID Günther Noack
2026-10-18 17:37 ` [PATCH v2 14/24] man/man7/unix.7: Several items of the same type may be sent in one message Günther Noack
2026-10-18 17:37 ` [PATCH v2 15/24] man/man2/bind.2: ERRORS: EACCES: Write permission on the directory is required Günther Noack
2026-10-18 17:37 ` [PATCH v2 16/24] man/man7/unix.7: Autobind: Fix when it happens, and mention SO_PASSPIDFD Günther Noack
2026-10-18 17:37 ` [PATCH v2 17/24] man/man7/unix.7: SOCK_RAW is accepted as an alias for SOCK_DGRAM Günther Noack
2026-10-18 17:37 ` [PATCH v2 18/24] man/man7/unix.7: SCM_SECURITY: This is not specific to SELinux Günther Noack
2026-10-18 17:37 ` [PATCH v2 19/24] man/man7/unix.7: SO_PASSSEC: wfix Günther Noack
2026-10-18 17:37 ` [PATCH v2 20/24] man/man7/unix.7: ERRORS: Document EACCES, EAGAIN, EMSGSIZE, ENOSPC, and EPERM Günther Noack
2026-10-18 17:37 ` [PATCH v2 21/24] man/man7/unix.7: Abstract sockets are scoped to a network namespace Günther Noack
2026-10-18 17:37 ` [PATCH v2 22/24] man/man7/unix.7: Remove mentions of unsupported out-of-band messaging Günther Noack
2026-10-18 17:37 ` [PATCH v2 23/24] man/man7/unix.7: Document SO_PASSPIDFD, SO_PEERPIDFD, and SCM_PIDFD Günther Noack
2026-10-18 17:37 ` [PATCH v2 24/24] man/man7/unix.7: Document SO_PASSRIGHTS Günther Noack
2026-10-18 18:37 ` [PATCH v2 00/24] Documentation fixes in unix(7) Kuniyuki Iwashima
2026-10-19  7:05   ` Alejandro Colomar
2026-10-19  8:48     ` Günther Noack
2026-10-19 12:07     ` the meaning of "ffix" (was: [PATCH v2 00/24] Documentation fixes in unix(7)) G. Branden Robinson

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=20261018173712.27670-6-gnoack3000@gmail.com \
    --to=gnoack3000@gmail.com \
    --cc=alx@kernel.org \
    --cc=kuniyu@google.com \
    --cc=ldv@strace.io \
    --cc=linux-man@vger.kernel.org \
    --cc=mtk.manpages@gmail.com \
    --cc=xemul@virtuozzo.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.