freebsd-dev/sys/geom
Alexander Motin 7f16b501e2 GEOM: Introduce partial confxml API
Traditionally the GEOM's primary channel of information from kernel to
user-space was confxml, fetched by libgeom through kern.geom.confxml
sysctl.  It is convenient and informative, representing full state of
GEOM in a single XML document.  But problems start to arise on systems
with hundreds of disks, where the full confxml size reaches many
megabytes, taking significant time to first write it and then parse.

This patch introduces alternative solution, allowing to fetch much
smaller XML document, subset of the full confxml, limited to 64KB and
representing only one specified geom and optionally its parents.  It
uses existing GEOM control interface, extended with new "getxml" verb.
In case of any error, such as the buffer overflow, it just transparently
falls back to traditional full confxml.  This patch uses the new API in
user-space GEOM tools where it is possible.

Reviewed by:	imp
MFC after:	2 month
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D34529
2022-03-12 11:55:52 -05:00
..
bde geom(4): Fix some of the "set but not used" warnings 2021-12-18 11:42:34 +00:00
cache GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
concat GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
eli Use G_ELI_IVKEYLEN as the size of IV in the user test code. 2022-01-13 17:22:06 -08:00
gate geom_gate: Distinguish between classes of errors 2022-01-29 21:15:51 +11:00
journal GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
label glabel: Set G_CF_DIRECT_SEND/RECEIVE for taste consumer. 2022-01-28 14:22:41 -05:00
linux_lvm GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
mirror GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
mountver Make g_attach() return ENXIO for orphaned providers; update various 2020-10-18 16:24:08 +00:00
multipath GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
nop Make MAXPHYS tunable. Bump MAXPHYS to 1M. 2020-11-28 12:12:51 +00:00
part g_part: Allow attributes to be querried 2022-03-01 08:06:42 -07:00
raid graid: Set G_CF_DIRECT_SEND for task consumer. 2022-01-28 11:09:30 -05:00
raid3 GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
shsec GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
stripe GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
union Add casts to printf statements to keep armv6, armv7, and powerpc 2022-02-28 19:28:02 -08:00
uzip Make MAXPHYS tunable. Bump MAXPHYS to 1M. 2020-11-28 12:12:51 +00:00
vinum GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
virstor GEOM: Set G_CF_DIRECT_SEND/RECEIVE for taste consumers. 2022-01-29 21:59:03 -05:00
zero geom(4): Mark all sysctls as CTLFLAG_MPSAFE. 2021-08-10 20:18:46 -04:00
geom_bsd_enc.c
geom_ccd.c sys/geom: Use C99 fixed-width integer types. 2021-12-28 09:41:51 -08:00
geom_ctl.c GEOM: Introduce partial confxml API 2022-03-12 11:55:52 -05:00
geom_ctl.h Define a constant for the maximum number of GEOM_CTL arguments. 2019-02-20 17:07:08 +00:00
geom_dbg.h GEOM: Reduce unnecessary log interleaving with sbufs 2019-08-07 19:28:35 +00:00
geom_dev.c geom: Handle partial I/O in g_{read,write,delete}_data() 2022-01-20 08:29:39 -05:00
geom_disk.c Fix "set but not used" for geom 2021-12-03 23:40:24 -07:00
geom_disk.h Use a more specific type for geom_disk.d_event. 2021-07-29 16:34:46 -07:00
geom_dump.c GEOM: Introduce partial confxml API 2022-03-12 11:55:52 -05:00
geom_event.c GEOM: Minor polishing in geom_event. 2021-12-27 21:01:08 -05:00
geom_flashmap.c Remove NAND and NANDFS support 2019-06-25 04:50:09 +00:00
geom_flashmap.h geom: clean up empty lines in .c and .h files 2020-09-01 22:14:09 +00:00
geom_int.h GEOM: Introduce partial confxml API 2022-03-12 11:55:52 -05:00
geom_io.c In GEOM debugging output, show consumer for cloned and duplicated bio's. 2022-01-30 17:21:13 -08:00
geom_kern.c GEOM: Relax direct dispatch for GEOM threads. 2022-01-28 14:21:21 -05:00
geom_map.c geom: clean up empty lines in .c and .h files 2020-09-01 22:14:09 +00:00
geom_redboot.c geom_map and geom_redboot: Remove unused ctlreq handler. 2020-07-26 22:30:01 +00:00
geom_slice.c Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
geom_slice.h
geom_subr.c GEOM: Remove g_wait_sim. 2022-01-29 22:12:43 -05:00
geom_vfs.c g_vfs_close(): vp is unused 2021-11-18 05:02:59 +02:00
geom_vfs.h
geom.h GEOM: Introduce partial confxml API 2022-03-12 11:55:52 -05:00
notes