HomeFreeBSD

Fix a regression introduced in r274337 (large block support)

Description

Fix a regression introduced in r274337 (large block support)

In dsl_dataset_hold_obj() we used zap_contains(.., DS_FIELD_LARGE_BLOCKS)
to determine whether the extensible (zapifyed) dataset have large blocks.
The code expects the result be either 0 (found) or ENOENT (not found),
however reused the variable 'err' which later code expects to be 0.

Fix this by adopting similar code construct that is used later for
DS_FIELD_BOOKMARK_NAMES, which uses a temporary variable zaperr to catch
errors from zap_* rountines.

Reported by: Peter J. Creath (on FreeNAS; FreeNAS bug #6848)
Illumos issue: 5393 spurious failures from dsl_dataset_hold_obj()
Reviewed by: mahrens
Sponsored by: iXsystems, Inc.
X-MFC with: r274337

Details

Provenance
delphijAuthored on
Reviewer
mahrens
Parents
rS275514: Always ignore the deprecated MAP_RENAME and MAP_NORESERVE flags to mmap().
Branches
Unknown
Tags
Unknown

Event Timeline