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);