git: f25a4bbf5d1f - stable/13 - libbe: bail out early if the zfs kmod isn't loaded
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 12 Jul 2023 03:10:58 UTC
The branch stable/13 has been updated by kevans:
URL: https://cgit.FreeBSD.org/src/commit/?id=f25a4bbf5d1ff31708d64f9cca644ae34e62cab0
commit f25a4bbf5d1ff31708d64f9cca644ae34e62cab0
Author: Kyle Evans <kevans@FreeBSD.org>
AuthorDate: 2023-07-07 00:41:14 +0000
Commit: Kyle Evans <kevans@FreeBSD.org>
CommitDate: 2023-07-11 15:06:00 +0000
libbe: bail out early if the zfs kmod isn't loaded
As noted in the comment, we already know the rest of libbe_init() will
fail because there's no pool imported. Avoid the side effect by
checking beforehand and bailing out early.
With this, freebsd-update(8) should no longer trigger a load of the zfs
kmod just because it runs `bectl check`.
Reviewed by: jwmaag_gmail.com, rew
(cherry picked from commit 2f700ca965a04c4a03b6f760da6a210b6ca4df4b)
---
lib/libbe/be.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/lib/libbe/be.c b/lib/libbe/be.c
index 13f7a59d5215..471a25e6304c 100644
--- a/lib/libbe/be.c
+++ b/lib/libbe/be.c
@@ -29,6 +29,7 @@
__FBSDID("$FreeBSD$");
#include <sys/param.h>
+#include <sys/module.h>
#include <sys/mount.h>
#include <sys/stat.h>
#include <sys/ucred.h>
@@ -119,6 +120,16 @@ libbe_init(const char *root)
lbh = NULL;
poolname = pos = NULL;
+ /*
+ * If the zfs kmod's not loaded then the later libzfs_init() will load
+ * the module for us, but that's not desirable for a couple reasons. If
+ * the module's not loaded, there's no pool imported and we're going to
+ * fail anyways. We also don't really want libbe consumers to have that
+ * kind of side-effect (module loading) in the general case.
+ */
+ if (modfind("zfs") < 0)
+ goto err;
+
if ((lbh = calloc(1, sizeof(libbe_handle_t))) == NULL)
goto err;