aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2016-06-09 17:04:12 -0700
committerBrian Behlendorf <[email protected]>2016-06-28 13:47:03 -0700
commit43e52eddb13d8accbd052fac9a242ce979531aa4 (patch)
tree35a4f1d573f6255e13ad1e36ed1c72827c376849 /include
parent8c62a0d0f39c450d1fdb001b8073193f89611f56 (diff)
Implement zfs_ioc_recv_new() for OpenZFS 2605
Adds ZFS_IOC_RECV_NEW for resumable streams and preserves the legacy ZFS_IOC_RECV user/kernel interface. The new interface supports all stream options but is currently only used for resumable streams. This way updated user space utilities will interoperate with older kernel modules. ZFS_IOC_RECV_NEW is modeled after the existing ZFS_IOC_SEND_NEW handler. Non-Linux OpenZFS platforms have opted to change the legacy interface in an incompatible fashion instead of adding a new ioctl. Signed-off-by: Brian Behlendorf <[email protected]>
Diffstat (limited to 'include')
-rw-r--r--include/libzfs_core.h3
-rw-r--r--include/sys/fs/zfs.h4
-rw-r--r--include/sys/zfs_ioctl.h5
3 files changed, 8 insertions, 4 deletions
diff --git a/include/libzfs_core.h b/include/libzfs_core.h
index d2d79175f..9e761004a 100644
--- a/include/libzfs_core.h
+++ b/include/libzfs_core.h
@@ -69,6 +69,9 @@ int lzc_receive_resumable(const char *, nvlist_t *, const char *,
boolean_t, int);
int lzc_receive_with_header(const char *, nvlist_t *, const char *, boolean_t,
boolean_t, int, const struct dmu_replay_record *);
+int lzc_receive_one(const char *, nvlist_t *, const char *, boolean_t,
+ boolean_t, int, const struct dmu_replay_record *, int, uint64_t *,
+ uint64_t *, uint64_t *, nvlist_t **);
boolean_t lzc_exists(const char *);
diff --git a/include/sys/fs/zfs.h b/include/sys/fs/zfs.h
index 8a581eee5..e802454b9 100644
--- a/include/sys/fs/zfs.h
+++ b/include/sys/fs/zfs.h
@@ -232,6 +232,7 @@ typedef enum {
#define ZPROP_SOURCE_VAL_RECVD "$recvd"
#define ZPROP_N_MORE_ERRORS "N_MORE_ERRORS"
+
/*
* Dataset flag implemented as a special entry in the props zap object
* indicating that the dataset has received properties on or after
@@ -923,7 +924,7 @@ typedef struct ddt_histogram {
*/
typedef enum zfs_ioc {
/*
- * Illumos - 70/128 numbers reserved.
+ * Illumos - 71/128 numbers reserved.
*/
ZFS_IOC_FIRST = ('Z' << 8),
ZFS_IOC = ZFS_IOC_FIRST,
@@ -997,6 +998,7 @@ typedef enum zfs_ioc {
ZFS_IOC_BOOKMARK,
ZFS_IOC_GET_BOOKMARKS,
ZFS_IOC_DESTROY_BOOKMARKS,
+ ZFS_IOC_RECV_NEW,
/*
* Linux - 3/64 numbers reserved.
diff --git a/include/sys/zfs_ioctl.h b/include/sys/zfs_ioctl.h
index 7b751fea6..5157c6704 100644
--- a/include/sys/zfs_ioctl.h
+++ b/include/sys/zfs_ioctl.h
@@ -389,15 +389,14 @@ typedef struct zfs_cmd {
uint64_t zc_iflags; /* internal to zfs(7fs) */
zfs_share_t zc_share;
dmu_objset_stats_t zc_objset_stats;
- dmu_replay_record_t zc_begin_record;
+ struct drr_begin zc_begin_record;
zinject_record_t zc_inject_record;
uint32_t zc_defer_destroy;
uint32_t zc_flags;
uint64_t zc_action_handle;
int zc_cleanup_fd;
uint8_t zc_simple;
- boolean_t zc_resumable;
- uint8_t zc_pad[2]; /* alignment */
+ uint8_t zc_pad[3]; /* alignment */
uint64_t zc_sendobj;
uint64_t zc_fromobj;
uint64_t zc_createtxg;