|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] ADs over dom0 iSCSI = high page_count()
Keir Fraser wrote:
Also in netback.c in net_tx_action_dealloc() after make_tx_response() I see:
/* Ready for next use. */
gnttab_reset_grant_page()
Sure this resets the page_mapcount() back to 0, but it also
sets the page_count() to 1 regardless of the current value.
QUESTION 2: Why does the page_count() have to be set to 1?
A page is only acted on by net_tx_action_dealloc() after it is queued by
netif_page_release(), and that is called from free_pages(), which means
page_count() must be zero at that time (i.e., page is unused).
gnttab_reset_grant_page() is simply setting up the page for its next use.
If the page is *not* actually finished with by the net or blocks layers,
that would be very bad indeed. :-)
gnttab_copy_grant_page() can only return -EBUSY if the
page_mapcount() is set and thus the IO must have gone through
__gnttab_dma_map_page().
So is the page_count() also 0 in netback.c net_tx_action_dealloc()
when the entry has been pending too long and gnttab_copy_grant_page()
(called via copy_pending_req()) returns -EBUSY?
How does the cleanup work when this item is deleted from the
pending_inuse_head due to -EBUSY being returned?
Thank you,
Joshua
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|