On 4/29/19 4:41 PM, Tamas K Lengyel wrote:
> On Mon, Apr 29, 2019 at 9:01 AM Jan Beulich <jbeul...@suse.com> wrote:
>>
>>>>> On 26.04.19 at 19:21, <ta...@tklengyel.com> wrote:
>>> @@ -999,6 +996,10 @@ static int share_pages(struct domain *sd, gfn_t sgfn, 
>>> shr_handle_t sh,
>>>      mem_sharing_page_unlock(secondpg);
>>>      mem_sharing_page_unlock(firstpg);
>>>
>>> +    BUG_ON(!put_count);
>>> +    while ( put_count-- )
>>> +        put_page_and_type(cpage);
>>> +
>>>      /* Free the client page */
>>>      if(test_and_clear_bit(_PGC_allocated, &cpage->count_info))
>>>          put_page(cpage);
>>
>> If this was to happen before all the put_page_and_type() calls,
>> wouldn't it render unnecessary the extra get_page()/put_page()
>> around this code region?
> 
> It would - I already sent a version of the patch in that form but
> there was unease expressed by George going that route because of the
> complexity of the code and in his view it's the safe bet to keep the
> extra references. I think the overhead of grabbing the extra
> references is negligible enough that I'm not going to argue over it.

Er, that's not what I said. :-)

I gave four possible options, *one* of which was to change the ASSERT()
to a BUG_ON(), and *one* of which was to keep the (probably redundant)
get_page() and put_page() calls.  You appear to have done both. :-)

I haven't re-grokked the code here, but assuming I was correct 2 weeks
ago, if you have the BUG_ON() there, you can get rid of the extra
references.

 -George

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to