Port to zfs-0.7.x
Compatibility changes to work with libzfs 0.7.x, changes are not bacward compatible
This commit is contained in:
parent
4cd8ea7346
commit
c0f5b857fc
25
common.go
25
common.go
|
@ -144,7 +144,9 @@ const (
|
||||||
// Pool properties. Enumerates available ZFS pool properties. Use it to access
|
// Pool properties. Enumerates available ZFS pool properties. Use it to access
|
||||||
// pool properties either to read or set soecific property.
|
// pool properties either to read or set soecific property.
|
||||||
const (
|
const (
|
||||||
PoolPropName Prop = iota
|
PoolPropCont Prop = iota - 2
|
||||||
|
PoolPropInval
|
||||||
|
PoolPropName
|
||||||
PoolPropSize
|
PoolPropSize
|
||||||
PoolPropCapacity
|
PoolPropCapacity
|
||||||
PoolPropAltroot
|
PoolPropAltroot
|
||||||
|
@ -171,6 +173,8 @@ const (
|
||||||
PoolPropLeaked
|
PoolPropLeaked
|
||||||
PoolPropMaxBlockSize
|
PoolPropMaxBlockSize
|
||||||
PoolPropTName
|
PoolPropTName
|
||||||
|
PoolPropMaxNodeSize
|
||||||
|
PoolPropMultiHost
|
||||||
PoolNumProps
|
PoolNumProps
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -181,7 +185,9 @@ const (
|
||||||
* the property table in module/zcommon/zfs_prop.c.
|
* the property table in module/zcommon/zfs_prop.c.
|
||||||
*/
|
*/
|
||||||
const (
|
const (
|
||||||
DatasetPropType Prop = iota
|
DatasetPropCont Prop = iota - 2
|
||||||
|
DatasetPropBad
|
||||||
|
DatasetPropType
|
||||||
DatasetPropCreation
|
DatasetPropCreation
|
||||||
DatasetPropUsed
|
DatasetPropUsed
|
||||||
DatasetPropAvailable
|
DatasetPropAvailable
|
||||||
|
@ -207,7 +213,7 @@ const (
|
||||||
DatasetPropSnapdir
|
DatasetPropSnapdir
|
||||||
DatasetPropPrivate /* not exposed to user, temporary */
|
DatasetPropPrivate /* not exposed to user, temporary */
|
||||||
DatasetPropAclinherit
|
DatasetPropAclinherit
|
||||||
DatasetPropCreatetxg /* not exposed to the user */
|
DatasetPropCreateTXG /* not exposed to the user */
|
||||||
DatasetPropName /* not exposed to the user */
|
DatasetPropName /* not exposed to the user */
|
||||||
DatasetPropCanmount
|
DatasetPropCanmount
|
||||||
DatasetPropIscsioptions /* not exposed to the user */
|
DatasetPropIscsioptions /* not exposed to the user */
|
||||||
|
@ -240,12 +246,14 @@ const (
|
||||||
DatasetPropDedup
|
DatasetPropDedup
|
||||||
DatasetPropMlslabel
|
DatasetPropMlslabel
|
||||||
DatasetPropSync
|
DatasetPropSync
|
||||||
|
DatasetPropDnodeSize
|
||||||
DatasetPropRefratio
|
DatasetPropRefratio
|
||||||
DatasetPropWritten
|
DatasetPropWritten
|
||||||
DatasetPropClones
|
DatasetPropClones
|
||||||
DatasetPropLogicalused
|
DatasetPropLogicalused
|
||||||
DatasetPropLogicalreferenced
|
DatasetPropLogicalreferenced
|
||||||
DatasetPropInconsistent /* not exposed to the user */
|
DatasetPropInconsistent /* not exposed to the user */
|
||||||
|
DatasetPropVolmode
|
||||||
DatasetPropFilesystemLimit
|
DatasetPropFilesystemLimit
|
||||||
DatasetPropSnapshotLimit
|
DatasetPropSnapshotLimit
|
||||||
DatasetPropFilesystemCount
|
DatasetPropFilesystemCount
|
||||||
|
@ -259,6 +267,17 @@ const (
|
||||||
DatasetPropRelatime
|
DatasetPropRelatime
|
||||||
DatasetPropRedundantMetadata
|
DatasetPropRedundantMetadata
|
||||||
DatasetPropOverlay
|
DatasetPropOverlay
|
||||||
|
DatasetPropPrevSnap
|
||||||
|
DatasetPropReceiveResumeToken
|
||||||
|
DatasetPropEncryption
|
||||||
|
DatasetPropKeyLocation
|
||||||
|
DatasetPropKeyFormat
|
||||||
|
DatasetPropPBKDF2Salt
|
||||||
|
DatasetPropPBKDF2Iters
|
||||||
|
DatasetPropEncryptionRoot
|
||||||
|
DatasetPropKeyGUID
|
||||||
|
DatasetPropKeyStatus
|
||||||
|
DatasetPropRemapTXG /* not exposed to the user */
|
||||||
DatasetNumProps
|
DatasetNumProps
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -261,7 +261,7 @@ func (d *Dataset) Receive(inf *os.File, flags RecvFlags) (err error) {
|
||||||
defer C.free(unsafe.Pointer(cflags))
|
defer C.free(unsafe.Pointer(cflags))
|
||||||
dest := C.CString(dpath)
|
dest := C.CString(dpath)
|
||||||
defer C.free(unsafe.Pointer(dest))
|
defer C.free(unsafe.Pointer(dest))
|
||||||
ec := C.zfs_receive(C.libzfsHandle, dest, cflags, C.int(inf.Fd()), nil)
|
ec := C.zfs_receive(C.libzfsHandle, dest, nil, cflags, C.int(inf.Fd()), nil)
|
||||||
if ec != 0 {
|
if ec != 0 {
|
||||||
err = fmt.Errorf("ZFS receive of %s failed. %s", C.GoString(dest), LastError().Error())
|
err = fmt.Errorf("ZFS receive of %s failed. %s", C.GoString(dest), LastError().Error())
|
||||||
}
|
}
|
||||||
|
|
12
zpool.c
12
zpool.c
|
@ -2,7 +2,11 @@
|
||||||
* using libzfs from go language, and make go code shorter and more readable.
|
* using libzfs from go language, and make go code shorter and more readable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
typedef unsigned long int rlim64_t;
|
||||||
|
|
||||||
#include <libzfs.h>
|
#include <libzfs.h>
|
||||||
|
#include <libzfs/sys/zfs_context.h>
|
||||||
|
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -189,7 +193,7 @@ property_list_ptr read_zpool_property(zpool_list_ptr pool, int prop) {
|
||||||
property_list_ptr list = new_property_list();
|
property_list_ptr list = new_property_list();
|
||||||
|
|
||||||
r = zpool_get_prop(pool->zph, prop,
|
r = zpool_get_prop(pool->zph, prop,
|
||||||
list->value, INT_MAX_VALUE, &source);
|
list->value, INT_MAX_VALUE, &source, B_FALSE);
|
||||||
if (r == 0) {
|
if (r == 0) {
|
||||||
// strcpy(list->name, zpool_prop_to_name(prop));
|
// strcpy(list->name, zpool_prop_to_name(prop));
|
||||||
zprop_source_tostr(list->source, source);
|
zprop_source_tostr(list->source, source);
|
||||||
|
@ -491,11 +495,15 @@ 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) {
|
nvlist_ptr go_zpool_search_import(libzfs_handle_ptr zfsh, int paths, char **path, boolean_t do_scan) {
|
||||||
importargs_t idata = { 0 };
|
importargs_t idata = { 0 };
|
||||||
|
nvlist_ptr pools = NULL;
|
||||||
idata.path = path;
|
idata.path = path;
|
||||||
idata.paths = paths;
|
idata.paths = paths;
|
||||||
// idata.scan = 0;
|
// idata.scan = 0;
|
||||||
|
|
||||||
return zpool_search_import(zfsh, &idata);
|
thread_init();
|
||||||
|
pools = zpool_search_import(zfsh, &idata);
|
||||||
|
thread_fini();
|
||||||
|
return pools;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
3
zpool.go
3
zpool.go
|
@ -1,5 +1,6 @@
|
||||||
package zfs
|
package zfs
|
||||||
|
|
||||||
|
// #cgo CFLAGS: -D__USE_LARGEFILE64=1
|
||||||
// #include <stdlib.h>
|
// #include <stdlib.h>
|
||||||
// #include <libzfs.h>
|
// #include <libzfs.h>
|
||||||
// #include "common.h"
|
// #include "common.h"
|
||||||
|
@ -364,7 +365,7 @@ func poolSearchImport(q string, searchpaths []string, guid bool) (name string,
|
||||||
C.strings_setat(cpaths, C.int(i), csPath)
|
C.strings_setat(cpaths, C.int(i), csPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
pools := C.zpool_find_import(C.libzfsHandle, C.int(numofp), cpaths)
|
pools := C.go_zpool_search_import(C.libzfsHandle, C.int(numofp), cpaths, C.B_FALSE)
|
||||||
defer C.nvlist_free(pools)
|
defer C.nvlist_free(pools)
|
||||||
|
|
||||||
elem = C.nvlist_next_nvpair(pools, elem)
|
elem = C.nvlist_next_nvpair(pools, elem)
|
||||||
|
|
|
@ -543,7 +543,7 @@ func TestPool_VDevTree(t *testing.T) {
|
||||||
// TODO: Add test cases.
|
// TODO: Add test cases.
|
||||||
{
|
{
|
||||||
name: "test1",
|
name: "test1",
|
||||||
fields: fields{"NETSTOR"},
|
fields: fields{"TESTPOOL"},
|
||||||
wantErr: false,
|
wantErr: false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue