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.

Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
  • Loading branch information
amotin committed Dec 9, 2024
1 parent e0039c7 commit 376958c
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 376958c

Please sign in to comment.