Page MenuHomeFreeBSD

D35255.diff
No OneTemporary

D35255.diff

diff --git a/stand/libsa/zfs/libzfs.h b/stand/libsa/zfs/libzfs.h
--- a/stand/libsa/zfs/libzfs.h
+++ b/stand/libsa/zfs/libzfs.h
@@ -35,6 +35,8 @@
#include <crypto/intake.h>
#endif
+#include "nvlist.h"
+
#define ZFS_MAXNAMELEN 256
/*
@@ -46,107 +48,6 @@
uint64_t root_guid;
};
-/* nvp implementation version */
-#define NV_VERSION 0
-
-/* nvlist persistent unique name flags, stored in nvl_nvflags */
-#define NV_UNIQUE_NAME 0x1
-#define NV_UNIQUE_NAME_TYPE 0x2
-
-#define NV_ALIGN4(x) (((x) + 3) & ~3)
-#define NV_ALIGN(x) (((x) + 7) & ~7)
-
-/*
- * nvlist header.
- * nvlist has 4 bytes header followed by version and flags, then nvpairs
- * and the list is terminated by double zero.
- */
-typedef struct {
- char nvh_encoding;
- char nvh_endian;
- char nvh_reserved1;
- char nvh_reserved2;
-} nvs_header_t;
-
-typedef struct {
- nvs_header_t nv_header;
- size_t nv_asize;
- size_t nv_size;
- uint8_t *nv_data;
- uint8_t *nv_idx;
-} nvlist_t;
-
-/*
- * nvpair header.
- * nvpair has encoded and decoded size
- * name string (size and data)
- * data type and number of elements
- * data
- */
-typedef struct {
- unsigned encoded_size;
- unsigned decoded_size;
-} nvp_header_t;
-
-/*
- * nvlist stream head.
- */
-typedef struct {
- unsigned nvl_version;
- unsigned nvl_nvflag;
- nvp_header_t nvl_pair;
-} nvs_data_t;
-
-typedef struct {
- unsigned nv_size;
- uint8_t nv_data[]; /* NV_ALIGN4(string) */
-} nv_string_t;
-
-typedef struct {
- unsigned nv_type; /* data_type_t */
- unsigned nv_nelem; /* number of elements */
- uint8_t nv_data[]; /* data stream */
-} nv_pair_data_t;
-
-nvlist_t *nvlist_create(int);
-void nvlist_destroy(nvlist_t *);
-nvlist_t *nvlist_import(const char *, size_t);
-int nvlist_export(nvlist_t *);
-int nvlist_remove(nvlist_t *, const char *, data_type_t);
-int nvpair_type_from_name(const char *);
-nvp_header_t *nvpair_find(nvlist_t *, const char *);
-void nvpair_print(nvp_header_t *, unsigned int);
-void nvlist_print(const nvlist_t *, unsigned int);
-char *nvstring_get(nv_string_t *);
-int nvlist_find(const nvlist_t *, const char *, data_type_t,
- int *, void *, int *);
-nvp_header_t *nvlist_next_nvpair(nvlist_t *, nvp_header_t *);
-
-int nvlist_add_boolean_value(nvlist_t *, const char *, boolean_t);
-int nvlist_add_byte(nvlist_t *, const char *, uint8_t);
-int nvlist_add_int8(nvlist_t *, const char *, int8_t);
-int nvlist_add_uint8(nvlist_t *, const char *, uint8_t);
-int nvlist_add_int16(nvlist_t *, const char *, int16_t);
-int nvlist_add_uint16(nvlist_t *, const char *, uint16_t);
-int nvlist_add_int32(nvlist_t *, const char *, int32_t);
-int nvlist_add_uint32(nvlist_t *, const char *, uint32_t);
-int nvlist_add_int64(nvlist_t *, const char *, int64_t);
-int nvlist_add_uint64(nvlist_t *, const char *, uint64_t);
-int nvlist_add_string(nvlist_t *, const char *, const char *);
-int nvlist_add_boolean_array(nvlist_t *, const char *, boolean_t *, uint32_t);
-int nvlist_add_byte_array(nvlist_t *, const char *, uint8_t *, uint32_t);
-int nvlist_add_int8_array(nvlist_t *, const char *, int8_t *, uint32_t);
-int nvlist_add_uint8_array(nvlist_t *, const char *, uint8_t *, uint32_t);
-int nvlist_add_int16_array(nvlist_t *, const char *, int16_t *, uint32_t);
-int nvlist_add_uint16_array(nvlist_t *, const char *, uint16_t *, uint32_t);
-int nvlist_add_int32_array(nvlist_t *, const char *, int32_t *, uint32_t);
-int nvlist_add_uint32_array(nvlist_t *, const char *, uint32_t *, uint32_t);
-int nvlist_add_int64_array(nvlist_t *, const char *, int64_t *, uint32_t);
-int nvlist_add_uint64_array(nvlist_t *, const char *, uint64_t *, uint32_t);
-int nvlist_add_string_array(nvlist_t *, const char *, char * const *, uint32_t);
-int nvlist_add_nvlist(nvlist_t *, const char *, nvlist_t *);
-int nvlist_add_nvlist_array(nvlist_t *, const char *, nvlist_t **, uint32_t);
-
int zfs_parsedev(struct zfs_devdesc *dev, const char *devspec,
const char **path);
char *zfs_fmtdev(void *vdev);
diff --git a/stand/libsa/zfs/libzfs.h b/stand/libsa/zfs/nvlist.h
copy from stand/libsa/zfs/libzfs.h
copy to stand/libsa/zfs/nvlist.h
--- a/stand/libsa/zfs/libzfs.h
+++ b/stand/libsa/zfs/nvlist.h
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2012 Andriy Gapon <avg@FreeBSD.org>
- * All rights reserved.
+ * Copyright 2020 Toomas Soome <tsoome@me.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -22,33 +21,48 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD$
*/
-#ifndef _BOOT_LIBZFS_H_
-#define _BOOT_LIBZFS_H_
-
-#include <zfsimpl.h>
-
-#ifdef LOADER_GELI_SUPPORT
-#include <crypto/intake.h>
-#endif
-
-#define ZFS_MAXNAMELEN 256
-
-/*
- * ZFS fully-qualified device descriptor.
- */
-struct zfs_devdesc {
- struct devdesc dd; /* Must be first. */
- uint64_t pool_guid;
- uint64_t root_guid;
-};
+#ifndef _BOOT_NVLIST_H_
+#define _BOOT_NVLIST_H_
+
+typedef enum {
+ DATA_TYPE_UNKNOWN = 0,
+ DATA_TYPE_BOOLEAN,
+ DATA_TYPE_BYTE,
+ DATA_TYPE_INT16,
+ DATA_TYPE_UINT16,
+ DATA_TYPE_INT32,
+ DATA_TYPE_UINT32,
+ DATA_TYPE_INT64,
+ DATA_TYPE_UINT64,
+ DATA_TYPE_STRING,
+ DATA_TYPE_BYTE_ARRAY,
+ DATA_TYPE_INT16_ARRAY,
+ DATA_TYPE_UINT16_ARRAY,
+ DATA_TYPE_INT32_ARRAY,
+ DATA_TYPE_UINT32_ARRAY,
+ DATA_TYPE_INT64_ARRAY,
+ DATA_TYPE_UINT64_ARRAY,
+ DATA_TYPE_STRING_ARRAY,
+ DATA_TYPE_HRTIME,
+ DATA_TYPE_NVLIST,
+ DATA_TYPE_NVLIST_ARRAY,
+ DATA_TYPE_BOOLEAN_VALUE,
+ DATA_TYPE_INT8,
+ DATA_TYPE_UINT8,
+ DATA_TYPE_BOOLEAN_ARRAY,
+ DATA_TYPE_INT8_ARRAY,
+ DATA_TYPE_UINT8_ARRAY
+} data_type_t;
/* nvp implementation version */
#define NV_VERSION 0
+/* nvlist pack encoding */
+#define NV_ENCODE_NATIVE 0
+#define NV_ENCODE_XDR 1
+
/* nvlist persistent unique name flags, stored in nvl_nvflags */
#define NV_UNIQUE_NAME 0x1
#define NV_UNIQUE_NAME_TYPE 0x2
@@ -122,7 +136,7 @@
int *, void *, int *);
nvp_header_t *nvlist_next_nvpair(nvlist_t *, nvp_header_t *);
-int nvlist_add_boolean_value(nvlist_t *, const char *, boolean_t);
+int nvlist_add_boolean_value(nvlist_t *, const char *, int);
int nvlist_add_byte(nvlist_t *, const char *, uint8_t);
int nvlist_add_int8(nvlist_t *, const char *, int8_t);
int nvlist_add_uint8(nvlist_t *, const char *, uint8_t);
@@ -133,7 +147,7 @@
int nvlist_add_int64(nvlist_t *, const char *, int64_t);
int nvlist_add_uint64(nvlist_t *, const char *, uint64_t);
int nvlist_add_string(nvlist_t *, const char *, const char *);
-int nvlist_add_boolean_array(nvlist_t *, const char *, boolean_t *, uint32_t);
+int nvlist_add_boolean_array(nvlist_t *, const char *, int *, uint32_t);
int nvlist_add_byte_array(nvlist_t *, const char *, uint8_t *, uint32_t);
int nvlist_add_int8_array(nvlist_t *, const char *, int8_t *, uint32_t);
int nvlist_add_uint8_array(nvlist_t *, const char *, uint8_t *, uint32_t);
@@ -147,26 +161,4 @@
int nvlist_add_nvlist(nvlist_t *, const char *, nvlist_t *);
int nvlist_add_nvlist_array(nvlist_t *, const char *, nvlist_t **, uint32_t);
-int zfs_parsedev(struct zfs_devdesc *dev, const char *devspec,
- const char **path);
-char *zfs_fmtdev(void *vdev);
-int zfs_probe_dev(const char *devname, uint64_t *pool_guid);
-int zfs_list(const char *name);
-int zfs_get_bootonce(void *, const char *, char *, size_t);
-int zfs_get_bootenv(void *, nvlist_t **);
-int zfs_set_bootenv(void *, nvlist_t *);
-int zfs_attach_nvstore(void *);
-uint64_t ldi_get_size(void *);
-void init_zfs_boot_options(const char *currdev);
-
-int zfs_bootenv(const char *name);
-int zfs_attach_nvstore(void *);
-int zfs_belist_add(const char *name, uint64_t __unused);
-int zfs_set_env(void);
-
-nvlist_t *vdev_read_bootenv(vdev_t *);
-
-extern struct devsw zfs_dev;
-extern struct fs_ops zfs_fsops;
-
-#endif /*_BOOT_LIBZFS_H_*/
+#endif /* !_BOOT_NVLIST_H_ */
diff --git a/stand/libsa/zfs/nvlist.c b/stand/libsa/zfs/nvlist.c
--- a/stand/libsa/zfs/nvlist.c
+++ b/stand/libsa/zfs/nvlist.c
@@ -26,13 +26,20 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-#include <stand.h>
-#include <stdbool.h>
+#include <sys/param.h>
#include <sys/endian.h>
#include <sys/stdint.h>
-#include <sys/param.h>
-#include <zfsimpl.h>
-#include "libzfs.h"
+#ifdef _STANDALONE
+#include <stand.h>
+#else
+#include <errno.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#endif
+
+#include "nvlist.h"
enum xdr_op {
XDR_OP_ENCODE = 1,
@@ -1342,7 +1349,7 @@
}
int
-nvlist_add_boolean_value(nvlist_t *nvl, const char *name, boolean_t value)
+nvlist_add_boolean_value(nvlist_t *nvl, const char *name, int value)
{
return (nvlist_add_common(nvl, name, DATA_TYPE_BOOLEAN_VALUE, 1,
&value));
@@ -1409,8 +1416,7 @@
}
int
-nvlist_add_boolean_array(nvlist_t *nvl, const char *name,
- boolean_t *a, uint32_t n)
+nvlist_add_boolean_array(nvlist_t *nvl, const char *name, int *a, uint32_t n)
{
return (nvlist_add_common(nvl, name, DATA_TYPE_BOOLEAN_ARRAY, n, a));
}
diff --git a/sys/cddl/boot/zfs/zfsimpl.h b/sys/cddl/boot/zfs/zfsimpl.h
--- a/sys/cddl/boot/zfs/zfsimpl.h
+++ b/sys/cddl/boot/zfs/zfsimpl.h
@@ -671,40 +671,6 @@
#define ZIO_COMPRESS_ON_VALUE ZIO_COMPRESS_LZJB
#define ZIO_COMPRESS_DEFAULT ZIO_COMPRESS_OFF
-/* nvlist pack encoding */
-#define NV_ENCODE_NATIVE 0
-#define NV_ENCODE_XDR 1
-
-typedef enum {
- DATA_TYPE_UNKNOWN = 0,
- DATA_TYPE_BOOLEAN,
- DATA_TYPE_BYTE,
- DATA_TYPE_INT16,
- DATA_TYPE_UINT16,
- DATA_TYPE_INT32,
- DATA_TYPE_UINT32,
- DATA_TYPE_INT64,
- DATA_TYPE_UINT64,
- DATA_TYPE_STRING,
- DATA_TYPE_BYTE_ARRAY,
- DATA_TYPE_INT16_ARRAY,
- DATA_TYPE_UINT16_ARRAY,
- DATA_TYPE_INT32_ARRAY,
- DATA_TYPE_UINT32_ARRAY,
- DATA_TYPE_INT64_ARRAY,
- DATA_TYPE_UINT64_ARRAY,
- DATA_TYPE_STRING_ARRAY,
- DATA_TYPE_HRTIME,
- DATA_TYPE_NVLIST,
- DATA_TYPE_NVLIST_ARRAY,
- DATA_TYPE_BOOLEAN_VALUE,
- DATA_TYPE_INT8,
- DATA_TYPE_UINT8,
- DATA_TYPE_BOOLEAN_ARRAY,
- DATA_TYPE_INT8_ARRAY,
- DATA_TYPE_UINT8_ARRAY
-} data_type_t;
-
/*
* On-disk version number.
*/

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 8, 2:37 AM (20 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14525888
Default Alt Text
D35255.diff (9 KB)

Event Timeline