Print this page
NEX-5736 implement autoreplace matching based on FRU slot number
NEX-6200 hot spares are not reactivated after reinserting into enclosure
NEX-9403 need to update FRU for spare and l2cache devices
NEX-9404 remove lofi autoreplace support from syseventd
NEX-9409 hotsparing doesn't work for vdevs without FRU
NEX-9424 zfs`vdev_online() needs better notification about state changes
Portions contributed by: Alek Pinchuk <alek@nexenta.com>
Portions contributed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
NEX-9228 libzfs`add_config() leaks config nvl when reading spare/l2cache devices
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
1778 Assertion failed: rn->rn_nozpool == B_FALSE, file ../common/libzfs_import.c, line 1077, function zpool_open_func
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george@delphix.com>
Reviewed by: Richard Elling <richard.elling@richardelling.com>
Approved by: Gordon Ross <gordon.ross@nexenta.com>
NEX-2997 Memory leaks in libzfs import implementation
Reviewed by: Dan Fields <dan.fields@nexenta.com>
NEX-1557 Parallel mount during HA Failover sometimes doesn't share the dataset, causes shares to go offline

@@ -410,12 +410,11 @@
  * we assemble the toplevel vdevs into a full config for the pool.  We make a
  * pass to fix up any incorrect paths, and then add it to the main list to
  * return to the user.
  */
 static nvlist_t *
-get_configs(libzfs_handle_t *hdl, pool_list_t *pl, boolean_t active_ok,
-    nvlist_t *policy)
+get_configs(libzfs_handle_t *hdl, pool_list_t *pl, boolean_t active_ok)
 {
         pool_entry_t *pe;
         vdev_entry_t *ve;
         config_entry_t *ce;
         nvlist_t *ret = NULL, *config = NULL, *tmp = NULL, *nvtop, *nvroot;

@@ -745,16 +744,10 @@
                         nvlist_free(config);
                         config = NULL;
                         continue;
                 }
 
-                if (policy != NULL) {
-                        if (nvlist_add_nvlist(config, ZPOOL_REWIND_POLICY,
-                            policy) != 0)
-                                goto nomem;
-                }
-
                 if ((nvl = refresh_config(hdl, config)) == NULL) {
                         nvlist_free(config);
                         config = NULL;
                         continue;
                 }

@@ -862,11 +855,11 @@
 
         if (fstat64(fd, &statbuf) == -1)
                 return (-1);
         size = P2ALIGN_TYPED(statbuf.st_size, sizeof (vdev_label_t), uint64_t);
 
-        if ((label = malloc(sizeof (vdev_label_t))) == NULL)
+        if ((label = calloc(sizeof (vdev_label_t), 1)) == NULL)
                 return (-1);
 
         for (l = 0; l < VDEV_LABELS; l++) {
                 if (pread64(fd, label, sizeof (vdev_label_t),
                     label_offset(size, l)) != sizeof (vdev_label_t))

@@ -1256,11 +1249,11 @@
 
                 if (config_failed)
                         goto error;
         }
 
-        ret = get_configs(hdl, &pools, iarg->can_be_active, iarg->policy);
+        ret = get_configs(hdl, &pools, iarg->can_be_active);
 
 error:
         for (pe = pools.pools; pe != NULL; pe = penext) {
                 penext = pe->pe_next;
                 for (ve = pe->pe_vdevs; ve != NULL; ve = venext) {

@@ -1386,18 +1379,10 @@
                 }
 
                 if (active)
                         continue;
 
-                if (nvlist_add_string(src, ZPOOL_CONFIG_CACHEFILE,
-                    cachefile) != 0) {
-                        (void) no_memory(hdl);
-                        nvlist_free(raw);
-                        nvlist_free(pools);
-                        return (NULL);
-                }
-
                 if ((dst = refresh_config(hdl, src)) == NULL) {
                         nvlist_free(raw);
                         nvlist_free(pools);
                         return (NULL);
                 }