zfsonlinux/zfs — pull request #1069 by behlendorf (2012-10-26 18:49:03+00:00)
Title: Add ddt_object_count() error handling

The interface for the ddt_zap_count() function assumes it can
never fail. However, internally ddt_zap_count() is implemented
with zap_count() which can potentially fail. Now because there
was no way to return the error to the caller a VERIFY was used
to ensure this case never happens.

Unfortunately, it has been observed that pools can be damaged in
such a way that zap_count() fails. The result is that the pool can
not be imported without hitting the VERIFY and crashing the system.

This patch reworks ddt_object_count() so an error can be safely
caught and returned to the caller. This should allow the pool to
rewind correctly on import if needed.

Signed-off-by: Brian Behlendorf
Issue #910