diff --git a/block_backend/src/qcow2/refcount.rs b/block_backend/src/qcow2/refcount.rs index 6e403da5d972bdf4a84348a35aa9ce3fe955ec2d..1c7ff10e2b6b40ef19e4b2e3a829f9e7917e2f29 100644 --- a/block_backend/src/qcow2/refcount.rs +++ b/block_backend/src/qcow2/refcount.rs @@ -500,18 +500,8 @@ impl RefCount { /// Add discard task to the list. fn update_discard_list(&mut self, offset: u64, nbytes: u64) -> Result<()> { - let mut discard_task = DiscardTask { offset, nbytes }; - let len = self.discard_list.len(); - let mut discard_list: Vec = Vec::with_capacity(len + 1); - for task in self.discard_list.iter() { - if discard_task.is_overlap(task) { - discard_task.merge_task(task); - } else { - discard_list.push(task.clone()); - } - } - discard_list.push(discard_task); - self.discard_list = discard_list; + let discard_task = DiscardTask { offset, nbytes }; + self.discard_list.push(discard_task); Ok(()) }