]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
zfs: fix EIO accessing dataset after resuming interrupted receive
authorAlan Somers <asomers@FreeBSD.org>
Thu, 20 Aug 2020 01:31:21 +0000 (01:31 +0000)
committerAlan Somers <asomers@FreeBSD.org>
Thu, 20 Aug 2020 01:31:21 +0000 (01:31 +0000)
commit02fa3d2963a4e19c270d689af7bd1980e4d53e08
tree332db636d41f4a16c17d90063d54d8c5d7545de2
parent72c7f24c8d2d136757bb30366d65b7e68943994d
zfs: fix EIO accessing dataset after resuming interrupted receive

ZFS unmounts a dataset while receiving into it and remounts it afterwards.
But if ZFS is resuming an incomplete receive, it screws up and ends up with
a dataset that is mounted, but returns EIO for every access. This commit
fixes that condition.

While the vulnerable code also exists in OpenZFS, the problem is not
reproducible there. Apparently OpenZFS doesn't unmount the destination
dataset during receive, like FreeBSD does.

PR: 248606
Reviewed by: mmacy
MFC after: 2 weeks
Sponsored by: Axcient
Differential Revision: https://reviews.freebsd.org/D26034
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c