[Sheepdog] [PATCH 0/2] use corosync for the cluster communication
MORITA Kazutaka
morita.kazutaka at lab.ntt.co.jp
Sun Nov 15 14:26:30 CET 2009
Chris Webb wrote:
> Hi. I think I'm seeing some data corruption with block device access from
> qemu. I made a sheepdog backed ext3 filesystem inside a qemu with a live CD,
(snip)
> Perhaps only sparsely written vdis are affected?
Thanks you for the bug report!
As you say, this problem occurs when updating sparse images.
Can you try the following patch?
=
>From 9d7e817fd7d614446628083b2049a77f65636d0b Mon Sep 17 00:00:00 2001
From: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
Date: Sun, 15 Nov 2009 21:46:34 +0900
Subject: [PATCH] fix vdi object update
Vdi objects had been corrupted when updating multiple objects
in which unallocated objects were included.
This patch updates vdi objects safely.
Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
---
block/sheepdog.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/block/sheepdog.c b/block/sheepdog.c
index 99b2708..ff19436 100644
--- a/block/sheepdog.c
+++ b/block/sheepdog.c
@@ -1521,8 +1521,10 @@ static void sd_write_done(struct sd_aiocb *acb)
}
if (inode_dirty) {
- for (i = 0; i < nr_chunks(acb); i++)
- s->inode.data_oid[idx + i] = acb->oid[i];
+ for (i = 0; i < nr_chunks(acb); i++) {
+ if (acb->oid[i])
+ s->inode.data_oid[idx + i] = acb->oid[i];
+ }
ret = add_aio_request(s, acb, s->inode.oid, &s->inode,
sizeof(s->inode),
--
1.5.6.5
More information about the sheepdog
mailing list