[Devel] [PATCH RHEL7 COMMIT] ploop kaio: successfull alloc should adjust alloc_head
Konstantin Khorenko
khorenko at virtuozzo.com
Tue Nov 6 11:24:50 MSK 2018
The commit is pushed to "branch-rh7-3.10.0-862.14.4.vz7.72.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-862.14.4.vz7.72.20
------>
commit 109f7fa5d2099ac94c705a42cf2cec677a458201
Author: Vasily Averin <vvs at virtuozzo.com>
Date: Tue Nov 6 11:24:48 2018 +0300
ploop kaio: successfull alloc should adjust alloc_head
Patch fixes data corruptiopn after online resize of empty ploop image located
on vstorage.
Online ploop grow for on vstorage does not update ploop_io->alloc_head
therefore following write requests incorrectly recognizes location of first
data block, and can write data into metadata section of image.
https://pmc.acronis.com/browse/VSTOR-15471
Signed-off-by: Vasily Averin <vvs at virtuozzo.com>
Reviewed-by: Denis V. Lunev <den at openvz.org>
---
drivers/block/ploop/io_kaio.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/block/ploop/io_kaio.c b/drivers/block/ploop/io_kaio.c
index 8a1fbe6f7b6e..e97e8e1a334d 100644
--- a/drivers/block/ploop/io_kaio.c
+++ b/drivers/block/ploop/io_kaio.c
@@ -858,7 +858,12 @@ kaio_sync_write(struct ploop_io * io, struct page * page, unsigned int len,
static int kaio_alloc_sync(struct ploop_io * io, loff_t pos, loff_t len)
{
- return __kaio_truncate(io, io->files.file, pos + len);
+ int err = __kaio_truncate(io, io->files.file, pos + len);
+
+ if (!err)
+ io->alloc_head = (pos + len) >> (io->plo->cluster_log + 9);
+
+ return err;
}
static int kaio_open(struct ploop_io * io)
More information about the Devel
mailing list