With the addition of BP_EMBEDDED_TYPE_REDACTED in
30af21b0 a couple of
codepaths make wrong assumptions and could potentially result in errors.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Chris Dunlop <chris@onthe.net.au>
Reviewed-by: Paul Dagnelie <pcd@delphix.com>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Closes #8951
typedef enum bp_embedded_type {
BP_EMBEDDED_TYPE_DATA,
- BP_EMBEDDED_TYPE_RESERVED, /* Reserved for an unintegrated feature. */
+ BP_EMBEDDED_TYPE_RESERVED, /* Reserved for Delphix byteswap feature. */
BP_EMBEDDED_TYPE_REDACTED,
- NUM_BP_EMBEDDED_TYPES = BP_EMBEDDED_TYPE_RESERVED
+ NUM_BP_EMBEDDED_TYPES
} bp_embedded_type_t;
#define BPE_NUM_WORDS 14
}
if (BP_IS_EMBEDDED(bp)) {
- if (BPE_GET_ETYPE(bp) > NUM_BP_EMBEDDED_TYPES) {
+ if (BPE_GET_ETYPE(bp) >= NUM_BP_EMBEDDED_TYPES) {
zfs_panic_recover("blkptr at %p has invalid ETYPE %llu",
bp, (longlong_t)BPE_GET_ETYPE(bp));
}