Skip to content

Commit

Permalink
BRT: Check bv_mos_entries in brt_entry_lookup()
Browse files Browse the repository at this point in the history
When vdev first sees some block cloning, there is a window when
brt_maybe_exists() might already return true since something was
cloned, but bv_mos_entries is still 0 since BRT ZAP was not yet
created.  In such case we should not try to look into the ZAP
and dereference NULL bv_mos_entries_dnode.

Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Rob Norris <[email protected]>
Signed-off-by:	Alexander Motin <[email protected]>
Sponsored by:	iXsystems, Inc.
Closes #16851
  • Loading branch information
amotin authored Dec 12, 2024
1 parent e0039c7 commit 19a04e5
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions module/zfs/brt.c
Original file line number Diff line number Diff line change
Expand Up @@ -859,6 +859,9 @@ brt_entry_lookup(brt_vdev_t *brtvd, brt_entry_t *bre)
{
uint64_t off = BRE_OFFSET(bre);

if (brtvd->bv_mos_entries == 0)
return (SET_ERROR(ENOENT));

return (zap_lookup_uint64_by_dnode(brtvd->bv_mos_entries_dnode,
&off, BRT_KEY_WORDS, 1, sizeof (bre->bre_count), &bre->bre_count));
}
Expand Down

0 comments on commit 19a04e5

Please sign in to comment.