Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-22 Thread Stefan Hajnoczi
On Tue, May 21, 2013 at 06:46:39PM +0200, Paolo Bonzini wrote: > Il 21/05/2013 18:26, Dietmar Maurer ha scritto: > >> Hmm, right. But do we need the bitmap at all? We can just use > >> > bdrv_is_allocated like bdrv_co_do_readv does. > > Does that works with a nbd driver? > > Ah, right. That's t

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-21 Thread Paolo Bonzini
Il 21/05/2013 18:26, Dietmar Maurer ha scritto: >> Hmm, right. But do we need the bitmap at all? We can just use >> > bdrv_is_allocated like bdrv_co_do_readv does. > Does that works with a nbd driver? Ah, right. That's the answer. > Or does that add another RPC call (slow down)? It doesn't wo

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-21 Thread Dietmar Maurer
> Hmm, right. But do we need the bitmap at all? We can just use > bdrv_is_allocated like bdrv_co_do_readv does. Does that works with a nbd driver? Or does that add another RPC call (slow down)?

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-21 Thread Dietmar Maurer
> Copy-on-read modifies the topmost image even without changing the content, > just like copy-before-write modifies the backup image. Ah, got it. But this only works if you use a BS as target. This will not work with my old backup driver patches (I am still not convinced about using a BS as backu

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-21 Thread Paolo Bonzini
Il 21/05/2013 17:54, Dietmar Maurer ha scritto: Hmm, right. But do we need the bitmap at all? We can just use > bdrv_is_allocated like bdrv_co_do_readv does. >>> If a write occur, we read and backup that cluster immediately (out of >>> order). So I am quite sure we need the bitmap. >> >>

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-21 Thread Dietmar Maurer
> >> Hmm, right. But do we need the bitmap at all? We can just use > >> > bdrv_is_allocated like bdrv_co_do_readv does. > > If a write occur, we read and backup that cluster immediately (out of > > order). So I am quite sure we need the bitmap. > > This is the same as how copy-on-read happens du

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-21 Thread Paolo Bonzini
Il 21/05/2013 17:25, Dietmar Maurer ha scritto: >> Hmm, right. But do we need the bitmap at all? We can just use >> > bdrv_is_allocated like bdrv_co_do_readv does. > If a write occur, we read and backup that cluster immediately (out of order). > So > I am quite sure we need the bitmap. This is

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-21 Thread Dietmar Maurer
> Hmm, right. But do we need the bitmap at all? We can just use > bdrv_is_allocated like bdrv_co_do_readv does. If a write occur, we read and backup that cluster immediately (out of order). So I am quite sure we need the bitmap.

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-21 Thread Paolo Bonzini
Il 21/05/2013 15:34, Stefan Hajnoczi ha scritto: > /** > * hbitmap_iter_init: > [...] > * position of the iterator is also okay. However, concurrent resetting of > * bits can lead to unexpected behavior if the iterator has not yet reached > * those bits. > */ > void hbitmap_iter_init(HBitma

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-21 Thread Stefan Hajnoczi
On Mon, May 20, 2013 at 01:30:37PM +0200, Paolo Bonzini wrote: > Il 15/05/2013 16:34, Stefan Hajnoczi ha scritto: > > +wait_for_overlapping_requests(job, start, end); > > +cow_request_begin(&cow_request, job, start, end); > > + > > +for (; start < end; start++) { > > +if (hbitma

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-20 Thread Paolo Bonzini
Il 15/05/2013 16:34, Stefan Hajnoczi ha scritto: > +wait_for_overlapping_requests(job, start, end); > +cow_request_begin(&cow_request, job, start, end); > + > +for (; start < end; start++) { > +if (hbitmap_get(job->bitmap, start)) { > +DPRINTF("brdv_co_backup_cow ski

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-16 Thread Stefan Hajnoczi
On Thu, May 16, 2013 at 11:27:38AM +0800, Wenchao Xia wrote: > > +/* See if in-flight requests overlap and wait for them to complete */ > > +static void coroutine_fn wait_for_overlapping_requests(BackupBlockJob *job, > > + int64_t start, > > +

Re: [Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-15 Thread Wenchao Xia
> From: Dietmar Maurer > > backup_start() creates a block job that copies a point-in-time snapshot > of a block device to a target block device. > > We call backup_do_cow() for each write during backup. That function > reads the original data from the block device before it gets > overwritten.

[Qemu-devel] [PATCH v3 2/8] block: add basic backup support to block driver

2013-05-15 Thread Stefan Hajnoczi
From: Dietmar Maurer backup_start() creates a block job that copies a point-in-time snapshot of a block device to a target block device. We call backup_do_cow() for each write during backup. That function reads the original data from the block device before it gets overwritten. The data is then