diff options
author | LOLi <[email protected]> | 2018-05-01 05:58:29 +0200 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-04-30 20:58:29 -0700 |
commit | 3cbe89b12a55a0ff350d7434834f4f48227896a3 (patch) | |
tree | 94fc22cbbf75123e5035478af696d13b7c0daae3 /lib/libzfs/libzfs_sendrecv.c | |
parent | 20507534d4ede14d4dd82c99fc8d461704ce7419 (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.c | 2 |
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; |