diff mbox

[for-2.4] block: keep bitmap if incremental backup job is cancelled

Message ID 1435236788-9176-1-git-send-email-stefanha@redhat.com
State New
Headers show

Commit Message

Stefan Hajnoczi June 25, 2015, 12:53 p.m. UTC
Reclaim the dirty bitmap if an incremental backup block job is
cancelled.  The ret variable may be 0 when the job is cancelled so it's
not enough to check ret < 0.

Reviewed-by: John Snow <jsnow@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 block/backup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

John Snow June 25, 2015, 4:30 p.m. UTC | #1
On 06/25/2015 08:53 AM, Stefan Hajnoczi wrote:
> Reclaim the dirty bitmap if an incremental backup block job is
> cancelled.  The ret variable may be 0 when the job is cancelled so it's
> not enough to check ret < 0.
> 
> Reviewed-by: John Snow <jsnow@redhat.com>
> Reviewed-by: Max Reitz <mreitz@redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  block/backup.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/block/backup.c b/block/backup.c
> index 4a1af68..ddf8424 100644
> --- a/block/backup.c
> +++ b/block/backup.c
> @@ -431,7 +431,7 @@ static void coroutine_fn backup_run(void *opaque)
>  
>      if (job->sync_bitmap) {
>          BdrvDirtyBitmap *bm;
> -        if (ret < 0) {
> +        if (ret < 0 || block_job_is_cancelled(&job->common)) {
>              /* Merge the successor back into the parent, delete nothing. */
>              bm = bdrv_reclaim_dirty_bitmap(bs, job->sync_bitmap, NULL);
>              assert(bm);
> 

Didn't Jeff Cody already stage this?
Jeff Cody June 25, 2015, 4:33 p.m. UTC | #2
On Thu, Jun 25, 2015 at 12:30:56PM -0400, John Snow wrote:
> 
> 
> On 06/25/2015 08:53 AM, Stefan Hajnoczi wrote:
> > Reclaim the dirty bitmap if an incremental backup block job is
> > cancelled.  The ret variable may be 0 when the job is cancelled so it's
> > not enough to check ret < 0.
> > 
> > Reviewed-by: John Snow <jsnow@redhat.com>
> > Reviewed-by: Max Reitz <mreitz@redhat.com>
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
> >  block/backup.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/block/backup.c b/block/backup.c
> > index 4a1af68..ddf8424 100644
> > --- a/block/backup.c
> > +++ b/block/backup.c
> > @@ -431,7 +431,7 @@ static void coroutine_fn backup_run(void *opaque)
> >  
> >      if (job->sync_bitmap) {
> >          BdrvDirtyBitmap *bm;
> > -        if (ret < 0) {
> > +        if (ret < 0 || block_job_is_cancelled(&job->common)) {
> >              /* Merge the successor back into the parent, delete nothing. */
> >              bm = bdrv_reclaim_dirty_bitmap(bs, job->sync_bitmap, NULL);
> >              assert(bm);
> > 
> 
> Didn't Jeff Cody already stage this?

Yes
Stefan Hajnoczi June 26, 2015, 9:57 a.m. UTC | #3
On Thu, Jun 25, 2015 at 12:33:25PM -0400, Jeff Cody wrote:
> On Thu, Jun 25, 2015 at 12:30:56PM -0400, John Snow wrote:
> > 
> > 
> > On 06/25/2015 08:53 AM, Stefan Hajnoczi wrote:
> > > Reclaim the dirty bitmap if an incremental backup block job is
> > > cancelled.  The ret variable may be 0 when the job is cancelled so it's
> > > not enough to check ret < 0.
> > > 
> > > Reviewed-by: John Snow <jsnow@redhat.com>
> > > Reviewed-by: Max Reitz <mreitz@redhat.com>
> > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > > ---
> > >  block/backup.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/block/backup.c b/block/backup.c
> > > index 4a1af68..ddf8424 100644
> > > --- a/block/backup.c
> > > +++ b/block/backup.c
> > > @@ -431,7 +431,7 @@ static void coroutine_fn backup_run(void *opaque)
> > >  
> > >      if (job->sync_bitmap) {
> > >          BdrvDirtyBitmap *bm;
> > > -        if (ret < 0) {
> > > +        if (ret < 0 || block_job_is_cancelled(&job->common)) {
> > >              /* Merge the successor back into the parent, delete nothing. */
> > >              bm = bdrv_reclaim_dirty_bitmap(bs, job->sync_bitmap, NULL);
> > >              assert(bm);
> > > 
> > 
> > Didn't Jeff Cody already stage this?
> 
> Yes

Thanks!
Max Reitz June 26, 2015, 1:04 p.m. UTC | #4
On 26.06.2015 11:57, Stefan Hajnoczi wrote:
> On Thu, Jun 25, 2015 at 12:33:25PM -0400, Jeff Cody wrote:
>> On Thu, Jun 25, 2015 at 12:30:56PM -0400, John Snow wrote:
>>>
>>> On 06/25/2015 08:53 AM, Stefan Hajnoczi wrote:
>>>> Reclaim the dirty bitmap if an incremental backup block job is
>>>> cancelled.  The ret variable may be 0 when the job is cancelled so it's
>>>> not enough to check ret < 0.
>>>>
>>>> Reviewed-by: John Snow <jsnow@redhat.com>
>>>> Reviewed-by: Max Reitz <mreitz@redhat.com>
>>>> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>>>> ---
>>>>   block/backup.c | 2 +-
>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/block/backup.c b/block/backup.c
>>>> index 4a1af68..ddf8424 100644
>>>> --- a/block/backup.c
>>>> +++ b/block/backup.c
>>>> @@ -431,7 +431,7 @@ static void coroutine_fn backup_run(void *opaque)
>>>>   
>>>>       if (job->sync_bitmap) {
>>>>           BdrvDirtyBitmap *bm;
>>>> -        if (ret < 0) {
>>>> +        if (ret < 0 || block_job_is_cancelled(&job->common)) {
>>>>               /* Merge the successor back into the parent, delete nothing. */
>>>>               bm = bdrv_reclaim_dirty_bitmap(bs, job->sync_bitmap, NULL);
>>>>               assert(bm);
>>>>
>>> Didn't Jeff Cody already stage this?
>> Yes
> Thanks!

It appears like I successfully confused Stefan, thanks to John not 
wanting to embarrass me in public. :-)
diff mbox

Patch

diff --git a/block/backup.c b/block/backup.c
index 4a1af68..ddf8424 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -431,7 +431,7 @@  static void coroutine_fn backup_run(void *opaque)
 
     if (job->sync_bitmap) {
         BdrvDirtyBitmap *bm;
-        if (ret < 0) {
+        if (ret < 0 || block_job_is_cancelled(&job->common)) {
             /* Merge the successor back into the parent, delete nothing. */
             bm = bdrv_reclaim_dirty_bitmap(bs, job->sync_bitmap, NULL);
             assert(bm);