On 10.03.20 12:43, Michal Hocko wrote:
> On Mon 02-03-20 14:49:37, David Hildenbrand wrote:
> [...]
>> +static void virtio_mem_notify_going_offline(struct virtio_mem *vm,
>> +                                        unsigned long mb_id)
>> +{
>> +    const unsigned long nr_pages = PFN_DOWN(vm->subblock_size);
>> +    unsigned long pfn;
>> +    int sb_id, i;
>> +
>> +    for (sb_id = 0; sb_id < vm->nb_sb_per_mb; sb_id++) {
>> +            if (virtio_mem_mb_test_sb_plugged(vm, mb_id, sb_id, 1))
>> +                    continue;
>> +            /*
>> +             * Drop our reference to the pages so the memory can get
>> +             * offlined and add the unplugged pages to the managed
>> +             * page counters (so offlining code can correctly subtract
>> +             * them again).
>> +             */
>> +            pfn = PFN_DOWN(virtio_mem_mb_id_to_phys(mb_id) +
>> +                           sb_id * vm->subblock_size);
>> +            adjust_managed_page_count(pfn_to_page(pfn), nr_pages);
>> +            for (i = 0; i < nr_pages; i++)
>> +                    page_ref_dec(pfn_to_page(pfn + i));
> 
> Is there ever situation this might be a different than 1->0 transition?

Only if some other code would be taking a reference. At least not from
virtio-mem perspective.

-- 
Thanks,

David / dhildenb

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to