165 lines
5.7 KiB
C
165 lines
5.7 KiB
C
/* C wrappers around some zfs calls and C in general that should simplify
|
|
* using libzfs from go language, make go code shorter and more readable.
|
|
*/
|
|
|
|
#ifndef SERVERWARE_ZPOOL_H
|
|
#define SERVERWARE_ZPOOL_H
|
|
|
|
/* Rewind request information */
|
|
#define ZPOOL_NO_REWIND 1 /* No policy - default behavior */
|
|
#define ZPOOL_NEVER_REWIND 2 /* Do not search for best txg or rewind */
|
|
#define ZPOOL_TRY_REWIND 4 /* Search for best txg, but do not rewind */
|
|
#define ZPOOL_DO_REWIND 8 /* Rewind to best txg w/in deferred frees */
|
|
#define ZPOOL_EXTREME_REWIND 16 /* Allow extreme measures to find best txg */
|
|
#define ZPOOL_REWIND_MASK 28 /* All the possible rewind bits */
|
|
#define ZPOOL_REWIND_POLICIES 31 /* All the possible policy bits */
|
|
|
|
struct zpool_list {
|
|
zpool_handle_t *zph;
|
|
void *pnext;
|
|
};
|
|
|
|
struct vdev_children {
|
|
nvlist_t **first;
|
|
uint_t count;
|
|
};
|
|
|
|
typedef struct zpool_list zpool_list_t;
|
|
typedef struct zpool_list* zpool_list_ptr;
|
|
typedef struct vdev_children vdev_children_t;
|
|
typedef struct vdev_children* vdev_children_ptr;
|
|
|
|
typedef struct pool_scan_stat* pool_scan_stat_ptr;
|
|
|
|
zpool_list_t *create_zpool_list_item();
|
|
void zprop_source_tostr(char *dst, zprop_source_t source);
|
|
|
|
zpool_list_t* zpool_list_open(const char *name);
|
|
zpool_list_ptr zpool_list_openall();
|
|
zpool_list_t *zpool_next(zpool_list_t *pool);
|
|
|
|
void zpool_list_free(zpool_list_t *list);
|
|
void zpool_list_close(zpool_list_t *pool);
|
|
|
|
property_list_ptr read_zpool_property(zpool_list_ptr pool, int prop);
|
|
property_list_t *read_zpool_properties(zpool_list_ptr pool);
|
|
property_list_t *next_property(property_list_t *list);
|
|
|
|
pool_state_t zpool_read_state(zpool_handle_t *zh);
|
|
|
|
|
|
const char *lasterr(void);
|
|
|
|
// int
|
|
// add_prop_list(const char *propname, char *propval, nvlist_t **props,
|
|
// boolean_t poolprop);
|
|
|
|
nvlist_t** nvlist_alloc_array(int count);
|
|
void nvlist_array_set(nvlist_t** a, int i, nvlist_t *item);
|
|
void nvlist_free_array(nvlist_t **a);
|
|
nvlist_t *nvlist_array_at(nvlist_t **a, uint_t i);
|
|
|
|
int refresh_stats(zpool_list_t *pool);
|
|
|
|
const char *get_vdev_type(nvlist_ptr nv);
|
|
const vdev_stat_ptr get_vdev_stats(nvlist_ptr nv);
|
|
pool_scan_stat_ptr get_vdev_scan_stats(nvlist_t *nv);
|
|
vdev_children_ptr get_vdev_children(nvlist_t *nv);
|
|
vdev_children_ptr get_vdev_spares(nvlist_t *nv);
|
|
vdev_children_ptr get_vdev_l2cache(nvlist_t *nv);
|
|
const char *get_vdev_path(nvlist_ptr nv);
|
|
uint64_t get_vdev_is_log(nvlist_ptr nv);
|
|
|
|
uint64_t get_zpool_state(nvlist_ptr nv);
|
|
uint64_t get_zpool_guid(nvlist_ptr nv);
|
|
const char *get_zpool_name(nvlist_ptr nv);
|
|
const char *get_zpool_comment(nvlist_ptr nv);
|
|
|
|
nvlist_ptr get_zpool_vdev_tree(nvlist_ptr nv);
|
|
|
|
nvlist_ptr go_zpool_search_import(libzfs_handle_ptr zfsh, int paths, char **path, boolean_t do_scan);
|
|
|
|
uint64_t set_zpool_vdev_online(zpool_list_t *pool, const char *path, int flags);
|
|
int set_zpool_vdev_offline(zpool_list_t *pool, const char *path, boolean_t istmp, boolean_t force);
|
|
int do_zpool_clear(zpool_list_t *pool, const char *device, u_int32_t rewind_policy);
|
|
void collect_zpool_leaves(zpool_handle_t *zhp, nvlist_t *nvroot, nvlist_t *nv);
|
|
|
|
|
|
extern char *sZPOOL_CONFIG_VERSION;
|
|
extern char *sZPOOL_CONFIG_POOL_NAME;
|
|
extern char *sZPOOL_CONFIG_POOL_STATE;
|
|
extern char *sZPOOL_CONFIG_POOL_TXG;
|
|
extern char *sZPOOL_CONFIG_POOL_GUID;
|
|
extern char *sZPOOL_CONFIG_CREATE_TXG;
|
|
extern char *sZPOOL_CONFIG_TOP_GUID;
|
|
extern char *sZPOOL_CONFIG_VDEV_TREE;
|
|
extern char *sZPOOL_CONFIG_TYPE;
|
|
extern char *sZPOOL_CONFIG_CHILDREN;
|
|
extern char *sZPOOL_CONFIG_ID;
|
|
extern char *sZPOOL_CONFIG_GUID;
|
|
extern char *sZPOOL_CONFIG_PATH;
|
|
extern char *sZPOOL_CONFIG_DEVID;
|
|
extern char *sZPOOL_CONFIG_METASLAB_ARRAY;
|
|
extern char *sZPOOL_CONFIG_METASLAB_SHIFT;
|
|
extern char *sZPOOL_CONFIG_ASHIFT;
|
|
extern char *sZPOOL_CONFIG_ASIZE;
|
|
extern char *sZPOOL_CONFIG_DTL;
|
|
extern char *sZPOOL_CONFIG_SCAN_STATS;
|
|
extern char *sZPOOL_CONFIG_VDEV_STATS;
|
|
extern char *sZPOOL_CONFIG_WHOLE_DISK;
|
|
extern char *sZPOOL_CONFIG_ERRCOUNT;
|
|
extern char *sZPOOL_CONFIG_NOT_PRESENT;
|
|
extern char *sZPOOL_CONFIG_SPARES;
|
|
extern char *sZPOOL_CONFIG_IS_SPARE;
|
|
extern char *sZPOOL_CONFIG_NPARITY;
|
|
extern char *sZPOOL_CONFIG_HOSTID;
|
|
extern char *sZPOOL_CONFIG_HOSTNAME;
|
|
extern char *sZPOOL_CONFIG_LOADED_TIME;
|
|
extern char *sZPOOL_CONFIG_UNSPARE;
|
|
extern char *sZPOOL_CONFIG_PHYS_PATH;
|
|
extern char *sZPOOL_CONFIG_IS_LOG;
|
|
extern char *sZPOOL_CONFIG_L2CACHE;
|
|
extern char *sZPOOL_CONFIG_HOLE_ARRAY;
|
|
extern char *sZPOOL_CONFIG_VDEV_CHILDREN;
|
|
extern char *sZPOOL_CONFIG_IS_HOLE;
|
|
extern char *sZPOOL_CONFIG_DDT_HISTOGRAM;
|
|
extern char *sZPOOL_CONFIG_DDT_OBJ_STATS;
|
|
extern char *sZPOOL_CONFIG_DDT_STATS;
|
|
extern char *sZPOOL_CONFIG_SPLIT;
|
|
extern char *sZPOOL_CONFIG_ORIG_GUID;
|
|
extern char *sZPOOL_CONFIG_SPLIT_GUID;
|
|
extern char *sZPOOL_CONFIG_SPLIT_LIST;
|
|
extern char *sZPOOL_CONFIG_REMOVING;
|
|
extern char *sZPOOL_CONFIG_RESILVER_TXG;
|
|
extern char *sZPOOL_CONFIG_COMMENT;
|
|
extern char *sZPOOL_CONFIG_SUSPENDED;
|
|
extern char *sZPOOL_CONFIG_TIMESTAMP;
|
|
extern char *sZPOOL_CONFIG_BOOTFS;
|
|
extern char *sZPOOL_CONFIG_MISSING_DEVICES;
|
|
extern char *sZPOOL_CONFIG_LOAD_INFO;
|
|
extern char *sZPOOL_CONFIG_REWIND_INFO;
|
|
extern char *sZPOOL_CONFIG_UNSUP_FEAT;
|
|
extern char *sZPOOL_CONFIG_ENABLED_FEAT;
|
|
extern char *sZPOOL_CONFIG_CAN_RDONLY;
|
|
extern char *sZPOOL_CONFIG_FEATURES_FOR_READ;
|
|
extern char *sZPOOL_CONFIG_FEATURE_STATS;
|
|
extern char *sZPOOL_CONFIG_ERRATA;
|
|
extern char *sZPOOL_CONFIG_OFFLINE;
|
|
extern char *sZPOOL_CONFIG_FAULTED;
|
|
extern char *sZPOOL_CONFIG_DEGRADED;
|
|
extern char *sZPOOL_CONFIG_REMOVED;
|
|
extern char *sZPOOL_CONFIG_FRU;
|
|
extern char *sZPOOL_CONFIG_AUX_STATE;
|
|
extern char *sZPOOL_LOAD_POLICY;
|
|
extern char *sZPOOL_LOAD_REWIND_POLICY;
|
|
extern char *sZPOOL_LOAD_REQUEST_TXG;
|
|
extern char *sZPOOL_LOAD_META_THRESH;
|
|
extern char *sZPOOL_LOAD_DATA_THRESH;
|
|
extern char *sZPOOL_CONFIG_LOAD_TIME;
|
|
extern char *sZPOOL_CONFIG_LOAD_DATA_ERRORS;
|
|
extern char *sZPOOL_CONFIG_REWIND_TIME;
|
|
|
|
|
|
#endif
|
|
/* SERVERWARE_ZPOOL_H */
|