Fix synchronicity for ZVOLs.
[zfs.git] / module / zfs / dmu_tx.c
index bd5c71a..fa64b3a 100644 (file)
@@ -216,6 +216,7 @@ dmu_tx_count_write(dmu_tx_hold_t *txh, uint64_t off, uint64_t len)
        uint64_t start, end, i;
        int min_bs, max_bs, min_ibs, max_ibs, epbs, bits;
        int err = 0;
+       int l;
 
        if (len == 0)
                return;
@@ -303,7 +304,7 @@ dmu_tx_count_write(dmu_tx_hold_t *txh, uint64_t off, uint64_t len)
                 * we need to account for overwrites/unref.
                 */
                if (start <= dn->dn_maxblkid) {
-                       for (int l = 0; l < DN_MAX_LEVELS; l++)
+                       for (l = 0; l < DN_MAX_LEVELS; l++)
                                history[l] = -1ULL;
                }
                while (start <= dn->dn_maxblkid) {
@@ -1124,7 +1125,7 @@ dmu_tx_commit(dmu_tx_t *tx)
 
        ASSERT(tx->tx_txg != 0);
 
-       while (txh = list_head(&tx->tx_holds)) {
+       while ((txh = list_head(&tx->tx_holds))) {
                dnode_t *dn = txh->txh_dnode;
 
                list_remove(&tx->tx_holds, txh);
@@ -1172,7 +1173,7 @@ dmu_tx_abort(dmu_tx_t *tx)
 
        ASSERT(tx->tx_txg == 0);
 
-       while (txh = list_head(&tx->tx_holds)) {
+       while ((txh = list_head(&tx->tx_holds))) {
                dnode_t *dn = txh->txh_dnode;
 
                list_remove(&tx->tx_holds, txh);
@@ -1226,7 +1227,7 @@ dmu_tx_do_callbacks(list_t *cb_list, int error)
 {
        dmu_tx_callback_t *dcb;
 
-       while (dcb = list_head(cb_list)) {
+       while ((dcb = list_head(cb_list))) {
                list_remove(cb_list, dcb);
                dcb->dcb_func(dcb->dcb_data, error);
                kmem_free(dcb, sizeof (dmu_tx_callback_t));
@@ -1380,3 +1381,21 @@ dmu_tx_hold_sa(dmu_tx_t *tx, sa_handle_t *hdl, boolean_t may_grow)
                DB_DNODE_EXIT(db);
        }
 }
+
+#if defined(_KERNEL) && defined(HAVE_SPL)
+EXPORT_SYMBOL(dmu_tx_create);
+EXPORT_SYMBOL(dmu_tx_hold_write);
+EXPORT_SYMBOL(dmu_tx_hold_free);
+EXPORT_SYMBOL(dmu_tx_hold_zap);
+EXPORT_SYMBOL(dmu_tx_hold_bonus);
+EXPORT_SYMBOL(dmu_tx_abort);
+EXPORT_SYMBOL(dmu_tx_assign);
+EXPORT_SYMBOL(dmu_tx_wait);
+EXPORT_SYMBOL(dmu_tx_commit);
+EXPORT_SYMBOL(dmu_tx_get_txg);
+EXPORT_SYMBOL(dmu_tx_callback_register);
+EXPORT_SYMBOL(dmu_tx_do_callbacks);
+EXPORT_SYMBOL(dmu_tx_hold_spill);
+EXPORT_SYMBOL(dmu_tx_hold_sa_create);
+EXPORT_SYMBOL(dmu_tx_hold_sa);
+#endif