mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 19:19:32 +03:00
ba54b180a5
These terms reinforce the incorrect notion that black is bad and white is good. Replace this language with more specific terms which are also more clear and don't rely on metaphor. Specifically: * When vdevs are specified on the command line, they are the "selected" vdevs. * Entries in /dev/ which should not be considered as possible disks are "excluded" devices. Reviewed-by: John Kennedy <john.kennedy@delphix.com> Reviewed-by: Ryan Moeller <ryan@ixsystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: George Wilson <gwilson@delphix.com> Signed-off-by: Matthew Ahrens <mahrens@delphix.com> Closes #10457
138 lines
3.9 KiB
C
138 lines
3.9 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 http://www.opensolaris.org/os/licensing.
|
|
* 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 (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
|
*/
|
|
|
|
#ifndef ZPOOL_UTIL_H
|
|
#define ZPOOL_UTIL_H
|
|
|
|
#include <libnvpair.h>
|
|
#include <libzfs.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Path to scripts you can run with "zpool status/iostat -c" */
|
|
#define ZPOOL_SCRIPTS_DIR SYSCONFDIR"/zfs/zpool.d"
|
|
|
|
/*
|
|
* Basic utility functions
|
|
*/
|
|
void *safe_malloc(size_t);
|
|
void zpool_no_memory(void);
|
|
uint_t num_logs(nvlist_t *nv);
|
|
uint64_t array64_max(uint64_t array[], unsigned int len);
|
|
int highbit64(uint64_t i);
|
|
int lowbit64(uint64_t i);
|
|
|
|
/*
|
|
* Misc utility functions
|
|
*/
|
|
char *zpool_get_cmd_search_path(void);
|
|
|
|
/*
|
|
* Virtual device functions
|
|
*/
|
|
|
|
nvlist_t *make_root_vdev(zpool_handle_t *zhp, nvlist_t *props, int force,
|
|
int check_rep, boolean_t replacing, boolean_t dryrun, int argc,
|
|
char **argv);
|
|
nvlist_t *split_mirror_vdev(zpool_handle_t *zhp, char *newname,
|
|
nvlist_t *props, splitflags_t flags, int argc, char **argv);
|
|
|
|
/*
|
|
* Pool list functions
|
|
*/
|
|
int for_each_pool(int, char **, boolean_t unavail, zprop_list_t **,
|
|
zpool_iter_f, void *);
|
|
|
|
/* Vdev list functions */
|
|
typedef int (*pool_vdev_iter_f)(zpool_handle_t *, nvlist_t *, void *);
|
|
int for_each_vdev(zpool_handle_t *zhp, pool_vdev_iter_f func, void *data);
|
|
|
|
typedef struct zpool_list zpool_list_t;
|
|
|
|
zpool_list_t *pool_list_get(int, char **, zprop_list_t **, int *);
|
|
void pool_list_update(zpool_list_t *);
|
|
int pool_list_iter(zpool_list_t *, int unavail, zpool_iter_f, void *);
|
|
void pool_list_free(zpool_list_t *);
|
|
int pool_list_count(zpool_list_t *);
|
|
void pool_list_remove(zpool_list_t *, zpool_handle_t *);
|
|
|
|
extern libzfs_handle_t *g_zfs;
|
|
|
|
|
|
typedef struct vdev_cmd_data
|
|
{
|
|
char **lines; /* Array of lines of output, minus the column name */
|
|
int lines_cnt; /* Number of lines in the array */
|
|
|
|
char **cols; /* Array of column names */
|
|
int cols_cnt; /* Number of column names */
|
|
|
|
|
|
char *path; /* vdev path */
|
|
char *upath; /* vdev underlying path */
|
|
char *pool; /* Pool name */
|
|
char *cmd; /* backpointer to cmd */
|
|
char *vdev_enc_sysfs_path; /* enclosure sysfs path (if any) */
|
|
} vdev_cmd_data_t;
|
|
|
|
typedef struct vdev_cmd_data_list
|
|
{
|
|
char *cmd; /* Command to run */
|
|
unsigned int count; /* Number of vdev_cmd_data items (vdevs) */
|
|
|
|
/* fields used to select only certain vdevs, if requested */
|
|
libzfs_handle_t *g_zfs;
|
|
char **vdev_names;
|
|
int vdev_names_count;
|
|
int cb_name_flags;
|
|
|
|
vdev_cmd_data_t *data; /* Array of vdevs */
|
|
|
|
/* List of unique column names and widths */
|
|
char **uniq_cols;
|
|
int uniq_cols_cnt;
|
|
int *uniq_cols_width;
|
|
|
|
} vdev_cmd_data_list_t;
|
|
|
|
vdev_cmd_data_list_t *all_pools_for_each_vdev_run(int argc, char **argv,
|
|
char *cmd, libzfs_handle_t *g_zfs, char **vdev_names, int vdev_names_count,
|
|
int cb_name_flags);
|
|
|
|
void free_vdev_cmd_data_list(vdev_cmd_data_list_t *vcdl);
|
|
|
|
int check_device(const char *path, boolean_t force,
|
|
boolean_t isspare, boolean_t iswholedisk);
|
|
boolean_t check_sector_size_database(char *path, int *sector_size);
|
|
void vdev_error(const char *fmt, ...);
|
|
int check_file(const char *file, boolean_t force, boolean_t isspare);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ZPOOL_UTIL_H */
|