Masatake YAMATO [Sun, 9 Mar 2025 03:48:34 +0000 (12:48 +0900)]
lsfd: add a dummy entry for UNIX socket having no peer to the IPC table
With recvfrom(2) and sendto(2), we can use a UNIX datagram socket at
server side without assigning a peer address with connect(2). Here, I
call such sockets one-way sockets.
The socket, opened with systemd as fd 227, is an example of one-way
socket (13465). It has 0 as "Peer Address:Port". From the side of
systemd process, there is no communication peers. However, the
sockets (35438 and 74792) opened with systemd-journal and bluetoothd
have the one-way socket (13465) as their communication peers.
We expect lsfd prints these connections if user specifies
-o+ENDPOINTS. This change and subsequent changes remove limitations in
this area.
In the early stage of lsfd process, lsfd collects information about
UNIX sockets on the system via unix-diag netlink. lsfd stores the
information to the IPC table. lsfd looks up the IPC table when
printing ENDPOINTS column.
With the original code, lsfd could not fill the ENDPOINTS columns
for sockets connecting to an one-way socket because lsfd did not
store one-way sockets to the IPC table.
With this change, lsfd can fill the ENDPOINTS columns for sockets
connecting to an one-way socket. The new code puts dummy entries for
the one-way sockets to the IPC table. The dummy entries help lsfd to
find the connections.
Karel Zak [Mon, 10 Mar 2025 14:19:52 +0000 (15:19 +0100)]
Merge branch 'github-issue-3442' of https://github.com/masatake/util-linux
* 'github-issue-3442' of https://github.com/masatake/util-linux:
tests: (lsns) verify NETNSID column for namespaces with no process running
lsns: make "-Q NETNSID ..." work even if NETNSID column is not enabled
lsns: show NETNSID for namespaces with no process running
lsns: (refactor) generalize the code for collecting netnsid information
Masatake YAMATO [Fri, 7 Mar 2025 21:42:18 +0000 (06:42 +0900)]
lsns: make "-Q NETNSID ..." work even if NETNSID column is not enabled
With the original code, lsns didn't collect values for NETNSID
unless NETNSID column was enabled. As a result, a filter expression
referencing NETNSID value didn't work expectedly.
# ip netns add X
# ip netns set X 99999
# lsns-original -Q 'NETNSID == "99999"
(PRINT NOTHING)
# lsns-original -Q 'NETNSID == "99999" -o NETNSID
NETNSID
99999
With this change, lsns collects values for NETNSID if the
filter expression given to -Q option refers to NETNSID.
# lsns-new -Q 'NETNSID == "99999"
NS TYPE NPROCS PID USER COMMAND 4026535564 net 0 root
Masatake YAMATO [Thu, 6 Mar 2025 23:44:30 +0000 (08:44 +0900)]
lsns: show NETNSID for namespaces with no process running
Fixes #3445
The original code doesn't collect NETNSID for netns namespaces with no
process running.
A way to reproduce this issue:
# ip netns delete X
# ip netns add X
# ip netns set X 117
# ip netns show
X (id: 117)
netns-813c699f-4651-e5e9-6af4-cca568bf2c3a (id: 0)
# stat /var/run/netns/X
File: /var/run/netns/X
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 0,4 Inode: 4026533679 Links: 1
Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:nsfs_t:s0
Access: 2025-03-06 00:29:58.598605182 +0900
Modify: 2025-03-06 00:29:58.598605182 +0900
Change: 2025-03-06 00:29:58.598605182 +0900
Birth: -
# ./lsns -P -o+NETNSID
NS TYPE NPROCS PID USER COMMAND NETNSID 4026533679 net 0 root 4026534230 user 0 yamato
NS 4026533679 should have "117" as the value of NETNSID.
Though the original code defined netnsid member in struct
lsns_namespace, the member wasn't used at all. struct lsns_process had
a member having the same name. The original code used only the one in
struct lsns_process.
This change utilizes the netnsid member in struct lsns_namespace.
I found another bug, so I will provide a test case for this fix in a
subsequent commit.
Thomas Devoogdt [Thu, 6 Mar 2025 13:18:48 +0000 (14:18 +0100)]
exch: fix compile error if renameat2 is not present
https://www.man7.org/linux/man-pages/man2/rename.2.html
Available since Linux 3.15 or glibc 2.28,
add a fallback for older systems.
My initial implementation did the exchange using a swap
file if both HAVE_RENAMEAT2 and SYS_renameat2 were absent.
But that is not really what is desired since exch is supposed
to be atomic. So simply return -1 renameat2 is available.
Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
Karel Zak [Wed, 5 Mar 2025 08:53:34 +0000 (09:53 +0100)]
tests: improve test_sysinfo to check for NS_GET_NSTYPE usability
Now the test checks if the kernel supports the NS_GET_NSTYPE ioctl,
but it seems that on some platforms it's implemented but does not work
as expected and returns ENOTTY.
Karel Zak [Tue, 4 Mar 2025 18:25:34 +0000 (19:25 +0100)]
Merge branch 'ci-fix-alt-arch-segfaults' of https://github.com/mrc0mmand/util-linux
* 'ci-fix-alt-arch-segfaults' of https://github.com/mrc0mmand/util-linux:
ci: bump uraimo/run-on-arch-action to v3
Revert "ci: temporarily switch the alt-arch job worker to Ubuntu 22.04"
Masatake YAMATO [Tue, 4 Mar 2025 11:05:29 +0000 (20:05 +0900)]
test_mkfds: disable ppoll multiplexer if sigset_t is not defined
Fixes #3432
The ppoll multiplexer requires RAW sigset_t type generally defined in
asm/linux.h. However, the parisc arch of the kernel older than 487fa28fa8b60417642ac58e8beda6e2509d18f9 didn't export the type to
the user space.
Karel Zak [Tue, 4 Mar 2025 10:53:07 +0000 (11:53 +0100)]
Merge branch 'PR/irq-misc' of https://github.com/karelzak/util-linux-work
* 'PR/irq-misc' of https://github.com/karelzak/util-linux-work:
lsirq: add support for reading data from given file
irqtop: support json output format
irqtop: add max iteration support
irqtop: add batch mode support
Karel Zak [Mon, 3 Mar 2025 08:23:24 +0000 (09:23 +0100)]
Merge branch 'libblkid/ddf' of https://github.com/t-8ch/util-linux
* 'libblkid/ddf' of https://github.com/t-8ch/util-linux:
libblkid: ddf_read: validate header checksum
libc/crc32: make fill value of excluded area configurable
libblkid: ddf_raid: drop little-endian handling
libblkid: ddf_raid: respect constness of buffer
Thomas Weißschuh [Thu, 27 Feb 2025 17:15:56 +0000 (18:15 +0100)]
libblkid: ddf_raid: drop little-endian handling
The DDF specification, both 1.2 and 2.0 require big-endian.
This is also what mdadm expects.
5.2 Byte Ordering
Each section of the DDF MUST be stored in big-endian format
(i.e., the more significant bytes of the section are stored in
lower addresses in relation to bytes of lesser significance).
Thomas Weißschuh [Thu, 27 Feb 2025 17:15:38 +0000 (18:15 +0100)]
libblkid: ddf_raid: respect constness of buffer
The buffers returned by blkid_probe_get_buffer() are not allowed to be
modified. Respect this restriction when casting the buffer to other
pointer types.
scriptlive: reduce two usage synopses to one simple one
No synopsis can show all possible permutattions of arguments and
options, so do not even try and just give the most basic form,
without unneeded -t, -I, or -B.
Also, use angle brackets to show that <timingfile> and <typescript>
are placeholders.
scriptreplay: mark literal values in the man page in bold, not italic
Also, mention which keys can be used to speed up, slow down, and pause
the replay. Shorten the description of '-s' as it is deprecated. And
improve the description of '-t': it does not override the _timingfile_
positional argument, but takes the place of it, makes it unneeded.
scriptreplay: make Up/Down keys use a percentage instead of fixed amount
Using a fixed 0.1 amount made each subsequent Down-arrow key slow things
down _more_, and each subsequent Up-arrow key speed things up _less_.
It's nicer when each subsequent keystroke has the same relative effect.
Karel Zak [Mon, 24 Feb 2025 13:04:53 +0000 (14:04 +0100)]
Libmount: Fix removal of "owner" option when executed as root
When executed as root, libmount replaces the "owner" and "group" mount
options with "nosuid, nodev, ..." However, this can result in an
"invalid argument" error because libmount removes the unwanted options
first and then tries to address the location for the new options using
the already removed options. To fix this, we need to reverse the order
of operations.
Reported-by: hxinzhe <hxinzhe1024@163.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Yu Watanabe [Fri, 14 Feb 2025 01:32:44 +0000 (10:32 +0900)]
zramctl: wait for device being initialized and unlocked by udevd
systemd-udevd takes a lock during processing the uevent for a block
device. The kernel refuses 'reset' attribute for zram device is written
when the device node is opened. Hence, during systemd-udevd processes a
uevent for zram device, we cannot write 'reset' attribute.
Let's wait for the device being initialized and unlocked by udevd.
Note, there still exists a race window, as we need to release the lock
before writing 'reset' attribute. But, the situation should be better
now.
Karel Zak [Tue, 18 Feb 2025 12:38:59 +0000 (13:38 +0100)]
docs: reduce and freeze NEWS file
Originally, it was required by Automake. However, for a long time, we
have been using the "foreign" Automake option, so it is no longer
necessary. All the details can be found in the ReleaseNotes. Let's
keep it simple.