24.01.2018 13:16, Paolo Bonzini wrote:
On 22/01/2018 13:14, Vladimir Sementsov-Ogievskiy wrote:
so, accessing the bitmap needs mutex lock?

Then what do you mean under accessing the bitmap? Any touch of
BdrvDirtyBitmap fields? Then "reading the list" will require bitmap
mutex too.
Or accessing the bitmap is accessing any field except
BdrvDirtyBitmap.list? Then in (2), what do you mean? For example
query-block will go through
the list, but it touches other fields too, so it should lock mutex.
The bitmap mutex is internal to block/dirty-bitmap.c.

yes and query-block actually calls bdrv_query_dirty_bitmaps, which locks mutex..


and one more question:

What about qmp transactions? Should we lock mutex during the whole
transaction?
Transactions hold the BQL, but you don't need to lock the bitmap mutex.

I don't understand. But "Accessing a bitmap only requires dirty_bitmap_mutex".. So, if we have several operations on one bitmap, each of them will lock/unlock mutex by itself? Then we'll have unlocked "holes" in our transaction. Or this doesn't matter?


Paolo


--
Best regards,
Vladimir


Reply via email to