LGTM

Reviewed-by: Andrey Zhadchenko <andrey.zhadche...@virtuozzo.com>

On 9/9/24 19:47, Denis V. Lunev wrote:
This patch drops vfs_flush just once the image has been fallocated.
This is not required as fallocate returns once all internal checks
are done and the file has been properly enlarged.

In general, this follows userspace pattern. We should flush when and
only when the guest sends barrier. It is ready to loose this data
if something will go wrong due to the guest filesystem facilities
like journal.

Signed-off-by: Denis V. Lunev <d...@openvz.org>
CC: Alexey Kuznetsov <kuz...@virtuozzo.com>
CC: Alexander Atanasov <alexander.atana...@virtuozzo.com>
CC: Andrey Zhadchenko <andrey.zhadche...@virtuozzo.com>
---
  drivers/md/dm-ploop-map.c | 17 -----------------
  drivers/md/dm-qcow2-map.c | 17 +----------------
  2 files changed, 1 insertion(+), 33 deletions(-)

diff --git a/drivers/md/dm-ploop-map.c b/drivers/md/dm-ploop-map.c
index 33aac1a69fdf..0809867ebd3a 100644
--- a/drivers/md/dm-ploop-map.c
+++ b/drivers/md/dm-ploop-map.c
@@ -1020,12 +1020,6 @@ static int ploop_truncate_prealloc_safe(struct ploop 
*ploop,
                return ret;
        }
- ret = vfs_fsync(file, 0);
-       if (ret) {
-               PL_ERR("%s->fsync(): %d", func, ret);
-               return ret;
-       }
-
        delta->file_size = new_len;
        delta->file_preallocated_area_start = len;
        return 0;
@@ -1071,17 +1065,6 @@ static int ploop_allocate_cluster(struct ploop *ploop, 
u32 *dst_clu)
                ret = ploop_truncate_prealloc_safe(ploop, top, end, __func__);
                if (ret)
                        return ret;
-       } else if (pos < top->file_preallocated_area_start) {
-               /*
-                * Flush punch_hole()/zero_range() modifications.
-                * TODO: track recentry unused blocks and do that
-                * in background.
-                */
-               ret = vfs_fsync(file, 0);
-               if (ret) {
-                       PL_ERR("fsync: %d", ret);
-                       return ret;
-               }
        }
if (end > top->file_preallocated_area_start)
diff --git a/drivers/md/dm-qcow2-map.c b/drivers/md/dm-qcow2-map.c
index 137fb9a270cd..992a962d8eaf 100644
--- a/drivers/md/dm-qcow2-map.c
+++ b/drivers/md/dm-qcow2-map.c
@@ -2141,13 +2141,7 @@ static loff_t find_unused_cluster(struct qcow2 *qcow2, 
struct qio **qio,
int qcow2_truncate_safe(struct file *file, loff_t new_len)
  {
-       int ret;
-
-       ret = vfs_truncate2(&file->f_path, new_len, file);
-       if (ret)
-               return ret;
-
-       return vfs_fsync(file, 0);
+       return vfs_truncate2(&file->f_path, new_len, file);
  }
static int truncate_prealloc_safe(struct qcow2 *qcow2, loff_t len, const char *func)
@@ -2416,15 +2410,6 @@ static loff_t allocate_cluster(struct qcow2 *qcow2, 
struct qio *qio,
                ret = truncate_prealloc_safe(qcow2, end, __func__);
                if (ret)
                        return ret;
-       } else if (pos < qcow2->file_preallocated_area_start) {
-               /*
-                * Flush punch_hole() modifications.
-                * TODO: track recentry unused blocks
-                * and punch holes in background.
-                */
-               ret = vfs_fsync(file, 0);
-               if (ret)
-                       return ret;
        }
if (end > qcow2->file_preallocated_area_start)
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to