Thanks Hitoshi,

I just began to evaluate sheepdog for our cloud deployment. I will try to reproduce the problem when I have enough time. If some clue, I will let you know.

A question, does the IO stack components higher than sheepdog, such as IO queue in VM, qemu block driver, etc, provide the necessary serialization?

在 15/1/5 上午8:52, Hitoshi Mitake 写道:
At Sun, 04 Jan 2015 23:27:15 +0800,
guping wrote:

Sheepdog send write request to all replica simultaneously to do the
replication. Which I think could lead to divergent content in replicas.

Imagine a scenario, there are two write requests A & B to update the
same offset in a 2-replicas object. If a qemu client send A and B to a
gateway concurrently, the gateway will send A and B to the same set of
replicas simultaneously. Which could not guarantee the same sequence to
apply A and B, you can apply A then B in a replica and apply B then A in
another replica, then you get two request return successfully but not
the same data in the replicas.

Is this a consistency problem in sheepdog? How can we deal with it?

Hi Gu,

Currently, the above problem is prevented for a case of copy on write
requests (first write to an object). Look at
check_simultaneous_create() of sheepdog driver in qemu. Multiple COW
requests for a single object is serialized for not losing written
information illegally.

But, the driver doesn't do the serialization for ordinal write
request. As you say, there might be a possibility of divergent
objects. Could you produce the problem with artificial workload?

Thanks,
Hitoshi


--
Thanks,
Gu Ping
--
sheepdog mailing list
[email protected]
https://lists.wpkg.org/mailman/listinfo/sheepdog


--
Thanks,
Gu Ping


--
sheepdog mailing list
[email protected]
https://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to