On 7/8/25 03:48, Konstantin Khorenko wrote:
From: Pavel Tikhomirov <ptikhomi...@virtuozzo.com>

This commit message comment looks missing:

- Preallocation in ploop_allocate_cluster() should not depend on (pos <
prealloc_start), so always try to preallocate.


https://virtuozzo.atlassian.net/browse/VSTOR-108868
Co-developed-by: Andrey Zhadchenko <andrey.zhadche...@virtuozzo.com>
Signed-off-by: Pavel Tikhomirov <ptikhomi...@virtuozzo.com>

Feature: dm-ploop: ploop target driver
---
...

@@ -1280,16 +1283,11 @@ static int ploop_allocate_cluster(struct ploop *ploop, 
u32 *dst_clu, struct file
        pos = CLU_TO_POS(ploop, *dst_clu);
        end = pos + clu_size;
        off = min_t(loff_t, top->file_size, end);
+       ploop_req_prealloc(ploop, end);
+
        spin_unlock_irqrestore(&ploop->bat_lock, flags);
if (pos < prealloc_start) {
-               if (end + clu_size >
-                   top->file_preallocated_area_start - (PREALLOC_SIZE/2)) {
-                       spin_lock_irqsave(&ploop->bat_lock, flags);
-                       ploop_req_prealloc(ploop, PREALLOC_SIZE);
-                       spin_unlock_irqrestore(&ploop->bat_lock, flags);
-               }
-
                /* Clu at @pos may contain dirty data */
                if (!ploop->falloc_new_clu)
                        ret = ploop_punch_hole(file, pos, off - pos);
@@ -1314,7 +1312,11 @@ static int ploop_allocate_cluster(struct ploop *ploop, 
u32 *dst_clu, struct file
        spin_lock_irqsave(&ploop->bat_lock, flags);
        /* size can change from parallel alloc */
        if (end > top->file_size) {
-               ploop_req_prealloc(ploop, PREALLOC_SIZE);
+               /*
+                * Reset preallocation, in case ploop_preallocate_cluster

s/Reset/Retry/

or

s/Reset/Re-apply/

My original "Reset" wording sounds confusing when I re-read it.

+                * dropped it on error path.
+                */
+               ploop_req_prealloc(ploop, end);
                spin_unlock_irqrestore(&ploop->bat_lock, flags);
wait_event_interruptible(ploop->dispatcher_wq_prealloc,

--
Best regards, Pavel Tikhomirov
Senior Software Developer, Virtuozzo.

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to