]> granicus.if.org Git - zfs/commitdiff
Add omitted set for os->os_next_write_raw
authorTom Caputi <tcaputi@datto.com>
Wed, 21 Feb 2018 20:24:37 +0000 (15:24 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 21 Feb 2018 20:24:37 +0000 (12:24 -0800)
This one line patch adds adds a set to os->os_next_write_raw
that was omitted when the code was updated in 1b66810. Without
it, the code (in some instances) could attempt to write raw
encrypted data as regular unencrypted data without the keys
being loaded, triggering an ASSERT in zio_encrypt().

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tom Caputi <tcaputi@datto.com>
Closes #7196

module/zfs/dmu.c

index cb86800f4bb374e2efcaf160c31e826b6e0ec58d..b7c5bba150e3073b90f83209947d0c694547d5e3 100644 (file)
@@ -847,8 +847,11 @@ dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset,
 
                        while (dr != NULL && dr->dr_txg > tx->tx_txg)
                                dr = dr->dr_next;
-                       if (dr != NULL && dr->dr_txg == tx->tx_txg)
+                       if (dr != NULL && dr->dr_txg == tx->tx_txg) {
                                dr->dt.dl.dr_raw = B_TRUE;
+                               dn->dn_objset->os_next_write_raw
+                                   [tx->tx_txg & TXG_MASK] = B_TRUE;
+                       }
                }
 
                dmu_tx_commit(tx);