Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Jul 2024 09:40:15 +0100
From:      David Chisnall <theraven@FreeBSD.org>
To:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Please can we do something about programmatic interfaces to ZFS?
Message-ID:  <8C7859E3-A72E-4852-AF43-DFD0ABA5D270@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
Hi,

Since updating to 15-CURRENT, I have been unable to get some existing =
code that used libzfs_core to take snapshots.  There are a lot of =
reasons that this could have broken and it=E2=80=99s hard to track it =
down:

 - We ship both libnv and libnvpair.  These define the same data =
structure but with different APIs and are incompatible.  I believe libnv =
can create the serialised data structures that the ZFS ioctls expect.
 - We don=E2=80=99t install headers for libnvpair or libzfs_core (or =
libzfs) and so any code using these has to either depend on things in =
the src tree (which depend on OpenSolaris headers that are incompatible =
with FreeBSD ones, so must be in separate compilation units) or provide =
its own definitions, which may get out of sync with the libraries.
 - We don=E2=80=99t provide any documentation of the underlying ZFS =
ioctls (and there is some code that suggests that these vary between =
platforms), and so the *only* API for interacting with ZFS is =
libzfs_core.
 - The APIs in libzfs_core are also poorly documented.

This makes it incredibly difficult to interact with ZFS via anything =
other than the `zfs` command-line tool.  When things break, I have no =
idea which of these layers caused the breakage.

David




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8C7859E3-A72E-4852-AF43-DFD0ABA5D270>