[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.