HomeFreeBSD

dbuf: Set dr_data when unoverriding after clone

Description

dbuf: Set dr_data when unoverriding after clone

Block cloning normally creates dirty record without dr_data. But if
the block is read after cloning, it is moved into DB_CACHED state and
receives the data buffer. If after that we call dbuf_unoverride()
to convert the dirty record into normal write, we should give it the
data buffer from dbuf and release one.

Reviewed-by: Kay Pedersen <mail@mkwg.de>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #15654
Closes #15656

Details

Provenance
mavAuthored on Dec 12 2023, 8:59 PM
GitHub <noreply@github.com>Committed on Dec 12 2023, 8:59 PM
Parents
rG86063d90319a: dbuf: Handle arcbuf assignment after block cloning
Branches
Unknown
Tags
Unknown