mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 19:19:32 +03:00
d9ac17a57f
In libzutil, for zpool_search_import and zpool_find_config, we use libpc_handle_t internally, which does not maintain error code and it is not exposed in the interface. Due to this, the error information is not propagated to the caller. Instead, an error message is printed on stderr. This commit adds lpc_error field in libpc_handle_t and exposes it in the interface, which can be used by the users of libzutil to get the appropriate error information and handle it accordingly. Users of the API can also control if they want to print the error message on stderr. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Signed-off-by: Umer Saleem <usaleem@ixsystems.com> Closes #13969
62 lines
2.1 KiB
C
62 lines
2.1 KiB
C
/*
|
|
* CDDL HEADER START
|
|
*
|
|
* The contents of this file are subject to the terms of the
|
|
* Common Development and Distribution License (the "License").
|
|
* You may not use this file except in compliance with the License.
|
|
*
|
|
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
|
* or https://opensource.org/licenses/CDDL-1.0.
|
|
* See the License for the specific language governing permissions
|
|
* and limitations under the License.
|
|
*
|
|
* When distributing Covered Code, include this CDDL HEADER in each
|
|
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
|
* If applicable, add the following below this CDDL HEADER, with the
|
|
* fields enclosed by brackets "[]" replaced with your own identifying
|
|
* information: Portions Copyright [yyyy] [name of copyright owner]
|
|
*
|
|
* CDDL HEADER END
|
|
*/
|
|
/*
|
|
* Copyright 2015 Nexenta Systems, Inc. All rights reserved.
|
|
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
|
* Copyright (c) 2012, 2018 by Delphix. All rights reserved.
|
|
* Copyright 2015 RackTop Systems.
|
|
* Copyright (c) 2016, Intel Corporation.
|
|
*/
|
|
#ifndef _LIBZUTIL_ZUTIL_IMPORT_H_
|
|
#define _LIBZUTIL_ZUTIL_IMPORT_H_
|
|
|
|
#define IMPORT_ORDER_PREFERRED_1 1
|
|
#define IMPORT_ORDER_PREFERRED_2 2
|
|
#define IMPORT_ORDER_SCAN_OFFSET 10
|
|
#define IMPORT_ORDER_DEFAULT 100
|
|
|
|
int label_paths(libpc_handle_t *hdl, nvlist_t *label, char **path,
|
|
char **devid);
|
|
int zpool_find_import_blkid(libpc_handle_t *hdl, pthread_mutex_t *lock,
|
|
avl_tree_t **slice_cache);
|
|
|
|
void * zutil_alloc(libpc_handle_t *hdl, size_t size);
|
|
char *zutil_strdup(libpc_handle_t *hdl, const char *str);
|
|
|
|
typedef struct rdsk_node {
|
|
char *rn_name; /* Full path to device */
|
|
int rn_order; /* Preferred order (low to high) */
|
|
int rn_num_labels; /* Number of valid labels */
|
|
uint64_t rn_vdev_guid; /* Expected vdev guid when set */
|
|
libpc_handle_t *rn_hdl;
|
|
nvlist_t *rn_config; /* Label config */
|
|
avl_tree_t *rn_avl;
|
|
avl_node_t rn_node;
|
|
pthread_mutex_t *rn_lock;
|
|
boolean_t rn_labelpaths;
|
|
} rdsk_node_t;
|
|
|
|
int slice_cache_compare(const void *, const void *);
|
|
|
|
void zpool_open_func(void *);
|
|
|
|
#endif /* _LIBZUTIL_ZUTIL_IMPORT_H_ */
|