What is interesting is the following commit modifies range_tree_clear()
so it performs a zero size check and returns before calling
range_tree_find_impl(). This commit is not in 18.10 and 19.04 Ubuntu ZFS
releases.

commit a1d477c
Author: Matthew Ahrens mahr...@delphix.com
Date: Thu Sep 22 09:30:13 2016 -0700

OpenZFS 7614, 9064 - zfs device evacuation/removal

OpenZFS 7614 - zfs device evacuation/removal
OpenZFS 9064 - remove_mirror should wait for device removal to complete

the specific change is:

@@ -560,6 +536,9 @@ range_tree_clear(range_tree_t *rt, uint64_t start, uint64_t 
size)
 {
        range_seg_t *rs;

+       if (size == 0)
+               return;
+
        while ((rs = range_tree_find_impl(rt, start, size)) != NULL) {
                uint64_t free_start = MAX(rs->rs_start, start);
                uint64_t free_end = MIN(rs->rs_end, start + size);

I'm not sure why this check was added, but I guess it handles the cases
were zero sized allocations are allowed and stops these from doing any
unnecessary clearing and avoids the assertion. But the semantics change
is not clear in the commit message.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1861235

Title:
  zfs recv PANIC at range_tree.c:304:range_tree_find_impl()

To manage notifications about this bug go to:
https://bugs.launchpad.net/linux/+bug/1861235/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to