X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=lib%2Flibzfs%2Flibzfs_util.c;h=da1b9bcddf8214464cfe2fde76ad27da061dfe26;hb=01c0e61da027925b71c923a2b3896abf458b45a9;hp=33c440c4805694f284cf585b23989a740b76286b;hpb=6ee71f5ce39885969f986f3092fed00f41667963;p=zfs.git diff --git a/lib/libzfs/libzfs_util.c b/lib/libzfs/libzfs_util.c index 33c440c..da1b9bc 100644 --- a/lib/libzfs/libzfs_util.c +++ b/lib/libzfs/libzfs_util.c @@ -631,16 +631,20 @@ libzfs_module_loaded(const char *module) return result; } -static int -libzfs_run_process(const char *path, char *argv[]) +int +libzfs_run_process(const char *path, char *argv[], int flags) { pid_t pid; int rc; pid = vfork(); if (pid == 0) { - close(1); - close(2); + if (!(flags & STDOUT_VERBOSE)) + close(STDOUT_FILENO); + + if (!(flags & STDERR_VERBOSE)) + close(STDERR_FILENO); + (void) execvp(path, argv); _exit(-1); } else if (pid > 0) { @@ -657,14 +661,15 @@ libzfs_run_process(const char *path, char *argv[]) return -1; } -static int +int libzfs_load_module(const char *module) { char *argv[4] = {"/sbin/modprobe", "-q", (char *)module, (char *)0}; if (libzfs_module_loaded(module)) return 0; - return libzfs_run_process("/sbin/modprobe", argv); + + return libzfs_run_process("/sbin/modprobe", argv, 0); } libzfs_handle_t * @@ -726,9 +731,7 @@ libzfs_fini(libzfs_handle_t *hdl) #endif if (hdl->libzfs_sharetab) (void) fclose(hdl->libzfs_sharetab); -#ifdef HAVE_ZPL zfs_uninit_libshare(hdl); -#endif if (hdl->libzfs_log_str) (void) free(hdl->libzfs_log_str); zpool_free_handles(hdl);