]> granicus.if.org Git - zfs/commitdiff
OpenZFS 7340 - receive manual origin should override automatic origin
authorGeorge Melikov <mail@gmelikov.ru>
Fri, 27 Jan 2017 19:47:54 +0000 (22:47 +0300)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 27 Jan 2017 19:47:54 +0000 (11:47 -0800)
Authored by: Paul Dagnelie <pcd@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Ported-by: George Melikov <mail@gmelikov.ru>
OpenZFS-issue: https://www.illumos.org/issues/7340
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/ed4e7a6
Closes #5681

lib/libzfs/libzfs_sendrecv.c

index a6650a45fd82536ffe4df66fc469a68a0423e7b7..70488aa9770d14e4ce46f7bf9837fad6a96cd6d2 100644 (file)
@@ -3225,7 +3225,12 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
        /*
         * Determine the name of the origin snapshot.
         */
-       if (drrb->drr_flags & DRR_FLAG_CLONE) {
+       if (originsnap) {
+               (void) strncpy(origin, originsnap, sizeof (origin));
+               if (flags->verbose)
+                       (void) printf("using provided clone origin %s\n",
+                           origin);
+       } else if (drrb->drr_flags & DRR_FLAG_CLONE) {
                if (guid_to_name(hdl, destsnap,
                    drrb->drr_fromguid, B_FALSE, origin) != 0) {
                        zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
@@ -3236,11 +3241,6 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
                }
                if (flags->verbose)
                        (void) printf("found clone origin %s\n", origin);
-       } else if (originsnap) {
-               (void) strncpy(origin, originsnap, sizeof (origin));
-               if (flags->verbose)
-                       (void) printf("using provided clone origin %s\n",
-                           origin);
        }
 
        boolean_t resuming = DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) &