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

Re: [Xen-devel] [PATCH V2 1/2] xen/granttable: Support sub-page grants



> -----Original Message-----
> From: ANNIE LI [mailto:annie.li@xxxxxxxxxx]
> Sent: 08 December 2011 10:02
> To: Paul Durrant
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> konrad.wilk@xxxxxxxxxx; jeremy@xxxxxxxx; Ian Campbell;
> kurt.hackel@xxxxxxxxxx
> Subject: Re: [PATCH V2 1/2] xen/granttable: Support sub-page grants
> 
> 
> >> +
> >> +int gnttab_grant_foreign_access_subpage(domid_t domid, unsigned
> >> long frame,
> >> +                                  int flags, unsigned page_off,
> >> +                                  unsigned length)
> >> +{
> >> +  int ref;
> >> +
> >> +  if (flags&  (GTF_accept_transfer | GTF_reading |
> >> +               GTF_writing | GTF_transitive))
> >> +          return -EPERM;
> >> +
> >> +  if (gnttab_interface->update_subpage_entry == NULL)
> >> +          return -ENOSYS;
> >> +
> >> +  ref = get_free_entries(1);
> >> +  if (unlikely(ref<  0))
> >> +          return -ENOSPC;
> >> +
> >> +  gnttab_interface->update_subpage_entry(ref, domid, frame,
> >> flags,
> >> +                                         page_off, length);
> >> +
> >> +  return ref;
> >> +}
> >> +EXPORT_SYMBOL_GPL(gnttab_grant_foreign_access_subpage);
> > There's quite a lot of duplicated code here. What about something
> along the lines of:
> >
> > #define get_free_entry()    get_free_entries(1)
> >
> > int gnttab_grant_foreign_access_subpage(domid_t domid, unsigned
> long frame,
> >                                     int flags, unsigned page_off,
> >                                     unsigned length)
> > {
> >     int ref;
> >
> >     ref = get_free_entry();
> >     if (unlikely(ref<  0))
> >             return -ENOSPC;
> >
> >     rc = gnttab_grant_foreign_access_subpage_ref(ref, domid,
> frame, flags, page_off, length);
> >     if (rc<  0)
> >             put_free_entry(ref);
> >
> >     return (rc<  0) rc : ref;
> > }
> > EXPORT_SYMBOL_GPL(gnttab_grant_foreign_access_subpage);
> >
> > I think this is more akin to the format for existing non-ref
> variants.
> >
> I hesitated between those two implement ways before sending them
> out.
> Those two ways all have shortcoming, one has duplicated code, but is
> simple when condition does not meet. The other way you pointed out
> added more put_free_entry process when _ref function fails.
> 

I say let's be optimistic :-) Yes, there's more overhead in the failure case, 
but that's not what we should be optimising for.

  Paul

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