make DMU_OT_IS_METADATA and DMU_OT_IS_ENCRYPTED return B_TRUE or B_FALSE
Without this patch, the ASSERT3U(dbuf_is_metadata(db), ==, arc_is_metadata(buf)); at the beginning of dbuf_assign_arcbuf can panic if the object type is a DMU_OT_NEWTYPE that has DMU_OT_METADATA set. While we're at it, fix DMU_OT_IS_ENCRYPTED as well. Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Christian Schwarz <christian.schwarz@nutanix.com> Closes #13842
This commit is contained in:
parent
3f7c174b50
commit
cde04badd1
|
@ -136,7 +136,7 @@ typedef enum dmu_object_byteswap {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DMU_OT_IS_METADATA(ot) (((ot) & DMU_OT_NEWTYPE) ? \
|
#define DMU_OT_IS_METADATA(ot) (((ot) & DMU_OT_NEWTYPE) ? \
|
||||||
((ot) & DMU_OT_METADATA) : \
|
(((ot) & DMU_OT_METADATA) != 0) : \
|
||||||
DMU_OT_IS_METADATA_IMPL(ot))
|
DMU_OT_IS_METADATA_IMPL(ot))
|
||||||
|
|
||||||
#define DMU_OT_IS_DDT(ot) \
|
#define DMU_OT_IS_DDT(ot) \
|
||||||
|
@ -147,7 +147,7 @@ typedef enum dmu_object_byteswap {
|
||||||
((ot) == DMU_OT_PLAIN_FILE_CONTENTS || (ot) == DMU_OT_UINT64_OTHER)
|
((ot) == DMU_OT_PLAIN_FILE_CONTENTS || (ot) == DMU_OT_UINT64_OTHER)
|
||||||
|
|
||||||
#define DMU_OT_IS_ENCRYPTED(ot) (((ot) & DMU_OT_NEWTYPE) ? \
|
#define DMU_OT_IS_ENCRYPTED(ot) (((ot) & DMU_OT_NEWTYPE) ? \
|
||||||
((ot) & DMU_OT_ENCRYPTED) : \
|
(((ot) & DMU_OT_ENCRYPTED) != 0) : \
|
||||||
DMU_OT_IS_ENCRYPTED_IMPL(ot))
|
DMU_OT_IS_ENCRYPTED_IMPL(ot))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue