MFV r275542:

If a dnode has a spill block and there is an error while accessing
a data block then traverse_dnode() loses information about that error
and returns a status of visiting the spill block.

This issue is discovered by Spectra Logic.

Illumos issue:
    5311 traverse_dnode may report success when it should not

Original author:	gibbs
MFC after:		2 weeks


git-svn-id: svn+ssh://svn.freebsd.org/base/head@275734 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
MFV r275543:

Remove always true tests for ds->ds_phys' presence.

Clean up assertions in dsl_dataset_disown.

Remove unreachable code in dsl_dataset_disown().

Illumos issue:
    5310 Remove always true tests for non-NULL ds->ds_phys

MFC after:	2 weeks


git-svn-id: svn+ssh://svn.freebsd.org/base/head@275735 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
MFV r275544:

Clean up some duplicated code in dnode_sync() around freeing spill blocks.

Illumos issue:
    5350 clean up code in dnode_sync()

MFC after:	2 weeks


git-svn-id: svn+ssh://svn.freebsd.org/base/head@275736 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f