Print this page
7857 zfs/zpool commands print scary errors after 7741
7887 get_zfs_dataset() optimised path leaks zfs handle
Reviewed by: Sam Zaydel <szaydel@racktopsystems.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>

*** 23,32 **** --- 23,33 ---- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. */ /* * Copyright 2012 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, 2016 by Delphix. All rights reserved. + * Copyright 2017 RackTop Systems. */ #include <stdio.h> #include <libzfs.h> #include <string.h>
*** 334,348 **** * (extremely slow) search of all the filesystems. */ cutpath = path + strspn(path, "/"); assert(impl_handle->zfs_libhandle != NULL); if ((handle_from_path = zfs_open(impl_handle->zfs_libhandle, cutpath, ! ZFS_TYPE_FILESYSTEM)) != NULL) if ((ret = verify_zfs_handle(handle_from_path, path, ! search_mnttab)) != NULL) return (ret); /* * Couldn't find a filesystem optimistically, check all the handles we * can. */ get_all_filesystems(impl_handle, &zlist, &count); --- 335,358 ---- * (extremely slow) search of all the filesystems. */ cutpath = path + strspn(path, "/"); assert(impl_handle->zfs_libhandle != NULL); + libzfs_print_on_error(impl_handle->zfs_libhandle, B_FALSE); if ((handle_from_path = zfs_open(impl_handle->zfs_libhandle, cutpath, ! ZFS_TYPE_FILESYSTEM)) != NULL) { if ((ret = verify_zfs_handle(handle_from_path, path, ! search_mnttab)) != NULL) { ! zfs_close(handle_from_path); ! libzfs_print_on_error(impl_handle->zfs_libhandle, ! B_TRUE); return (ret); + } + zfs_close(handle_from_path); + } + libzfs_print_on_error(impl_handle->zfs_libhandle, B_TRUE); + /* * Couldn't find a filesystem optimistically, check all the handles we * can. */ get_all_filesystems(impl_handle, &zlist, &count);