So I'm tinkering around with ZFS on linux and zrep. I've got 2 VMs on my laptop and I'm running zrep and synchronizing the contents of one filesystem to another.
One unexpected situation is this: If I'm on the "slave" -- the box that's receiving the data -- and I'm continuously reading the contents of a file (such as with sum), if the file is rapidly changing on the master I will get an Input/output error on the slave as the snapshot is getting applied. This does not happen if I'm continuously reading a file that isn't changing in the snapshot.
To be clear -- the "sum" program or any other standard userland program that is reading the changing file on the target filesystem will periodically get an Input/output error and crash.
The ZFS replication itself works correctly -- zrep is just a nice tool for managing the replication process.
I'm a little confused at this behavior -- will reads of files that get updated when a ZFS snapshot is applied cause read errors, or is this a bug in ZFS on linux?
You're not supposed to use the replicated filesystem that way. The files are changing as the replication stream updates the target.
What were you expecting to happen?
In my opinion the official docs are pretty clear, at least now, some years after your question. :-) The problem you are seeing with changed files seems as expected to me, while the success you have with unchanged files might simply because of things like those are cached in memory?
In the linked docs I don't see any documented difference in the behaviour between incremental and full sends of snapshots. Instead the wording that file systems are inaccessible and get unmounted reads to me that things are the same and file systems might already exist, like is the case for incremental sending of snapshots.