Print this page
4347 ZPL can use dmu_tx_assign(TXG_WAIT)
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Adam Leventhal <ahl@delphix.com>

@@ -935,26 +935,20 @@
         if (zfs_acl_ids_overquota(zfsvfs, &acl_ids)) {
                 zfs_acl_ids_free(&acl_ids);
                 return (SET_ERROR(EDQUOT));
         }
 
-top:
         tx = dmu_tx_create(zfsvfs->z_os);
         dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes +
             ZFS_SA_BASE_ATTR_SIZE);
         dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE);
         dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, FALSE, NULL);
         fuid_dirtied = zfsvfs->z_fuid_dirty;
         if (fuid_dirtied)
                 zfs_fuid_txhold(zfsvfs, tx);
-        error = dmu_tx_assign(tx, TXG_NOWAIT);
+        error = dmu_tx_assign(tx, TXG_WAIT);
         if (error) {
-                if (error == ERESTART) {
-                        dmu_tx_wait(tx);
-                        dmu_tx_abort(tx);
-                        goto top;
-                }
                 zfs_acl_ids_free(&acl_ids);
                 dmu_tx_abort(tx);
                 return (error);
         }
         zfs_mknode(zp, vap, tx, cr, IS_XATTR, &xzp, &acl_ids);