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

Re: [Xen-devel][Pv-ops][PATCH 2/4 v2] Netback: Introduce a new struct type page_ext.



On Thu, Apr 29, 2010 at 10:28:36PM +0800, Xu, Dongxiao wrote:
> Netback: Introduce a new struct type page_ext.
> 
> struct page_ext is used to store the group and idx information by
> which a specified page could be identified.
> 
> Signed-off-by: Dongxiao Xu <dongxiao.xu@xxxxxxxxx>

.. snip.. 


-static inline int netif_page_index(struct page *pg)
-{
-       unsigned long idx = (unsigned long)pg->mapping - 1;
-
-       if (!PageForeign(pg))
-               return -1;

You are taking the check to see if the page is foreign. Is that OK?
-
-       if ((idx >= MAX_PENDING_REQS) || (netbk->mmap_pages[idx] != pg))
-               return -1;
-
-       return idx;
+       pg->mapping = (struct address_space *)page_extinfo;;
 }
 
 /*
@@ -1411,9 +1399,10 @@ static void netif_idx_release(u16 pending_idx)
 
 static void netif_page_release(struct page *page, unsigned int order)
 {
-       int idx = netif_page_index(page);

This did this nice little check to see if the page had the PageForeign
bit set. Is it OK to remove that check?

-       BUG_ON(order);
-       BUG_ON(idx < 0);
+       int idx = ((struct page_ext *)(page->mapping))->idx;
+       BUG_ON(order ||
+              idx < 0 || idx >= MAX_PENDING_REQS ||
+              netbk->mmap_pages[idx] != page);
        netif_idx_release(idx);
 }
 
@@ -1565,7 +1554,9 @@ static int __init netback_init(void)
        for (i = 0; i < MAX_PENDING_REQS; i++) {
                page = netbk->mmap_pages[i];
                SetPageForeign(page, netif_page_release);
-               netif_set_page_index(page, i);
+               netbk->page_extinfo[i].group = 0;
+               netbk->page_extinfo[i].idx = i;
+               netif_set_page_index(page, &netbk->page_extinfo[i]);
                INIT_LIST_HEAD(&netbk->pending_inuse[i].list);
        }
 
-- 
1.6.0

> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel


_______________________________________________
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®.