[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