Skip to content

Conversation

@amotin
Copy link
Member

@amotin amotin commented May 15, 2025

Loss of one indirect block of the meta dnode likely means loss of the whole dataset. It is worse than one file that the man page promises, and in my opinion is not much better than "none" mode.

This change restores redundancy of the meta-dnode indirect blocks, while same time still corrects expectations in the man page.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Performance enhancement (non-breaking change which improves efficiency)
  • Code cleanup (non-breaking change which makes code smaller or more readable)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Library ABI change (libzfs, libzfs_core, libnvpair, libuutil and libzfsbootenv)
  • Documentation (a change to man pages or other documentation)

Checklist:

Loss of one indirect block of the meta dnode likely means loss of
the whole dataset.  It is worse than one file that the man page
promises, and in my opinion is not much better than "none" mode.

This change restores redundancy of the meta-dnode indirect blocks,
while same time still corrects expectations in the man page.

Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
@amotin amotin requested review from behlendorf and pcd1193182 May 15, 2025 17:38
@amotin
Copy link
Member Author

amotin commented May 15, 2025

@akashb-22 ^^^

@amotin amotin added the Status: Code Review Needed Ready for review and testing label May 15, 2025
Copy link
Contributor

@behlendorf behlendorf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense. I'd be surprised if this ended up significantly reducing the performance gain based on the usage stats I posted in this #13680 (comment). DMU_OT_DNODE was the smallest of the three big consumers.

Copy link
Member

@robn robn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, good one. I've run into metadnode indirect loss during recovery work, and it's extremely unfun. Every bit of extra detail helps!

Copy link
Contributor

@akashb-22 akashb-22 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@amotin amotin added Status: Accepted Ready to integrate (reviewed, tested) and removed Status: Code Review Needed Ready for review and testing labels May 16, 2025
@amotin amotin merged commit d5616ad into openzfs:master May 16, 2025
23 of 24 checks passed
@amotin amotin deleted the some branch May 16, 2025 17:23
ixhamza pushed a commit to truenas/zfs that referenced this pull request Jun 20, 2025
Loss of one indirect block of the meta dnode likely means loss of
the whole dataset.  It is worse than one file that the man page
promises, and in my opinion is not much better than "none" mode.

This change restores redundancy of the meta-dnode indirect blocks,
while same time still corrects expectations in the man page.

Reviewed-by: Akash B <akash-b@hpe.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Rob Norris <robn@despairlabs.com>
Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Closes openzfs#17339
amotin added a commit to amotin/zfs that referenced this pull request Aug 5, 2025
Loss of one indirect block of the meta dnode likely means loss of
the whole dataset.  It is worse than one file that the man page
promises, and in my opinion is not much better than "none" mode.

This change restores redundancy of the meta-dnode indirect blocks,
while same time still corrects expectations in the man page.

Reviewed-by: Akash B <akash-b@hpe.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Rob Norris <robn@despairlabs.com>
Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Closes openzfs#17339
spauka pushed a commit to spauka/zfs that referenced this pull request Aug 30, 2025
Loss of one indirect block of the meta dnode likely means loss of
the whole dataset.  It is worse than one file that the man page
promises, and in my opinion is not much better than "none" mode.

This change restores redundancy of the meta-dnode indirect blocks,
while same time still corrects expectations in the man page.

Reviewed-by: Akash B <akash-b@hpe.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Rob Norris <robn@despairlabs.com>
Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Closes openzfs#17339
@dodexahedron
Copy link
Contributor

dodexahedron commented Sep 26, 2025

If entire dataset loss is possible, as mentioned in the opening comment, shouldn't the man page entry for this say that?

Whatever the worst case is, the existing style/language of mentioning worst-case damage is ideal and should be preserved, I think. Under-stating at all is really something to avoid, on the topic of data loss.

Even better would be to mention worst case and best case for all of them. So, if this, for example, always WILL lose one or more entire files (best case), and MAY lose an entire dataset (worst case), it'd be great to mention both of those bounds to assist users in designing for their requirements and failure tolerances.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Status: Accepted Ready to integrate (reviewed, tested)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants