summaryrefslogtreecommitdiffstats
path: root/module/zfs/dmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'module/zfs/dmu.c')
-rw-r--r--module/zfs/dmu.c119
1 files changed, 3 insertions, 116 deletions
diff --git a/module/zfs/dmu.c b/module/zfs/dmu.c
index 0352393dc..2d2586a8c 100644
--- a/module/zfs/dmu.c
+++ b/module/zfs/dmu.c
@@ -765,7 +765,7 @@ dmu_objset_zfs_unmounting(objset_t *os)
static int
dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset,
- uint64_t length, boolean_t raw)
+ uint64_t length)
{
uint64_t object_size;
int err;
@@ -848,19 +848,6 @@ dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset,
uint64_t, dmu_tx_get_txg(tx));
dnode_free_range(dn, chunk_begin, chunk_len, tx);
- /* if this is a raw free, mark the dirty record as such */
- if (raw) {
- dbuf_dirty_record_t *dr = dn->dn_dbuf->db_last_dirty;
-
- while (dr != NULL && dr->dr_txg > tx->tx_txg)
- dr = dr->dr_next;
- 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);
length -= chunk_len;
@@ -878,7 +865,7 @@ dmu_free_long_range(objset_t *os, uint64_t object,
err = dnode_hold(os, object, FTAG, &dn);
if (err != 0)
return (err);
- err = dmu_free_long_range_impl(os, dn, offset, length, B_FALSE);
+ err = dmu_free_long_range_impl(os, dn, offset, length);
/*
* It is important to zero out the maxblkid when freeing the entire
@@ -893,37 +880,8 @@ dmu_free_long_range(objset_t *os, uint64_t object,
return (err);
}
-/*
- * This function is equivalent to dmu_free_long_range(), but also
- * marks the new dirty record as a raw write.
- */
int
-dmu_free_long_range_raw(objset_t *os, uint64_t object,
- uint64_t offset, uint64_t length)
-{
- dnode_t *dn;
- int err;
-
- err = dnode_hold(os, object, FTAG, &dn);
- if (err != 0)
- return (err);
- err = dmu_free_long_range_impl(os, dn, offset, length, B_TRUE);
-
- /*
- * It is important to zero out the maxblkid when freeing the entire
- * file, so that (a) subsequent calls to dmu_free_long_range_impl()
- * will take the fast path, and (b) dnode_reallocate() can verify
- * that the entire file has been freed.
- */
- if (err == 0 && offset == 0 && length == DMU_OBJECT_END)
- dn->dn_maxblkid = 0;
-
- dnode_rele(dn, FTAG);
- return (err);
-}
-
-static int
-dmu_free_long_object_impl(objset_t *os, uint64_t object, boolean_t raw)
+dmu_free_long_object(objset_t *os, uint64_t object)
{
dmu_tx_t *tx;
int err;
@@ -938,8 +896,6 @@ dmu_free_long_object_impl(objset_t *os, uint64_t object, boolean_t raw)
dmu_tx_mark_netfree(tx);
err = dmu_tx_assign(tx, TXG_WAIT);
if (err == 0) {
- if (raw)
- err = dmu_object_dirty_raw(os, object, tx);
if (err == 0)
err = dmu_object_free(os, object, tx);
@@ -952,19 +908,6 @@ dmu_free_long_object_impl(objset_t *os, uint64_t object, boolean_t raw)
}
int
-dmu_free_long_object(objset_t *os, uint64_t object)
-{
- return (dmu_free_long_object_impl(os, object, B_FALSE));
-}
-
-int
-dmu_free_long_object_raw(objset_t *os, uint64_t object)
-{
- return (dmu_free_long_object_impl(os, object, B_TRUE));
-}
-
-
-int
dmu_free_range(objset_t *os, uint64_t object, uint64_t offset,
uint64_t size, dmu_tx_t *tx)
{
@@ -1666,41 +1609,6 @@ dmu_return_arcbuf(arc_buf_t *buf)
arc_buf_destroy(buf, FTAG);
}
-int
-dmu_convert_mdn_block_to_raw(objset_t *os, uint64_t firstobj,
- boolean_t byteorder, const uint8_t *salt, const uint8_t *iv,
- const uint8_t *mac, dmu_tx_t *tx)
-{
- int ret;
- dmu_buf_t *handle = NULL;
- dmu_buf_impl_t *db = NULL;
- uint64_t offset = firstobj * DNODE_MIN_SIZE;
- uint64_t dsobj = dmu_objset_id(os);
-
- ret = dmu_buf_hold_by_dnode(DMU_META_DNODE(os), offset, FTAG, &handle,
- DMU_READ_PREFETCH | DMU_READ_NO_DECRYPT);
- if (ret != 0)
- return (ret);
-
- dmu_buf_will_change_crypt_params(handle, tx);
-
- db = (dmu_buf_impl_t *)handle;
- ASSERT3P(db->db_buf, !=, NULL);
- ASSERT3U(dsobj, !=, 0);
-
- /*
- * This technically violates the assumption the dmu code makes
- * that dnode blocks are only released in syncing context.
- */
- (void) arc_release(db->db_buf, db);
- arc_convert_to_raw(db->db_buf, dsobj, byteorder, DMU_OT_DNODE,
- salt, iv, mac);
-
- dmu_buf_rele(handle, FTAG);
-
- return (0);
-}
-
void
dmu_copy_from_buf(objset_t *os, uint64_t object, uint64_t offset,
dmu_buf_t *handle, dmu_tx_t *tx)
@@ -2223,25 +2131,6 @@ dmu_object_set_compress(objset_t *os, uint64_t object, uint8_t compress,
}
/*
- * Dirty an object and set the dirty record's raw flag. This is used
- * when writing raw data to an object that will not effect the
- * encryption parameters, specifically during raw receives.
- */
-int
-dmu_object_dirty_raw(objset_t *os, uint64_t object, dmu_tx_t *tx)
-{
- dnode_t *dn;
- int err;
-
- err = dnode_hold(os, object, FTAG, &dn);
- if (err)
- return (err);
- dmu_buf_will_change_crypt_params((dmu_buf_t *)dn->dn_dbuf, tx);
- dnode_rele(dn, FTAG);
- return (err);
-}
-
-/*
* When the "redundant_metadata" property is set to "most", only indirect
* blocks of this level and higher will have an additional ditto block.
*/
@@ -2623,9 +2512,7 @@ EXPORT_SYMBOL(dmu_buf_rele_array);
EXPORT_SYMBOL(dmu_prefetch);
EXPORT_SYMBOL(dmu_free_range);
EXPORT_SYMBOL(dmu_free_long_range);
-EXPORT_SYMBOL(dmu_free_long_range_raw);
EXPORT_SYMBOL(dmu_free_long_object);
-EXPORT_SYMBOL(dmu_free_long_object_raw);
EXPORT_SYMBOL(dmu_read);
EXPORT_SYMBOL(dmu_read_by_dnode);
EXPORT_SYMBOL(dmu_write);