mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Always refuse receving non-resume stream when resume state exists
This fixes a hole in the situation where the resume state is left from receiving a new dataset and, so, the state is set on the dataset itself (as opposed to %recv child). Additionally, distinguish incremental and resume streams in error messages. Reviewed-by: Matt Ahrens <matt@delphix.com> Reviewed-by: Tom Caputi <tcaputi@datto.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Andriy Gapon <avg@FreeBSD.org> Closes #9252
This commit is contained in:
committed by
Brian Behlendorf
parent
1a504d27df
commit
ebeb6f23bf
@@ -4598,11 +4598,18 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* if the fs does not exist, look for it based on the
|
||||
* fromsnap GUID
|
||||
* If the fs does not exist, look for it based on the
|
||||
* fromsnap GUID.
|
||||
*/
|
||||
(void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN,
|
||||
"cannot receive incremental stream"));
|
||||
if (resuming) {
|
||||
(void) snprintf(errbuf, sizeof (errbuf),
|
||||
dgettext(TEXT_DOMAIN,
|
||||
"cannot receive resume stream"));
|
||||
} else {
|
||||
(void) snprintf(errbuf, sizeof (errbuf),
|
||||
dgettext(TEXT_DOMAIN,
|
||||
"cannot receive incremental stream"));
|
||||
}
|
||||
|
||||
(void) strcpy(name, destsnap);
|
||||
*strchr(name, '@') = '\0';
|
||||
|
||||
Reference in New Issue
Block a user