summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndriy Gapon <[email protected]>2017-04-07 13:54:29 -0700
committerBrian Behlendorf <[email protected]>2017-04-09 16:09:16 -0700
commit4c3c6b6c73e31c789a2c0ce2a70912c077f15421 (patch)
treee6dae802bbbd76b9203ec43573a20b6f00ed0ba9
parentf9ea47db3d2e9494321131f789e8e5e9513b26dc (diff)
OpenZFS 5380 - receive of a send -p stream doesn't need to try renaming snapshots
Authored by: Andriy Gapon <[email protected]> Approved by: Dan McDonald <[email protected]> Reviewed by: Paul Dagnelie <[email protected]> Reviewed by: Matt Ahrens <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: George Melikov <[email protected]> Ported-by: Giuseppe Di Natale <[email protected]> recv_incremental_replication() takes care of things like removing datasets that have been removed on the sending side, detecting renamed datasets, ensuring that all datasets in the affected hierarchy have the same properties as their counterparts on the sending side. All of the above are not necessary if we are receiving a stream for a single dataset that has been generated with zfs send -p, that is, a stream that includes properties. zfs_receive_one() already takes care of applying the properties to the received datasets. OpenZFS-issue: https://www.illumos.org/issues/5380 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/b8ab927 Closes #5990
-rw-r--r--lib/libzfs/libzfs_sendrecv.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/libzfs/libzfs_sendrecv.c b/lib/libzfs/libzfs_sendrecv.c
index 709ca5997..07e8da0fd 100644
--- a/lib/libzfs/libzfs_sendrecv.c
+++ b/lib/libzfs/libzfs_sendrecv.c
@@ -2831,7 +2831,7 @@ zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname,
goto out;
}
- if (fromsnap != NULL) {
+ if (fromsnap != NULL && recursive) {
nvlist_t *renamed = NULL;
nvpair_t *pair = NULL;
@@ -2858,7 +2858,7 @@ zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname,
*strchr(tofs, '@') = '\0';
}
- if (recursive && !flags->dryrun && !flags->nomount) {
+ if (!flags->dryrun && !flags->nomount) {
VERIFY(0 == nvlist_alloc(&renamed,
NV_UNIQUE_NAME, 0));
}
@@ -2927,7 +2927,7 @@ zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname,
anyerr |= error;
} while (error == 0);
- if (drr->drr_payloadlen != 0 && fromsnap != NULL) {
+ if (drr->drr_payloadlen != 0 && recursive && fromsnap != NULL) {
/*
* Now that we have the fs's they sent us, try the
* renames again.