]> granicus.if.org Git - zfs/commitdiff
Function name and comment updates
authorPaul Dagnelie <pcd@delphix.com>
Fri, 11 Oct 2019 17:13:21 +0000 (10:13 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 11 Oct 2019 17:13:21 +0000 (10:13 -0700)
Rename certain functions for more consistency when they share common
features. Make comments clearer about what arguments should be passed
to the insert and add functions.

Reviewed by: Sara Hartse <sara.hartse@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Matt Ahrens <matt@delphix.com>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #9441

include/sys/btree.h
module/zfs/btree.c
module/zfs/dsl_scan.c
module/zfs/range_tree.c

index 1673b521750e015c8c48411090f09d434c48d9bb..9fe2534df1a4f806f31990174d30ba6af1558de4 100644 (file)
@@ -131,10 +131,10 @@ void zfs_btree_create(zfs_btree_t *, int (*) (const void *, const void *),
 /*
  * Find a node with a matching value in the tree. Returns the matching node
  * found. If not found, it returns NULL and then if "where" is not NULL it sets
- * "where" for use with zfs_btree_insert() or zfs_btree_nearest().
+ * "where" for use with zfs_btree_add_idx() or zfs_btree_nearest().
  *
  * node   - node that has the value being looked for
- * where  - position for use with zfs_btree_nearest() or zfs_btree_insert(),
+ * where  - position for use with zfs_btree_nearest() or zfs_btree_add_idx(),
  *          may be NULL
  */
 void *zfs_btree_find(zfs_btree_t *, const void *, zfs_btree_index_t *);
@@ -145,17 +145,20 @@ void *zfs_btree_find(zfs_btree_t *, const void *, zfs_btree_index_t *);
  * node   - the node to insert
  * where  - position as returned from zfs_btree_find()
  */
-void zfs_btree_insert(zfs_btree_t *, const void *, const zfs_btree_index_t *);
+void zfs_btree_add_idx(zfs_btree_t *, const void *, const zfs_btree_index_t *);
 
 /*
- * Return the first or last valued node in the tree. Will return NULL
- * if the tree is empty.
+ * Return the first or last valued node in the tree. Will return NULL if the
+ * tree is empty. The index can be NULL if the location of the first or last
+ * element isn't required.
  */
 void *zfs_btree_first(zfs_btree_t *, zfs_btree_index_t *);
 void *zfs_btree_last(zfs_btree_t *, zfs_btree_index_t *);
 
 /*
- * Return the next or previous valued node in the tree.
+ * Return the next or previous valued node in the tree. The second index can
+ * safely be NULL, if the location of the next or previous value isn't
+ * required.
  */
 void *zfs_btree_next(zfs_btree_t *, const zfs_btree_index_t *,
     zfs_btree_index_t *);
@@ -169,7 +172,9 @@ void *zfs_btree_get(zfs_btree_t *, zfs_btree_index_t *);
 
 /*
  * Add a single value to the tree. The value must not compare equal to any
- * other node already in the tree.
+ * other node already in the tree. Note that the value will be copied out, not
+ * inserted directly. It is safe to free or destroy the value once this
+ * function returns.
  */
 void zfs_btree_add(zfs_btree_t *, const void *);
 
@@ -183,7 +188,7 @@ void zfs_btree_remove(zfs_btree_t *, const void *);
 /*
  * Remove the value at the given location from the tree.
  */
-void zfs_btree_remove_from(zfs_btree_t *, zfs_btree_index_t *);
+void zfs_btree_remove_idx(zfs_btree_t *, zfs_btree_index_t *);
 
 /*
  * Return the number of nodes in the tree
index 8f514caabd9db4376c47ce3fd15d3f299f10f21b..f099eb67c7592a29a52aef7245d4d5176149a99a 100644 (file)
@@ -980,7 +980,7 @@ zfs_btree_bulk_finish(zfs_btree_t *tree)
  * Insert value into tree at the location specified by where.
  */
 void
-zfs_btree_insert(zfs_btree_t *tree, const void *value,
+zfs_btree_add_idx(zfs_btree_t *tree, const void *value,
     const zfs_btree_index_t *where)
 {
        zfs_btree_index_t idx = {0};
@@ -1294,7 +1294,7 @@ zfs_btree_add(zfs_btree_t *tree, const void *node)
 {
        zfs_btree_index_t where = {0};
        VERIFY3P(zfs_btree_find(tree, node, &where), ==, NULL);
-       zfs_btree_insert(tree, node, &where);
+       zfs_btree_add_idx(tree, node, &where);
 }
 
 /* Helper function to free a tree node. */
@@ -1542,7 +1542,7 @@ zfs_btree_remove_from_node(zfs_btree_t *tree, zfs_btree_core_t *node,
 
 /* Remove the element at the specific location. */
 void
-zfs_btree_remove_from(zfs_btree_t *tree, zfs_btree_index_t *where)
+zfs_btree_remove_idx(zfs_btree_t *tree, zfs_btree_index_t *where)
 {
        size_t size = tree->bt_elem_size;
        zfs_btree_hdr_t *hdr = where->bti_node;
@@ -1778,7 +1778,7 @@ zfs_btree_remove(zfs_btree_t *tree, const void *value)
 {
        zfs_btree_index_t where = {0};
        VERIFY3P(zfs_btree_find(tree, value, &where), !=, NULL);
-       zfs_btree_remove_from(tree, &where);
+       zfs_btree_remove_idx(tree, &where);
 }
 
 /* Return the number of elements in the tree. */
index 3eacb42f15ab84d884833b04db21664cff56bca7..b848f7ef3033c178e2bca3d9e7137eae075c4523 100644 (file)
@@ -2925,13 +2925,23 @@ scan_io_queue_fetch_ext(dsl_scan_io_queue_t *queue)
                if (zfs_scan_issue_strategy == 1) {
                        return (range_tree_first(rt));
                } else if (zfs_scan_issue_strategy == 2) {
+                       /*
+                        * We need to get the original entry in the by_addr
+                        * tree so we can modify it.
+                        */
                        range_seg_t *size_rs =
                            zfs_btree_first(&queue->q_exts_by_size, NULL);
+                       if (size_rs == NULL)
+                               return (NULL);
                        uint64_t start = rs_get_start(size_rs, rt);
                        uint64_t size = rs_get_end(size_rs, rt) - start;
                        range_seg_t *addr_rs = range_tree_find(rt, start,
                            size);
                        ASSERT3P(addr_rs, !=, NULL);
+                       ASSERT3U(rs_get_start(size_rs, rt), ==,
+                           rs_get_start(addr_rs, rt));
+                       ASSERT3U(rs_get_end(size_rs, rt), ==,
+                           rs_get_end(addr_rs, rt));
                        return (addr_rs);
                }
        }
@@ -2948,12 +2958,21 @@ scan_io_queue_fetch_ext(dsl_scan_io_queue_t *queue)
        if (scn->scn_checkpointing) {
                return (range_tree_first(rt));
        } else if (scn->scn_clearing) {
+               /*
+                * We need to get the original entry in the by_addr
+                * tree so we can modify it.
+                */
                range_seg_t *size_rs = zfs_btree_first(&queue->q_exts_by_size,
                    NULL);
+               if (size_rs == NULL)
+                       return (NULL);
                uint64_t start = rs_get_start(size_rs, rt);
                uint64_t size = rs_get_end(size_rs, rt) - start;
                range_seg_t *addr_rs = range_tree_find(rt, start, size);
                ASSERT3P(addr_rs, !=, NULL);
+               ASSERT3U(rs_get_start(size_rs, rt), ==, rs_get_start(addr_rs,
+                   rt));
+               ASSERT3U(rs_get_end(size_rs, rt), ==, rs_get_end(addr_rs, rt));
                return (addr_rs);
        } else {
                return (NULL);
index 0b369a43820fc4a8179e374e459155ca6065e3b0..1559605c21bab652aecc8720360359378380382a 100644 (file)
@@ -349,7 +349,7 @@ range_tree_add_impl(void *arg, uint64_t start, uint64_t size, uint64_t fill)
                uint64_t before_start = rs_get_start_raw(rs_before, rt);
                uint64_t before_fill = rs_get_fill(rs_before, rt);
                uint64_t after_fill = rs_get_fill(rs_after, rt);
-               zfs_btree_remove_from(&rt->rt_root, &where_before);
+               zfs_btree_remove_idx(&rt->rt_root, &where_before);
 
                /*
                 * We have to re-find the node because our old reference is
@@ -385,7 +385,7 @@ range_tree_add_impl(void *arg, uint64_t start, uint64_t size, uint64_t fill)
                rs_set_start(rs, rt, start);
                rs_set_end(rs, rt, end);
                rs_set_fill(rs, rt, fill);
-               zfs_btree_insert(&rt->rt_root, rs, &where);
+               zfs_btree_add_idx(&rt->rt_root, rs, &where);
        }
 
        if (gap != 0) {
@@ -488,7 +488,7 @@ range_tree_remove_impl(range_tree_t *rt, uint64_t start, uint64_t size,
 
                rs_copy(rs, &rs_tmp, rt);
                if (zfs_btree_next(&rt->rt_root, &where, &where) != NULL)
-                       zfs_btree_insert(&rt->rt_root, &newseg, &where);
+                       zfs_btree_add_idx(&rt->rt_root, &newseg, &where);
                else
                        zfs_btree_add(&rt->rt_root, &newseg);
 
@@ -503,7 +503,7 @@ range_tree_remove_impl(range_tree_t *rt, uint64_t start, uint64_t size,
                rs_set_start(rs, rt, end);
                rs_copy(rs, &rs_tmp, rt);
        } else {
-               zfs_btree_remove_from(&rt->rt_root, &where);
+               zfs_btree_remove_idx(&rt->rt_root, &where);
                rs = NULL;
        }