qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] sheepdog's "CoQueue overlapping_queue;"
@ 2016-04-04 13:04 Paolo Bonzini
  2016-04-05  3:47 ` Hitoshi Mitake
  0 siblings, 1 reply; 2+ messages in thread
From: Paolo Bonzini @ 2016-04-04 13:04 UTC (permalink / raw)
  To: qemu-devel, qemu block, Hitoshi Mitake

I am curious about why overlapping_queue is required for sheepdog.
Overlapping requests have unspecified outcome so the CoQueue is not
necessary as long as the server doesn't crash or return an error.

Hitoshi, could you clarify this point for me?

Thanks,

Paolo

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Qemu-devel] sheepdog's "CoQueue overlapping_queue;"
  2016-04-04 13:04 [Qemu-devel] sheepdog's "CoQueue overlapping_queue;" Paolo Bonzini
@ 2016-04-05  3:47 ` Hitoshi Mitake
  0 siblings, 0 replies; 2+ messages in thread
From: Hitoshi Mitake @ 2016-04-05  3:47 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel, qemu block

[-- Attachment #1: Type: text/plain, Size: 1570 bytes --]

On Mon, Apr 4, 2016 at 10:04 PM, Paolo Bonzini <pbonzini@redhat.com> wrote:

> I am curious about why overlapping_queue is required for sheepdog.
> Overlapping requests have unspecified outcome so the CoQueue is not
> necessary as long as the server doesn't crash or return an error.
>
> Hitoshi, could you clarify this point for me?
>

The CoQueue is required because the sheepdog server can return an error in
a case of overlapping requests. For handling copy on write and discard, the
sheepdog server interprets requests that incur metadata (inode) update. It
is required for garbage collecting unused objects efficiently. When
reference of the metadata is updated (x -> y in a case of COW, x -> 0 in a
case of discard), the server reclaims the old x object. If two or more
requests try to update the reference of x, only first one request will be
able to cause reclamation of x successfully. Second (or later) one's
reclamation will fail because the x is already reclaimed by the first one.

This client side serialization is required because of the design of
sheepdog. sheepdog doesn't have a dedicated metadata servers that can
provide transactional update of metadata (e.g. HDFS has this kind of
metadata server). So the clients need to serialize updates for avoiding
inconsistent metadata update.

(Technically, sheepdog does transactional update of metadata in a case of
virtual disk creation. It is based on virtual synchrony so the update can
be transactional even without centralized metadata management component)

Thanks,
Hitoshi


> Thanks,
>
> Paolo
>
>

[-- Attachment #2: Type: text/html, Size: 2154 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-04-05  3:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-04 13:04 [Qemu-devel] sheepdog's "CoQueue overlapping_queue;" Paolo Bonzini
2016-04-05  3:47 ` Hitoshi Mitake

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).