Increase meta-dnode redundancy in "some" mode

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 <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Rob Norris <[email protected]>
Signed-off-by:	Alexander Motin <[email protected]>
Sponsored by:	iXsystems, Inc.
Closes #17339
This commit is contained in:
Alexander Motin authored and GitHub committed 2025-05-16 13:23:32 -04:00
1 parent 086105f4c4
commit d5616ad34a
3 files changed
+5 -4

No files matched your search

+2 -2
View File
@@ -144,9 +144,9 @@ typedef enum dmu_object_byteswap {
#define DMU_OT_IS_DDT(ot) \
((ot) == DMU_OT_DDT_ZAP)
#define DMU_OT_IS_CRITICAL(ot) \
#define DMU_OT_IS_CRITICAL(ot, level) \
(DMU_OT_IS_METADATA(ot) && \
(ot) != DMU_OT_DNODE && \
((ot) != DMU_OT_DNODE || (level) > 0) && \
(ot) != DMU_OT_DIRECTORY_CONTENTS && \
(ot) != DMU_OT_SA)
+2 -1
View File
@@ -1632,7 +1632,8 @@ When set to
ZFS stores an extra copy of only critical metadata.
This can improve file create performance since less metadata
needs to be written.
If a single on-disk block is corrupt, at worst a single user file can be lost.
If a single on-disk block is corrupt, multiple user files or directories
can be lost.
.Pp
When set to
.Sy none ,
+1 -1
View File
@@ -2358,7 +2358,7 @@ dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp)
gang_copies++;
break;
case ZFS_REDUNDANT_METADATA_SOME:
if (DMU_OT_IS_CRITICAL(type)) {
if (DMU_OT_IS_CRITICAL(type, level)) {
copies++;
gang_copies++;
} else if (DMU_OT_IS_METADATA(type)) {