aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c
index 1af200d83b1d..847fe19fb0d1 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c
@@ -360,16 +360,13 @@ trim_map_write_start(zio_t *zio)
return (B_FALSE);
}
- ts = avl_find(&tm->tm_queued_frees, &tsearch, NULL);
- if (ts != NULL) {
- /*
- * Loop until all overlapping segments are removed.
- */
- do {
- trim_map_segment_remove(tm, ts, start, end);
- ts = avl_find(&tm->tm_queued_frees, &tsearch, NULL);
- } while (ts != NULL);
+ /*
+ * Loop until all overlapping segments are removed.
+ */
+ while ((ts = avl_find(&tm->tm_queued_frees, &tsearch, NULL)) != NULL) {
+ trim_map_segment_remove(tm, ts, start, end);
}
+
avl_add(&tm->tm_inflight_writes, zio);
mutex_exit(&tm->tm_lock);