-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ZFS process stuck at 100% CPU when receiving #5699
Comments
@nfinformatique which version of FreeNAS is/was used to generate the stream? IIRC a similar problem has been reported to the illumos-discuss mailing list (title "ZFS recv hangs"). Can you pipe the stream through |
FreeNAS: FreeBSD HOSTNAME 10.3-STABLE FreeBSD 10.3-STABLE |
The full stream dump information (it is a full send, no increment)
|
@nfinformatique It would seems that the stable branch of freebsd10 did indeed get OpenZFS 6393 (zfs receive a full send as a clone): Try again with
|
Indeed, there is such huge number of free objects.
Thank you very much for your help. I will manage to get a local up-to-date version to import properly. |
I installed a temporary Ubuntu and compiled the last module (0.7.0-rc3), did a send/receive and it worked ! |
@nfinformatique feel free to open the issue if you need. Closed. |
@nfinformatique keep in mind that 0.7.0 is not recommended for production use yet. Alternatively you'll want to send the data without freeobjects records, but you'll need OpenZFS 6536 (zfs send: want a way to disable setting of DRR_FLAG_FREERECORDS) for that, which i could only find in freebsd11 truenas/os@d29ea66. |
seems like updating to the freenas 9.10 nightlies (which are based on freebsd11 and should have 6536) and setting the tunable to 0 does not help. at least, I still get a stream with a huge FREEOBJECTS record which hangs zfs recv under ZoL 0.6.5.9.. |
Bonjour,
J'ai bien reçu votre message, qui sera traité rapidement.
Veuillez néanmoins noter que l'adresse [email protected] sera bientôt désactivée. Vous devriez donc modifier votre carnet d'adresse pour la nouvelle adresse [email protected].
Je vous souhaite une excellente journée
Cordialement
Nicolas Frey
|
@Fabian-Gruenbichler i'm reading again the original issue, maybe the second part of the request was not implemented? The title was also changed from "zfs send: want a way to disable sending of free records" to "zfs send: want a way to disable setting of DRR_FLAG_FREERECORDS".
It that's the case you have to use pre- OpenZFS 6393 version to send the stream: sorry about that. |
I just hit this issue as well. Is there anything to at least kill those processes? Will they ever finish? |
Bonjour,
J'ai bien reçu votre message, qui sera traité rapidement.
Veuillez néanmoins noter que l'adresse [email protected] sera bientôt désactivée. Vous devriez donc modifier votre carnet d'adresse pour la nouvelle adresse [email protected].
Je vous souhaite une excellente journée
Cordialement
Nicolas Frey
|
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems.the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11)
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems.the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11) Signed-off-by: Fabian Grünbichler <[email protected]>
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems. the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11) Signed-off-by: Fabian Grünbichler <[email protected]>
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems. the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11) Signed-off-by: Fabian Grünbichler <[email protected]> Requires-spl: refs/heads/spl-0.6.5-release
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems. the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11) Signed-off-by: Fabian Grünbichler <[email protected]> Requires-spl: 'refs/heads/spl-0.6.5-release'
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems. the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11) Signed-off-by: Fabian Grünbichler <[email protected]> Requires-spl: 3010774dd6ad6e6eb1f6a4d9c603dd49c55c79c9
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems. the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11) Signed-off-by: Fabian Grünbichler <[email protected]> Requires-spl: spl-0.6.5-release
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems. the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11) Signed-off-by: Fabian Grünbichler <[email protected]> Requires-spl: spl-0\.6\.5-release
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems. the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11) Signed-off-by: Fabian Grünbichler <[email protected]> Requires-spl: "spl-0.6.5-release" Signed-off-by: Fabian Grünbichler <[email protected]>
this combines changes from e6d3a84 OpenZFS 6393 - zfs receive a full send as a clone and 50c957f Implement large_dnode pool feature to hopefully allow sending regular streams from 0.7.x to 0.6.5.x based systems. the problematic records of the following kind now no longer lead to an infinite loop, but instead allow the receive to complete: drr_type = FREEOBJECTS firstobj = 64 numobjs = 36028797018963904 err = 0 see issues openzfs#5699 (older incompatibility between FreeNAS and <= 0.6.5.11) and openzfs#6507 (recent incompatibility between 0.7.x and <= 0.6.5.11) Signed-off-by: Fabian Grünbichler <[email protected]> Requires-spl: refs/pull/647/head
FYI a pool I created with 0.7.0 to get around this issue got into problems when run with 0.6.5.9 and 0.6.5.11 afterwards where it was not freeing space. (not even upgrading to 0.7.1 fixed it) but local zfs send/receive of the offending pool results in zfs recv stuck like before Not sure if this was "expected", I did not expect it Applying this patch on top of 0.6.5.11 fixed it (or at least it got further and is still running) |
Bonjour,
J'ai bien reçu votre message, qui sera traité rapidement.
Veuillez néanmoins noter que l'adresse [email protected] sera bientôt désactivée. Vous devriez donc modifier votre carnet d'adresse pour la nouvelle adresse [email protected].
Je vous souhaite une excellente journée
Cordialement
Nicolas Frey
|
All objects after the last written or freed object are not supposed to exist after receiving the stream. Free them accordingly, as if a freeobjects record for them had been included in the stream. Reviewed by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Closes #5699 Closes #6507 Closes #6616
When sending an incremental stream based on a snapshot, the receiving side must have the same base snapshot. Thus we do not need to send FREEOBJECTS records for any objects past the maximum one which exists locally. This allows us to send incremental streams (again) to older ZFS implementations (e.g. ZoL < 0.7) which actually try to free all objects in a FREEOBJECTS record, instead of bailing out early. Reviewed by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Closes #5699 Closes #6507 Closes #6616
All objects after the last written or freed object are not supposed to exist after receiving the stream. Free them accordingly, as if a freeobjects record for them had been included in the stream. Reviewed by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Closes openzfs#5699 Closes openzfs#6507 Closes openzfs#6616
When sending an incremental stream based on a snapshot, the receiving side must have the same base snapshot. Thus we do not need to send FREEOBJECTS records for any objects past the maximum one which exists locally. This allows us to send incremental streams (again) to older ZFS implementations (e.g. ZoL < 0.7) which actually try to free all objects in a FREEOBJECTS record, instead of bailing out early. Reviewed by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Closes openzfs#5699 Closes openzfs#6507 Closes openzfs#6616
All objects after the last written or freed object are not supposed to exist after receiving the stream. Free them accordingly, as if a freeobjects record for them had been included in the stream. Reviewed by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Closes openzfs#5699 Closes openzfs#6507 Closes openzfs#6616
When sending an incremental stream based on a snapshot, the receiving side must have the same base snapshot. Thus we do not need to send FREEOBJECTS records for any objects past the maximum one which exists locally. This allows us to send incremental streams (again) to older ZFS implementations (e.g. ZoL < 0.7) which actually try to free all objects in a FREEOBJECTS record, instead of bailing out early. Reviewed by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Closes openzfs#5699 Closes openzfs#6507 Closes openzfs#6616
All objects after the last written or freed object are not supposed to exist after receiving the stream. Free them accordingly, as if a freeobjects record for them had been included in the stream. Reviewed by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Closes #5699 Closes #6507 Closes #6616
When sending an incremental stream based on a snapshot, the receiving side must have the same base snapshot. Thus we do not need to send FREEOBJECTS records for any objects past the maximum one which exists locally. This allows us to send incremental streams (again) to older ZFS implementations (e.g. ZoL < 0.7) which actually try to free all objects in a FREEOBJECTS record, instead of bailing out early. Reviewed by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Closes #5699 Closes #6507 Closes #6616
Argh, I just ran into this same bug, when doing incremental snapshot send/receive on a Mint 18.1 server (running an older 0.6 version of ZFS), reading from a zpool created on a Mint 19 box (using a newer 0.7 version of ZFS). The ZFS receive process hung with 100% CPU usage, and could not be killed even with signal 9. The only way to get out of this was to reboot the server. MORAL: on hosts with older versions of ZFS, do not try to read zpools created by newer versions of ZFS. |
Bonjour,
J'ai bien reçu votre message, qui sera traité rapidement.
Veuillez néanmoins noter que l'adresse [email protected] sera bientôt désactivée. Vous devriez donc modifier votre carnet d'adresse pour la nouvelle adresse [email protected].
Je vous souhaite une excellente journée
Cordialement
Nicolas Frey
|
All objects after the last written or freed object are not supposed to exist after receiving the stream. Free them accordingly, as if a freeobjects record for them had been included in the stream. Reviewed by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Closes openzfs#5699 Closes openzfs#6507 Closes openzfs#6616
Hello,
First a big thanks for your work and the great functionalities you brings to linux.
System information
Describe the problem you're observing
When receiving a stream, the zfs process stucks at 100%, for weeks (waited more than 24 days), without any errors on dmesg/messages/tty. I tried receiving with the 0.6.5.8, same happens. I tried on FreeBSD 9.3, same happens. I can use zfs on other pools/fs, but no way to kill the zfs process, in R state.
Tried with and without selinux, no difference.
Tried to export the source dataset again, same result.
Describe how to reproduce the problem
I exported a jail created by FreeNAS, and imported with -udv.
Main question: does any special file attribute in the unmounted data receiving operation can lead to this situation ?
Second question: is there any way to receive the other datasets in the stream ? I tried to manually create a local dataset with the same name, but any failure will stop receiving, ignoring the subsequents datasets.
Include any warning/errors/backtraces from the system logs
The strace result:
Stops there....
The text was updated successfully, but these errors were encountered: