[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.



I will add this check, thanks for your reminder.

Thanks,
Dongxiao

Konrad Rzeszutek Wilk wrote:
> 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);
>       }
> 
> 
>> _______________________________________________
>> 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®.