22
33#include "fastfetch.h"
44
5- // From https://github.com/openzfs/zfs/blob/master/include/libzfs.h
6-
75/*
86 * CDDL HEADER START
97 *
2523 * CDDL HEADER END
2624 */
2725
26+ // From https://github.com/NetBSD/src/blob/trunk/external/cddl/osnet/sys/sys/opentypes.h
27+
28+ #ifndef __NetBSD__
29+ typedef long long longlong_t ;
30+ #endif
31+ typedef longlong_t hrtime_t ;
32+ typedef unsigned int uint_t ;
33+
34+
35+ // From https://github.com/openzfs/zfs/blob/master/include/libzfs.h
36+ // From https://github.com/NetBSD/src/blob/trunk/external/cddl/osnet/dist/uts/common/sys/fs/zfs.h
37+
2838typedef enum {
2939 ZPOOL_PROP_INVAL = -1 ,
3040 ZPOOL_PROP_NAME ,
@@ -46,13 +56,16 @@ typedef enum {
4656 ZPOOL_PROP_FREE ,
4757 ZPOOL_PROP_ALLOCATED ,
4858 ZPOOL_PROP_READONLY ,
59+ #ifndef __NetBSD__
4960 ZPOOL_PROP_ASHIFT ,
61+ #endif
5062 ZPOOL_PROP_COMMENT ,
5163 ZPOOL_PROP_EXPANDSZ ,
5264 ZPOOL_PROP_FREEING ,
5365 ZPOOL_PROP_FRAGMENTATION ,
5466 ZPOOL_PROP_LEAKED ,
5567 ZPOOL_PROP_MAXBLOCKSIZE ,
68+ #ifndef __NetBSD__
5669 ZPOOL_PROP_TNAME ,
5770 ZPOOL_PROP_MAXDNODESIZE ,
5871 ZPOOL_PROP_MULTIHOST ,
@@ -63,6 +76,7 @@ typedef enum {
6376 ZPOOL_PROP_BCLONEUSED ,
6477 ZPOOL_PROP_BCLONESAVED ,
6578 ZPOOL_PROP_BCLONERATIO ,
79+ #endif
6680 ZPOOL_NUM_PROPS
6781} zpool_prop_t ;
6882
@@ -75,15 +89,158 @@ typedef enum {
7589 ZPROP_SRC_RECEIVED = 0x20
7690} zprop_source_t ;
7791
78- typedef bool boolean_t ;
92+ #ifdef __NetBSD__
93+
94+ #define ZPOOL_CONFIG_VDEV_TREE "vdev_tree"
95+ #define ZPOOL_CONFIG_VDEV_STATS "vdev_stats"
96+
97+ typedef enum vdev_state {
98+ VDEV_STATE_UNKNOWN = 0 ,
99+ VDEV_STATE_CLOSED ,
100+ VDEV_STATE_OFFLINE ,
101+ VDEV_STATE_REMOVED ,
102+ VDEV_STATE_CANT_OPEN ,
103+ VDEV_STATE_FAULTED ,
104+ VDEV_STATE_DEGRADED ,
105+ VDEV_STATE_HEALTHY
106+ } vdev_state_t ;
107+
108+ typedef enum vdev_aux {
109+ VDEV_AUX_NONE ,
110+ VDEV_AUX_OPEN_FAILED ,
111+ VDEV_AUX_CORRUPT_DATA ,
112+ VDEV_AUX_NO_REPLICAS ,
113+ VDEV_AUX_BAD_GUID_SUM ,
114+ VDEV_AUX_TOO_SMALL ,
115+ VDEV_AUX_BAD_LABEL ,
116+ VDEV_AUX_VERSION_NEWER ,
117+ VDEV_AUX_VERSION_OLDER ,
118+ VDEV_AUX_UNSUP_FEAT ,
119+ VDEV_AUX_SPARED ,
120+ VDEV_AUX_ERR_EXCEEDED ,
121+ VDEV_AUX_IO_FAILURE ,
122+ VDEV_AUX_BAD_LOG ,
123+ VDEV_AUX_EXTERNAL ,
124+ VDEV_AUX_SPLIT_POOL ,
125+ VDEV_AUX_ASHIFT_TOO_BIG
126+ } vdev_aux_t ;
127+
128+ typedef enum pool_state {
129+ POOL_STATE_ACTIVE = 0 ,
130+ POOL_STATE_EXPORTED ,
131+ POOL_STATE_DESTROYED ,
132+ POOL_STATE_SPARE ,
133+ POOL_STATE_L2CACHE ,
134+ POOL_STATE_UNINITIALIZED ,
135+ POOL_STATE_UNAVAIL ,
136+ POOL_STATE_POTENTIALLY_ACTIVE
137+ } pool_state_t ;
138+
139+ typedef enum zio_type {
140+ ZIO_TYPE_NULL = 0 ,
141+ ZIO_TYPE_READ ,
142+ ZIO_TYPE_WRITE ,
143+ ZIO_TYPE_FREE ,
144+ ZIO_TYPE_CLAIM ,
145+ ZIO_TYPE_IOCTL ,
146+ ZIO_TYPES
147+ } zio_type_t ;
148+
149+ typedef struct vdev_stat {
150+ hrtime_t vs_timestamp ;
151+ uint64_t vs_state ;
152+ uint64_t vs_aux ;
153+ uint64_t vs_alloc ;
154+ uint64_t vs_space ;
155+ uint64_t vs_dspace ;
156+ uint64_t vs_rsize ;
157+ uint64_t vs_esize ;
158+ uint64_t vs_ops [ZIO_TYPES ];
159+ uint64_t vs_bytes [ZIO_TYPES ];
160+ uint64_t vs_read_errors ;
161+ uint64_t vs_write_errors ;
162+ uint64_t vs_checksum_errors ;
163+ uint64_t vs_self_healed ;
164+ uint64_t vs_scan_removing ;
165+ uint64_t vs_scan_processed ;
166+ uint64_t vs_configured_ashift ;
167+ uint64_t vs_logical_ashift ;
168+ uint64_t vs_physical_ashift ;
169+ uint64_t vs_fragmentation ;
170+ } vdev_stat_t ;
171+
172+ // From https://github.com/NetBSD/src/blob/trunk/external/cddl/osnet/uts/common/sys/nvpair.h
173+
174+ typedef struct nvlist {
175+ int32_t nvl_version ;
176+ uint32_t nvl_nvflag ;
177+ uint64_t nvl_priv ;
178+ uint32_t nvl_flag ;
179+ int32_t nvl_pad ;
180+ } nvlist_t ;
181+
182+ // From https://github.com/NetBSD/src/blob/trunk/external/cddl/osnet/dist/lib/libzfs/common/libzfs.h
183+
184+ typedef enum {
185+ ZPOOL_STATUS_CORRUPT_CACHE ,
186+ ZPOOL_STATUS_MISSING_DEV_R ,
187+ ZPOOL_STATUS_MISSING_DEV_NR ,
188+ ZPOOL_STATUS_CORRUPT_LABEL_R ,
189+ ZPOOL_STATUS_CORRUPT_LABEL_NR ,
190+ ZPOOL_STATUS_BAD_GUID_SUM ,
191+ ZPOOL_STATUS_CORRUPT_POOL ,
192+ ZPOOL_STATUS_CORRUPT_DATA ,
193+ ZPOOL_STATUS_FAILING_DEV ,
194+ ZPOOL_STATUS_VERSION_NEWER ,
195+ ZPOOL_STATUS_HOSTID_MISMATCH ,
196+ ZPOOL_STATUS_IO_FAILURE_WAIT ,
197+ ZPOOL_STATUS_IO_FAILURE_CONTINUE ,
198+ ZPOOL_STATUS_BAD_LOG ,
199+ ZPOOL_STATUS_UNSUP_FEAT_READ ,
200+ ZPOOL_STATUS_UNSUP_FEAT_WRITE ,
201+ ZPOOL_STATUS_FAULTED_DEV_R ,
202+ ZPOOL_STATUS_FAULTED_DEV_NR ,
203+ ZPOOL_STATUS_VERSION_OLDER ,
204+ ZPOOL_STATUS_FEAT_DISABLED ,
205+ ZPOOL_STATUS_RESILVERING ,
206+ ZPOOL_STATUS_OFFLINE_DEV ,
207+ ZPOOL_STATUS_REMOVED_DEV ,
208+ ZPOOL_STATUS_NON_NATIVE_ASHIFT ,
209+ ZPOOL_STATUS_OK
210+ } zpool_status_t ;
211+ #endif /*__NetBSD__*/
79212
80- typedef struct libzfs_handle libzfs_handle_t ;
81213typedef struct zpool_handle zpool_handle_t ;
214+ typedef struct libzfs_handle libzfs_handle_t ;
82215typedef int (* zpool_iter_f )(zpool_handle_t * , void * );
83- extern int zpool_iter (libzfs_handle_t * , zpool_iter_f , void * );
84216
217+ extern int zpool_iter (libzfs_handle_t * , zpool_iter_f , void * );
85218extern libzfs_handle_t * libzfs_init (void );
86219extern void libzfs_fini (libzfs_handle_t * );
87220extern uint64_t zpool_get_prop_int (zpool_handle_t * , zpool_prop_t , zprop_source_t * );
88221extern const char * zpool_get_name (zpool_handle_t * );
89222extern const char * zpool_get_state_str (zpool_handle_t * );
223+
224+ #ifdef __NetBSD__
225+ extern int zpool_get_state (zpool_handle_t * );
226+ extern const char * zpool_state_to_name (vdev_state_t , vdev_aux_t );
227+ extern zpool_status_t zpool_get_status (zpool_handle_t * , char * * );
228+ extern nvlist_t * zpool_get_config (zpool_handle_t * , nvlist_t * * );
229+
230+ // From https://github.com/NetBSD/src/blob/trunk/external/cddl/osnet/dist/uts/common/sys/nvpair.h
231+
232+ extern nvlist_t * opensolaris_fnvlist_lookup_nvlist (nvlist_t * , const char * );
233+ static inline nvlist_t * fnvlist_lookup_nvlist (nvlist_t * nvl , const char * name ) {
234+ return opensolaris_fnvlist_lookup_nvlist (nvl , name );
235+ }
236+
237+ extern int opensolaris_nvlist_lookup_uint64_array (nvlist_t * , const char * , uint64_t * * , uint_t * );
238+ static inline int nvlist_lookup_uint64_array (nvlist_t * nvl , const char * name , uint64_t * * a , uint_t * n ) {
239+ return opensolaris_nvlist_lookup_uint64_array (nvl , name , a , n );
240+ }
241+
242+ extern int opensolaris_nvlist_lookup_uint32_array (nvlist_t * , const char * , uint32_t * * , uint_t * );
243+ static inline int nvlist_lookup_uint32_array (nvlist_t * nvl , const char * name , uint32_t * * a , uint_t * n ) {
244+ return opensolaris_nvlist_lookup_uint32_array (nvl , name , a , n );
245+ }
246+ #endif /*__NetBSD__*/
0 commit comments