On Wed, Jul 07, 2021 at 08:34:50AM +0000, Wang, Wei W wrote: > On Wednesday, July 7, 2021 1:47 AM, Peter Xu wrote: > > On Sat, Jul 03, 2021 at 02:53:27AM +0000, Wang, Wei W wrote: > > > + do { > > > + page_to_clear = start + (i++ << block->clear_bmap_shift); > > > > Why "i" needs to be shifted? > > Just move to the next clear chunk, no? > For example, (1 << 18) pages chunk (i.e. 1GB).
But migration_clear_memory_region_dirty_bitmap() has done the shifting? > > > > > > + migration_clear_memory_region_dirty_bitmap(ram_state, > > > + block, > > > + > > page_to_clear); > > > + } while (i <= npages >> block->clear_bmap_shift); > > > > I agree with David that this should be better put into the mutex section, > > if so > > we'd also touch up comment for bitmap_mutex. Or is it a reason to > > explicitly > > not do so? > > clear_bmap_test_and_clear already uses atomic operation on clear_bmap. > But it's also OK to me if you guys feel safer to move it under the lock. I see, yes seems ok to be out of the lock. Or we use mutex to protect all of them, then make clear_bmap* helpers non-atomic too, just like dirty bmap. Thanks, -- Peter Xu