mirror_zfs/lib
Rob Norris 3e7e19e028 pool_iter_refresh: don't refresh pools twice
In "all pools" mode, pool_iter_refresh() will call zpool_iter(), which
will call zpool_refresh_stats() before calling add_pool(). If we already
have the pool, this is a different handle, so we just release it and
return. Back in pool_iter_refresh(), we then call zpool_stats_refresh()
again for our handle on the same pool.

All together, this means we're doing two ZFS_IOC_POOL_STATS calls into
the kernel for every pool in the system. This isn't wrong, but it does
double the pressure on global locks.

Instead, we add a new function zpool_refresh_stats_from_handle() that
simply copies the pool config and state from one handle to another, and
use it to update our handle before we release it in add_pool(), so we
only have one call per pool per interval.

Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Closes #17807
2025-10-21 09:50:43 -07:00
..
libavl cppcheck: explicitly exclude kernel code from userspace checks 2022-05-10 10:20:55 -07:00
libefi SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
libicp Backport AVX2 AES-GCM implementation from BoringSSL 2025-08-13 14:51:20 -07:00
libnvpair nvlist: Add nvlist_snprintf() and zfs_dbgmsg_nvlist() 2025-04-18 09:22:16 -04:00
libshare SPDX: license tags: BSD-2-Clause 2025-03-13 17:56:46 -07:00
libspl Fix atomic-alignment warnings in libspl on FreeBSD/i386 2025-09-17 16:34:19 -07:00
libtpool SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
libunicode module: unicode: remove unused uconv.c 2024-11-01 12:12:13 -07:00
libuutil pool_iter_refresh: don't refresh pools twice 2025-10-21 09:50:43 -07:00
libzdb Allow physical rewrite without logical 2025-08-06 10:36:07 -07:00
libzfs pool_iter_refresh: don't refresh pools twice 2025-10-21 09:50:43 -07:00
libzfs_core pool_iter_refresh: don't refresh pools twice 2025-10-21 09:50:43 -07:00
libzfsbootenv nvlist: Add nvlist_snprintf() and zfs_dbgmsg_nvlist() 2025-04-18 09:22:16 -04:00
libzpool Enable zhack to work properly with 4k sector size disks 2025-09-10 15:01:32 -07:00
libzstd libzstd: also build with LIBZPOOL_CPPFLAGS 2024-09-09 14:13:27 -07:00
libzutil Make zpool_find_config() report errors 2025-08-19 13:09:25 -07:00
Makefile.am libzdb: Initial breakout of libzdb 2024-02-05 10:00:41 -08:00