Print this page
NEX-5366 Race between unique_insert() and unique_remove() causes ZFS fsid change
Reviewed by: Saso Kiselkov <saso.kiselkov@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Dan Vatca <dan.vatca@gmail.com>
6160 /usr/lib/fs/zfs/bootinstall should use bootadm
Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com>
Reviewed by: Adam Števko <adam.stevko@gmail.com>
Reviewed by: Josef Sipek <jeffpc@josefsipek.net>
Approved by: Richard Lowe <richlowe@richlowe.net>
4185 add new cryptographic checksums to ZFS: SHA-512, Skein, Edon-R (NULL is not an int)
6171 dsl_prop_unregister() slows down dataset eviction.
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Approved by: Dan McDonald <danmcd@omniti.com>
5610 zfs clone from different source and target pools produces coredump
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Dan McDonald <danmcd@omniti.com>
re #12585 rb4049 ZFS++ work port - refactoring to improve separation of open/closed code, bug fixes, performance improvements - open code

@@ -125,15 +125,10 @@
 
 extern inline dsl_dir_phys_t *dsl_dir_phys(dsl_dir_t *dd);
 
 static uint64_t dsl_dir_space_towrite(dsl_dir_t *dd);
 
-typedef struct ddulrt_arg {
-        dsl_dir_t       *ddulrta_dd;
-        uint64_t        ddlrta_txg;
-} ddulrt_arg_t;
-
 static void
 dsl_dir_evict_async(void *dbu)
 {
         dsl_dir_t *dd = dbu;
         dsl_pool_t *dp = dd->dd_pool;

@@ -732,39 +727,10 @@
 
         dsl_dataset_rele(ds, FTAG);
         return (enforce);
 }
 
-static void
-dsl_dir_update_last_remap_txg_sync(void *varg, dmu_tx_t *tx)
-{
-        ddulrt_arg_t *arg = varg;
-        uint64_t last_remap_txg;
-        dsl_dir_t *dd = arg->ddulrta_dd;
-        objset_t *mos = dd->dd_pool->dp_meta_objset;
-
-        dsl_dir_zapify(dd, tx);
-        if (zap_lookup(mos, dd->dd_object, DD_FIELD_LAST_REMAP_TXG,
-            sizeof (last_remap_txg), 1, &last_remap_txg) != 0 ||
-            last_remap_txg < arg->ddlrta_txg) {
-                VERIFY0(zap_update(mos, dd->dd_object, DD_FIELD_LAST_REMAP_TXG,
-                    sizeof (arg->ddlrta_txg), 1, &arg->ddlrta_txg, tx));
-        }
-}
-
-int
-dsl_dir_update_last_remap_txg(dsl_dir_t *dd, uint64_t txg)
-{
-        ddulrt_arg_t arg;
-        arg.ddulrta_dd = dd;
-        arg.ddlrta_txg = txg;
-
-        return (dsl_sync_task(spa_name(dd->dd_pool->dp_spa),
-            NULL, dsl_dir_update_last_remap_txg_sync, &arg,
-            1, ZFS_SPACE_CHECK_RESERVED));
-}
-
 /*
  * Check if adding additional child filesystem(s) would exceed any filesystem
  * limits or adding additional snapshot(s) would exceed any snapshot limits.
  * The prop argument indicates which limit to check.
  *

@@ -1052,22 +1018,10 @@
         } else {
                 return (ENOENT);
         }
 }
 
-int
-dsl_dir_get_remaptxg(dsl_dir_t *dd, uint64_t *count)
-{
-        if (dsl_dir_is_zapified(dd)) {
-                objset_t *os = dd->dd_pool->dp_meta_objset;
-                return (zap_lookup(os, dd->dd_object, DD_FIELD_LAST_REMAP_TXG,
-                    sizeof (*count), 1, count));
-        } else {
-                return (ENOENT);
-        }
-}
-
 void
 dsl_dir_stats(dsl_dir_t *dd, nvlist_t *nv)
 {
         mutex_enter(&dd->dd_lock);
         dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_QUOTA,

@@ -1095,14 +1049,10 @@
         }
         if (dsl_dir_get_snapshot_count(dd, &count) == 0) {
                 dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_SNAPSHOT_COUNT,
                     count);
         }
-        if (dsl_dir_get_remaptxg(dd, &count) == 0) {
-                dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_REMAPTXG,
-                    count);
-        }
 
         if (dsl_dir_is_clone(dd)) {
                 char buf[ZFS_MAX_DATASET_NAME_LEN];
                 dsl_dir_get_origin(dd, buf);
                 dsl_prop_nvlist_add_string(nv, ZFS_PROP_ORIGIN, buf);