On 27/06/2017 15:51, Vladimir Sementsov-Ogievskiy wrote: >>> >>> bdrv_create_dirty_bitmap(...) >>> >>> bdrv_dirty_bitmaps_lock(bs) >>> >>> bitmap = bdrv_find_dirty_bitmap(bs, name) >>> >>> <some changes> >>> >>> bdrv_dirty_bitmaps_unlock(bs) >>> >>> - because we can't now trust the pointer returned by >>> bdrv_create_dirty_bitmap, as it releases bitmap lock before return. >> If you have the big QEMU lock (you do if you are in the QEMU monitor), >> you are protected from changes to the list of bitmaps. >> >> Paolo > > but you wrote "Writing to the list requires the BQL _and_ the > dirty_bitmap_mutex". > > should it be BQL only?
bdrv_dirty_bitmaps_lock/unlock is (should be) called by the functions that write to the list. I hope I can post the patch today already. Paolo