include/block/dirty-bitmap.h | 7 +- include/qemu/hbitmap.h | 31 ++++-- block/backup.c | 5 +- block/dirty-bitmap.c | 68 ++------------ block/mirror.c | 17 ++-- nbd/server.c | 2 +- tests/test-hbitmap.c | 177 +++++++++++++++++++++++++++++------ util/hbitmap.c | 76 ++++++++++++--- 8 files changed, 262 insertions(+), 121 deletions(-)
Hi all.
1. bdrv_dirty_iter_next_area don't use hbitmap_next_zero and uses
inefficient loop instead. Let's improve it.
2. bdrv_dirty_iter_next_area don't handle unaligned offset and
max_offset correctly. I'm not sure that it is a real bug. But if it is,
we need these series in 3.0.
Details are in 05 commit message.
Note: "[PATCH] nbd/server: fix bitmap export" should be applied first:
Based-on: <20180914165116.23182-1-vsementsov@virtuozzo.com>
v4:
Rework: switch interface to start,count / offset,bytes style.
Fix wrong handling of the case when requested region end exceeds
overall bitmap end.
Some other changes.
06-08: add John's r-b.
v3:
01: - change interface to start/end, and -1 as special end-marker instead of 0
- "not found" for invalid regions instead of assert
02: rebase on 01 changes
03: - fix mistake in hbitmap_iter_init arguments (mistake in
hbitmap_next_zero arguments is fixed automatically due to 01 changes)
04: new
v2:
01: - improve comment
- s/bytes/count/
- fix forgotten function call in test
- introduce orig_size field here for HBitmap,
make checking in hbitmap_next_zero more effective and safe
02: new
03: - orig_size already introduced in 01
- fix hbitmap_next_dirty_area to not return value less than
offset on unaligned requests
Vladimir Sementsov-Ogievskiy (8):
dirty-bitmap: improve bdrv_dirty_bitmap_next_zero
tests: add tests for hbitmap_next_zero with specified end parameter
dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area
tests: add tests for hbitmap_next_dirty_area
block/mirror: fix and improve do_sync_target_write
Revert "block/dirty-bitmap: Add bdrv_dirty_iter_next_area"
Revert "test-hbitmap: Add non-advancing iter_next tests"
Revert "hbitmap: Add @advance param to hbitmap_iter_next()"
include/block/dirty-bitmap.h | 7 +-
include/qemu/hbitmap.h | 31 ++++--
block/backup.c | 5 +-
block/dirty-bitmap.c | 68 ++------------
block/mirror.c | 17 ++--
nbd/server.c | 2 +-
tests/test-hbitmap.c | 177 +++++++++++++++++++++++++++++------
util/hbitmap.c | 76 ++++++++++++---
8 files changed, 262 insertions(+), 121 deletions(-)
--
2.18.0
ping 17.09.2018 17:57, Vladimir Sementsov-Ogievskiy wrote: > Hi all. > > 1. bdrv_dirty_iter_next_area don't use hbitmap_next_zero and uses > inefficient loop instead. Let's improve it. > > 2. bdrv_dirty_iter_next_area don't handle unaligned offset and > max_offset correctly. I'm not sure that it is a real bug. But if it is, > we need these series in 3.0. > > Details are in 05 commit message. > > Note: "[PATCH] nbd/server: fix bitmap export" should be applied first: > Based-on: <20180914165116.23182-1-vsementsov@virtuozzo.com> > > v4: > > Rework: switch interface to start,count / offset,bytes style. > Fix wrong handling of the case when requested region end exceeds > overall bitmap end. > Some other changes. > > 06-08: add John's r-b. > > v3: > 01: - change interface to start/end, and -1 as special end-marker instead of 0 > - "not found" for invalid regions instead of assert > 02: rebase on 01 changes > 03: - fix mistake in hbitmap_iter_init arguments (mistake in > hbitmap_next_zero arguments is fixed automatically due to 01 changes) > 04: new > > > v2: > > 01: - improve comment > - s/bytes/count/ > - fix forgotten function call in test > - introduce orig_size field here for HBitmap, > make checking in hbitmap_next_zero more effective and safe > 02: new > 03: - orig_size already introduced in 01 > - fix hbitmap_next_dirty_area to not return value less than > offset on unaligned requests > > Vladimir Sementsov-Ogievskiy (8): > dirty-bitmap: improve bdrv_dirty_bitmap_next_zero > tests: add tests for hbitmap_next_zero with specified end parameter > dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area > tests: add tests for hbitmap_next_dirty_area > block/mirror: fix and improve do_sync_target_write > Revert "block/dirty-bitmap: Add bdrv_dirty_iter_next_area" > Revert "test-hbitmap: Add non-advancing iter_next tests" > Revert "hbitmap: Add @advance param to hbitmap_iter_next()" > > include/block/dirty-bitmap.h | 7 +- > include/qemu/hbitmap.h | 31 ++++-- > block/backup.c | 5 +- > block/dirty-bitmap.c | 68 ++------------ > block/mirror.c | 17 ++-- > nbd/server.c | 2 +- > tests/test-hbitmap.c | 177 +++++++++++++++++++++++++++++------ > util/hbitmap.c | 76 ++++++++++++--- > 8 files changed, 262 insertions(+), 121 deletions(-) > -- Best regards, Vladimir
ping. No dependencies, apply to master. 17.09.2018 17:57, Vladimir Sementsov-Ogievskiy wrote: > Hi all. > > 1. bdrv_dirty_iter_next_area don't use hbitmap_next_zero and uses > inefficient loop instead. Let's improve it. > > 2. bdrv_dirty_iter_next_area don't handle unaligned offset and > max_offset correctly. I'm not sure that it is a real bug. But if it is, > we need these series in 3.0. > > Details are in 05 commit message. > > Note: "[PATCH] nbd/server: fix bitmap export" should be applied first: > Based-on: <20180914165116.23182-1-vsementsov@virtuozzo.com> > > v4: > > Rework: switch interface to start,count / offset,bytes style. > Fix wrong handling of the case when requested region end exceeds > overall bitmap end. > Some other changes. > > 06-08: add John's r-b. > > v3: > 01: - change interface to start/end, and -1 as special end-marker instead of 0 > - "not found" for invalid regions instead of assert > 02: rebase on 01 changes > 03: - fix mistake in hbitmap_iter_init arguments (mistake in > hbitmap_next_zero arguments is fixed automatically due to 01 changes) > 04: new > > > v2: > > 01: - improve comment > - s/bytes/count/ > - fix forgotten function call in test > - introduce orig_size field here for HBitmap, > make checking in hbitmap_next_zero more effective and safe > 02: new > 03: - orig_size already introduced in 01 > - fix hbitmap_next_dirty_area to not return value less than > offset on unaligned requests > > Vladimir Sementsov-Ogievskiy (8): > dirty-bitmap: improve bdrv_dirty_bitmap_next_zero > tests: add tests for hbitmap_next_zero with specified end parameter > dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area > tests: add tests for hbitmap_next_dirty_area > block/mirror: fix and improve do_sync_target_write > Revert "block/dirty-bitmap: Add bdrv_dirty_iter_next_area" > Revert "test-hbitmap: Add non-advancing iter_next tests" > Revert "hbitmap: Add @advance param to hbitmap_iter_next()" > > include/block/dirty-bitmap.h | 7 +- > include/qemu/hbitmap.h | 31 ++++-- > block/backup.c | 5 +- > block/dirty-bitmap.c | 68 ++------------ > block/mirror.c | 17 ++-- > nbd/server.c | 2 +- > tests/test-hbitmap.c | 177 +++++++++++++++++++++++++++++------ > util/hbitmap.c | 76 ++++++++++++--- > 8 files changed, 262 insertions(+), 121 deletions(-) > -- Best regards, Vladimir
On 12/12/18 4:27 AM, Vladimir Sementsov-Ogievskiy wrote: > ping. No dependencies, apply to master. > Sure thing. Staged to jsnow/bitmaps. --js > 17.09.2018 17:57, Vladimir Sementsov-Ogievskiy wrote: >> Hi all. >> >> 1. bdrv_dirty_iter_next_area don't use hbitmap_next_zero and uses >> inefficient loop instead. Let's improve it. >> >> 2. bdrv_dirty_iter_next_area don't handle unaligned offset and >> max_offset correctly. I'm not sure that it is a real bug. But if it is, >> we need these series in 3.0. >> >> Details are in 05 commit message. >> >> Note: "[PATCH] nbd/server: fix bitmap export" should be applied first: >> Based-on: <20180914165116.23182-1-vsementsov@virtuozzo.com> >> >> v4: >> >> Rework: switch interface to start,count / offset,bytes style. >> Fix wrong handling of the case when requested region end exceeds >> overall bitmap end. >> Some other changes. >> >> 06-08: add John's r-b. >> >> v3: >> 01: - change interface to start/end, and -1 as special end-marker instead of 0 >> - "not found" for invalid regions instead of assert >> 02: rebase on 01 changes >> 03: - fix mistake in hbitmap_iter_init arguments (mistake in >> hbitmap_next_zero arguments is fixed automatically due to 01 changes) >> 04: new >> >> >> v2: >> >> 01: - improve comment >> - s/bytes/count/ >> - fix forgotten function call in test >> - introduce orig_size field here for HBitmap, >> make checking in hbitmap_next_zero more effective and safe >> 02: new >> 03: - orig_size already introduced in 01 >> - fix hbitmap_next_dirty_area to not return value less than >> offset on unaligned requests >> >> Vladimir Sementsov-Ogievskiy (8): >> dirty-bitmap: improve bdrv_dirty_bitmap_next_zero >> tests: add tests for hbitmap_next_zero with specified end parameter >> dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area >> tests: add tests for hbitmap_next_dirty_area >> block/mirror: fix and improve do_sync_target_write >> Revert "block/dirty-bitmap: Add bdrv_dirty_iter_next_area" >> Revert "test-hbitmap: Add non-advancing iter_next tests" >> Revert "hbitmap: Add @advance param to hbitmap_iter_next()" >> >> include/block/dirty-bitmap.h | 7 +- >> include/qemu/hbitmap.h | 31 ++++-- >> block/backup.c | 5 +- >> block/dirty-bitmap.c | 68 ++------------ >> block/mirror.c | 17 ++-- >> nbd/server.c | 2 +- >> tests/test-hbitmap.c | 177 +++++++++++++++++++++++++++++------ >> util/hbitmap.c | 76 ++++++++++++--- >> 8 files changed, 262 insertions(+), 121 deletions(-) >> > > -- —js
12.12.2018 23:41, John Snow wrote:
>
>
> On 12/12/18 4:27 AM, Vladimir Sementsov-Ogievskiy wrote:
>> ping. No dependencies, apply to master.
>>
>
> Sure thing.
>
> Staged to jsnow/bitmaps.
Thank you!
Oops, I've missed your email about s/firt_dirty_off/first_dirty_off
I can resend, or you can fix in your branch, as you prefer.
The variable touches two commits in jsnow/bitmaps:
commit f235204c39dd5ce122666d87f18005264eb56e51
Author: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Date: Mon Sep 17 17:57:27 2018 +0300
dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area
and the last one:
commit 7f73174ca1c8a92e4a5139b35f2a2273f59ce29b (jnsnow/bitmaps)
Author: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Date: Mon Sep 17 17:57:32 2018 +0300
Revert "hbitmap: Add @advance param to hbitmap_iter_next()"
>
> --js
>
>> 17.09.2018 17:57, Vladimir Sementsov-Ogievskiy wrote:
>>> Hi all.
>>>
>>> 1. bdrv_dirty_iter_next_area don't use hbitmap_next_zero and uses
>>> inefficient loop instead. Let's improve it.
>>>
>>> 2. bdrv_dirty_iter_next_area don't handle unaligned offset and
>>> max_offset correctly. I'm not sure that it is a real bug. But if it is,
>>> we need these series in 3.0.
>>>
>>> Details are in 05 commit message.
>>>
>>> Note: "[PATCH] nbd/server: fix bitmap export" should be applied first:
>>> Based-on: <20180914165116.23182-1-vsementsov@virtuozzo.com>
>>>
>>> v4:
>>>
>>> Rework: switch interface to start,count / offset,bytes style.
>>> Fix wrong handling of the case when requested region end exceeds
>>> overall bitmap end.
>>> Some other changes.
>>>
>>> 06-08: add John's r-b.
>>>
>>> v3:
>>> 01: - change interface to start/end, and -1 as special end-marker instead of 0
>>> - "not found" for invalid regions instead of assert
>>> 02: rebase on 01 changes
>>> 03: - fix mistake in hbitmap_iter_init arguments (mistake in
>>> hbitmap_next_zero arguments is fixed automatically due to 01 changes)
>>> 04: new
>>>
>>>
>>> v2:
>>>
>>> 01: - improve comment
>>> - s/bytes/count/
>>> - fix forgotten function call in test
>>> - introduce orig_size field here for HBitmap,
>>> make checking in hbitmap_next_zero more effective and safe
>>> 02: new
>>> 03: - orig_size already introduced in 01
>>> - fix hbitmap_next_dirty_area to not return value less than
>>> offset on unaligned requests
>>>
>>> Vladimir Sementsov-Ogievskiy (8):
>>> dirty-bitmap: improve bdrv_dirty_bitmap_next_zero
>>> tests: add tests for hbitmap_next_zero with specified end parameter
>>> dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area
>>> tests: add tests for hbitmap_next_dirty_area
>>> block/mirror: fix and improve do_sync_target_write
>>> Revert "block/dirty-bitmap: Add bdrv_dirty_iter_next_area"
>>> Revert "test-hbitmap: Add non-advancing iter_next tests"
>>> Revert "hbitmap: Add @advance param to hbitmap_iter_next()"
>>>
>>> include/block/dirty-bitmap.h | 7 +-
>>> include/qemu/hbitmap.h | 31 ++++--
>>> block/backup.c | 5 +-
>>> block/dirty-bitmap.c | 68 ++------------
>>> block/mirror.c | 17 ++--
>>> nbd/server.c | 2 +-
>>> tests/test-hbitmap.c | 177 +++++++++++++++++++++++++++++------
>>> util/hbitmap.c | 76 ++++++++++++---
>>> 8 files changed, 262 insertions(+), 121 deletions(-)
>>>
>>
>>
>
--
Best regards,
Vladimir
On 12/13/18 6:07 AM, Vladimir Sementsov-Ogievskiy wrote: > 12.12.2018 23:41, John Snow wrote: >> >> >> On 12/12/18 4:27 AM, Vladimir Sementsov-Ogievskiy wrote: >>> ping. No dependencies, apply to master. >>> >> >> Sure thing. >> >> Staged to jsnow/bitmaps. > > > Thank you! > > Oops, I've missed your email about s/firt_dirty_off/first_dirty_off > > I can resend, or you can fix in your branch, as you prefer. > The variable touches two commits in jsnow/bitmaps: > Whoops, I forgot too. I just remember that I was waiting on a requisite and it got lost so I was in a hurry to stage it for you. I'll just squash any fixes in. I'll try to send the PR when the qemu-img bitmap info patch is ready, alongside my series to drop the x-prefix (and adjust the merge API.) Anything else urgent for the start of the 4.0 window before we all disappear on holiday break? --js > commit f235204c39dd5ce122666d87f18005264eb56e51 > Author: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > Date: Mon Sep 17 17:57:27 2018 +0300 > > dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area > > and the last one: > > commit 7f73174ca1c8a92e4a5139b35f2a2273f59ce29b (jnsnow/bitmaps) > Author: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > Date: Mon Sep 17 17:57:32 2018 +0300 > > Revert "hbitmap: Add @advance param to hbitmap_iter_next()" > > > >
On 12/13/18 9:18 PM, John Snow wrote: > > On 12/13/18 6:07 AM, Vladimir Sementsov-Ogievskiy wrote: >> 12.12.2018 23:41, John Snow wrote: >>> >>> On 12/12/18 4:27 AM, Vladimir Sementsov-Ogievskiy wrote: >>>> ping. No dependencies, apply to master. >>>> >>> Sure thing. >>> >>> Staged to jsnow/bitmaps. >> >> Thank you! >> >> Oops, I've missed your email about s/firt_dirty_off/first_dirty_off >> >> I can resend, or you can fix in your branch, as you prefer. >> The variable touches two commits in jsnow/bitmaps: >> > Whoops, I forgot too. I just remember that I was waiting on a requisite > and it got lost so I was in a hurry to stage it for you. I'll just > squash any fixes in. > > I'll try to send the PR when the qemu-img bitmap info patch is ready, > alongside my series to drop the x-prefix (and adjust the merge API.) > > Anything else urgent for the start of the 4.0 window before we all > disappear on holiday break? > > --js JFYI: Holidays in Russia are AFTER New Year, not before :) We will be on vacations from 01 till 08. Den
© 2016 - 2025 Red Hat, Inc.