summaryrefslogtreecommitdiffstats
path: root/lib/libzfs/libzfs_sendrecv.c
diff options
context:
space:
mode:
authorLOLi <[email protected]>2018-05-01 05:58:29 +0200
committerBrian Behlendorf <[email protected]>2018-04-30 20:58:29 -0700
commit3cbe89b12a55a0ff350d7434834f4f48227896a3 (patch)
tree94fc22cbbf75123e5035478af696d13b7c0daae3 /lib/libzfs/libzfs_sendrecv.c
parent20507534d4ede14d4dd82c99fc8d461704ce7419 (diff)
Fix zfs incremental send remove '-o' properties
When receiving an incremental send stream with intermediary snapshots zfs_receive_one() does not correctly identify the top-level dataset: consequently we restore said snapshots as if they were children datasets in the hierarchy, forcing inheritance of any property received with 'zfs send -o' and effectively removing any locally set value. The test case did not correctly verify this situation because it uses adjacent snapshots, basically testing 'zfs send -i' instead of 'zfs send -I': this commit adds an additional intermediary snapshot to the test script. Reviewed-by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: loli10K <[email protected]> Closes #7478
Diffstat (limited to 'lib/libzfs/libzfs_sendrecv.c')
-rw-r--r--lib/libzfs/libzfs_sendrecv.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libzfs/libzfs_sendrecv.c b/lib/libzfs/libzfs_sendrecv.c
index b138745b8..9a4f373a1 100644
--- a/lib/libzfs/libzfs_sendrecv.c
+++ b/lib/libzfs/libzfs_sendrecv.c
@@ -4041,7 +4041,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
goto out;
}
- if (top_zfs && *top_zfs == NULL)
+ if (top_zfs && (*top_zfs == NULL || strcmp(*top_zfs, name) == 0))
toplevel = B_TRUE;
if (drrb->drr_type == DMU_OST_ZVOL) {
type = ZFS_TYPE_VOLUME;