-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Description
System information
| Type | Version/Name |
|---|---|
| Distribution Name | CentOS / ArchLinux |
| Distribution Version | 7.3 / latest |
| Linux Kernel | 3.10.0-514.6.1.el7.x86_64 / 4.12.6-1-ARCH |
| Architecture | x64 |
| ZFS Version | 0.6.5.9-1.el7_3.centos.x86_64 / zfs-dkms-git 0.7.0_r16_g6a8ee4f71-1 |
| SPL Version | 0.6.5.9-1.el7_3.centos.x86_64 / spl-dkms-git 0.7.0_r8_g9243b0f-1 |
Describe the problem you're observing
Problem is that zfs stream generated by ZFS v0.7 can't be successfully received on v0.6.5.x. Take into account that both pools has exactly the same features enabled and no special flags was enabled during zfs send (like compression or deduplication of stream).
Features on ZFS v0.7 pool:
rpool multihost off default
rpool feature@async_destroy enabled local
rpool feature@empty_bpobj active local
rpool feature@lz4_compress active local
rpool feature@multi_vdev_crash_dump disabled local
rpool feature@spacemap_histogram active local
rpool feature@enabled_txg disabled local
rpool feature@hole_birth disabled local
rpool feature@extensible_dataset disabled local
rpool feature@embedded_data disabled local
rpool feature@bookmarks disabled local
rpool feature@filesystem_limits disabled local
rpool feature@large_blocks disabled local
rpool feature@large_dnode disabled local
rpool feature@sha512 disabled local
rpool feature@skein disabled local
rpool feature@edonr disabled local
rpool feature@userobj_accounting disabled local
and it's version:
[ 4.050576] ZFS: Loaded module v0.7.0-1, ZFS pool version 5000, ZFS filesystem version 5
My case:
I use my ArchLinux(zfs ~v0.7) server as a backup server for CentOS(zfs 0.6.5.9) server. Full replication ZFS stream generated by CentOS server with zfs send -R successfully received on ArchLinux, but when I tried to restore CentOS server from such backup zfs send -R archlinux_pool/backup | ssh centos zfs receive centos_pool it doesn't work - zfs recv process hangs and takes 100% cpu time (sy) and do nothing. System is still remains responsible.
Upgrading CentOS server to v0.7.1 before receiving this old stream fixes the problem.
I've also tried to boot into two rescue systems (Debian with zfs 0.6.5.x and FreeBSD 10.x) and import this CentOS's pool then receive stream - whole server hangs completely in both cases.
Reproducible 100% of time.
If such kind of backward compatibility is not guarantied(really?) than zfs recv should immediately print exact error instead of hanging the server. Also, there should be some kind of versioning and probably some flag like zfs send --maximize-compatibility or --generate-for=0.6.5 or some other workaround because upgrading ZFS on receiving side is often not a option at all.
Describe how to reproduce the problem
- Create CentOS server with ZFS v0.6.5.x
- Create some dataset on it. Even empty is ok
- Create backup server with ZFS v0.7.x
zfs send -Rfrom first server to second (success)zfs recvfrom second to first (zfs process hangs or even whole server hangs)
Include any warning/errors/backtraces from the system logs
Unfortunately no errors seen in dmesg or stderr/out