freebsd-skq/cddl
Alexander Motin 03d54eb339 MFV r329807:
8940 Sending an intra-pool resumable send stream may result in EXDEV

illumos/illumos-gate@544132fce3

"zfs send -t <token>" for an incremental send should be able to resume
successfully when sending to the same pool: a subtle issue in
zfs_iter_children() doesn't currently allow this.

Because resuming from a token requires "guid" -> "dataset" mapping
(guid_to_name()), we have to walk the whole hierarchy to find the right
snapshots to send.
When resuming an incremental send both source and destination live in the
same pool and have the same guid: this is where zfs_iter_children() gets
confused and picks up the wrong snapshot, so we end up trying to send an
incremental "destination@snap1 -> source@snap2" stream instead of
"source@snap1 -> source@snap2": this fails with an "Invalid cross-device
link" (EXDEV) error.

Reviewed by: Paul Dagnelie <pcd@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
Author: loli10K <ezomori.nozomu@gmail.com>
2018-02-22 04:01:55 +00:00
..
compat/opensolaris Honor all options of "zfs mount -o" 2017-09-05 19:28:35 +00:00
contrib/opensolaris MFV r329807: 2018-02-22 04:01:55 +00:00
lib Add inline to errno.d for translating int to string 2018-02-16 04:22:29 +00:00
sbin DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
tests
usr.bin Add basic tests for ctfconvert(1), fold(1) and rs(1) 2017-11-27 20:01:58 +00:00
usr.sbin zdb: raise WARNS from 0 to 2 2018-02-21 15:51:48 +00:00
Makefile Convert traditional ${MK_TESTS} conditional idiom for including test 2017-08-02 08:35:51 +00:00
Makefile.inc