On Wed, Jun 19, 2013 at 12:50:16PM +0200, Kevin Wolf wrote:
> Am 30.05.2013 um 14:34 hat Stefan Hajnoczi geschrieben:
> > +DPRINTF("%s enter %s C%" PRId64 " %" PRId64 " %d\n",
> > +__func__, bdrv_get_device_name(bs), start, sector_num,
> > nb_sectors);
>
> Maybe put the first "%s"
On Wed, Jun 19, 2013 at 01:19:34PM +0200, Paolo Bonzini wrote:
> Il 19/06/2013 12:50, Kevin Wolf ha scritto:
> >> > +
> >> > +DPRINTF("%s enter %s C%" PRId64 " %" PRId64 " %d\n",
> >> > +__func__, bdrv_get_device_name(bs), start, sector_num,
> >> > nb_sectors);
> > Maybe put the fi
On Wed, Jun 19, 2013 at 01:14:17PM +0200, Paolo Bonzini wrote:
> Il 19/06/2013 12:50, Kevin Wolf ha scritto:
> >> > +/* Publish progress */
> >> > +job->sectors_read += n;
> >> > +job->common.offset += n * BDRV_SECTOR_SIZE;
> > This is interesting, because the function is no
Il 19/06/2013 12:50, Kevin Wolf ha scritto:
>> > +
>> > +DPRINTF("%s enter %s C%" PRId64 " %" PRId64 " %d\n",
>> > +__func__, bdrv_get_device_name(bs), start, sector_num,
>> > nb_sectors);
> Maybe put the first "%s" and __func__ directly into the DPRINTF macro?
>
Or just use trac
Il 19/06/2013 12:50, Kevin Wolf ha scritto:
>> > +/* Publish progress */
>> > +job->sectors_read += n;
>> > +job->common.offset += n * BDRV_SECTOR_SIZE;
> This is interesting, because the function is not only called by the
> background job, but also by write notifiers. So 'o
Am 30.05.2013 um 14:34 hat Stefan Hajnoczi geschrieben:
> 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 da
On Tue, Jun 18, 2013 at 04:52:11PM +0200, Kevin Wolf wrote:
> Am 30.05.2013 um 14:34 hat Stefan Hajnoczi geschrieben:
> > 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
Am 30.05.2013 um 14:34 hat Stefan Hajnoczi geschrieben:
> 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 da
On Mon, Jun 17, 2013 at 11:43:24AM +0800, Fam Zheng wrote:
> > +bdrv_iostatus_disable(target);
> > +bdrv_delete(job->target);
>
> drive-mirror has bdrv_close before deleting target, why don't we need
> one here?
Use the source, Luke! :)
void bdrv_delete(BlockDriverState *bs)
{
assert
> +static void coroutine_fn backup_run(void *opaque)
> +{
> +BackupBlockJob *job = opaque;
> +BlockDriverState *bs = job->common.bs;
> +BlockDriverState *target = job->target;
> +BlockdevOnError on_target_error = job->on_target_error;
> +NotifierWithReturn before_write = {
> +
On Thu, Jun 13, 2013 at 02:33:40PM +0800, Fam Zheng wrote:
> On Thu, 06/13 14:07, Wenchao Xia wrote:
> > 于 2013-6-13 14:03, Wenchao Xia 写道:
> > >于 2013-6-7 15:18, Stefan Hajnoczi 写道:
> > >>On Thu, Jun 06, 2013 at 04:56:49PM +0800, Fam Zheng wrote:
> > >>>On Thu, 06/06 10:05, Stefan Hajnoczi wrote:
于 2013-6-13 14:33, Fam Zheng 写道:
On Thu, 06/13 14:07, Wenchao Xia wrote:
于 2013-6-13 14:03, Wenchao Xia 写道:
于 2013-6-7 15:18, Stefan Hajnoczi 写道:
On Thu, Jun 06, 2013 at 04:56:49PM +0800, Fam Zheng wrote:
On Thu, 06/06 10:05, Stefan Hajnoczi wrote:
On Thu, Jun 06, 2013 at 11:56:18AM +0800, F
On Thu, 06/13 14:07, Wenchao Xia wrote:
> 于 2013-6-13 14:03, Wenchao Xia 写道:
> >于 2013-6-7 15:18, Stefan Hajnoczi 写道:
> >>On Thu, Jun 06, 2013 at 04:56:49PM +0800, Fam Zheng wrote:
> >>>On Thu, 06/06 10:05, Stefan Hajnoczi wrote:
> On Thu, Jun 06, 2013 at 11:56:18AM +0800, Fam Zheng wrote:
> >>
于 2013-6-13 14:03, Wenchao Xia 写道:
于 2013-6-7 15:18, Stefan Hajnoczi 写道:
On Thu, Jun 06, 2013 at 04:56:49PM +0800, Fam Zheng wrote:
On Thu, 06/06 10:05, Stefan Hajnoczi wrote:
On Thu, Jun 06, 2013 at 11:56:18AM +0800, Fam Zheng wrote:
On Thu, 05/30 14:34, Stefan Hajnoczi wrote:
+
+static int
于 2013-6-7 15:18, Stefan Hajnoczi 写道:
On Thu, Jun 06, 2013 at 04:56:49PM +0800, Fam Zheng wrote:
On Thu, 06/06 10:05, Stefan Hajnoczi wrote:
On Thu, Jun 06, 2013 at 11:56:18AM +0800, Fam Zheng wrote:
On Thu, 05/30 14:34, Stefan Hajnoczi wrote:
+
+static int coroutine_fn backup_before_write_no
On Thu, Jun 06, 2013 at 04:56:49PM +0800, Fam Zheng wrote:
> On Thu, 06/06 10:05, Stefan Hajnoczi wrote:
> > On Thu, Jun 06, 2013 at 11:56:18AM +0800, Fam Zheng wrote:
> > > On Thu, 05/30 14:34, Stefan Hajnoczi wrote:
> > > > +
> > > > +static int coroutine_fn backup_before_write_notify(
> > > > +
On Thu, 06/06 10:05, Stefan Hajnoczi wrote:
> On Thu, Jun 06, 2013 at 11:56:18AM +0800, Fam Zheng wrote:
> > On Thu, 05/30 14:34, Stefan Hajnoczi wrote:
> > > +
> > > +static int coroutine_fn backup_before_write_notify(
> > > +NotifierWithReturn *notifier,
> > > +void *opaque)
> > >
On Thu, Jun 06, 2013 at 11:56:18AM +0800, Fam Zheng wrote:
> On Thu, 05/30 14:34, Stefan Hajnoczi wrote:
> > +
> > +static int coroutine_fn backup_before_write_notify(
> > +NotifierWithReturn *notifier,
> > +void *opaque)
> > +{
> > +BdrvTrackedRequest *req = opaque;
> > +
> > +
On Thu, 05/30 14:34, Stefan Hajnoczi wrote:
> +
> +static int coroutine_fn backup_before_write_notify(
> +NotifierWithReturn *notifier,
> +void *opaque)
> +{
> +BdrvTrackedRequest *req = opaque;
> +
> +return backup_do_cow(req->bs, req->sector_num, req->nb_sectors, NULL);
>
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
20 matches
Mail list logo