Jeff Liu
2013-Nov-13 11:44 UTC
[PATCH] xen: simplify balloon_first_page() with list_first_entry_or_null()
From: Jie Liu <jeff.liu@oracle.com> Simplify the code logic of balloon_first_page() by replacing the combination of list_empty() and list_first_entry() with list_first_entry_or_null(). As a net win, we can change this routine to inline as now it''s one line. Signed-off-by: Jie Liu <jeff.liu@oracle.com> --- drivers/xen/balloon.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c index b232908..0e4ca20 100644 --- a/drivers/xen/balloon.c +++ b/drivers/xen/balloon.c @@ -157,11 +157,10 @@ static struct page *balloon_retrieve(bool prefer_highmem) return page; } -static struct page *balloon_first_page(void) +static inline struct page *balloon_first_page(void) { - if (list_empty(&ballooned_pages)) - return NULL; - return list_entry(ballooned_pages.next, struct page, lru); + return list_first_entry_or_null(&ballooned_pages, + struct page, lru); } static struct page *balloon_next_page(struct page *page) -- 1.7.9.5
David Vrabel
2013-Nov-13 12:09 UTC
Re: [PATCH] xen: simplify balloon_first_page() with list_first_entry_or_null()
On 13/11/13 11:44, Jeff Liu wrote:> From: Jie Liu <jeff.liu@oracle.com> > > Simplify the code logic of balloon_first_page() by replacing > the combination of list_empty() and list_first_entry() with > list_first_entry_or_null(). As a net win, we can change this > routine to inline as now it''s one line. > > Signed-off-by: Jie Liu <jeff.liu@oracle.com> > > --- > drivers/xen/balloon.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c > index b232908..0e4ca20 100644 > --- a/drivers/xen/balloon.c > +++ b/drivers/xen/balloon.c > @@ -157,11 +157,10 @@ static struct page *balloon_retrieve(bool prefer_highmem) > return page; > } > > -static struct page *balloon_first_page(void) > +static inline struct page *balloon_first_page(void) > { > - if (list_empty(&ballooned_pages)) > - return NULL; > - return list_entry(ballooned_pages.next, struct page, lru); > + return list_first_entry_or_null(&ballooned_pages, > + struct page, lru); > }There''s only one user of balloon_first_page(), can you remove balloon_first_page() and just use list_first_entry_or_null()? David
Jeff Liu
2013-Nov-13 12:54 UTC
Re: [PATCH] xen: simplify balloon_first_page() with list_first_entry_or_null()
On 11/13, 2013 20:09 PM, David Vrabel wrote:> On 13/11/13 11:44, Jeff Liu wrote: >> From: Jie Liu <jeff.liu@oracle.com> >> >> Simplify the code logic of balloon_first_page() by replacing >> the combination of list_empty() and list_first_entry() with >> list_first_entry_or_null(). As a net win, we can change this >> routine to inline as now it''s one line. >> >> Signed-off-by: Jie Liu <jeff.liu@oracle.com> >> >> --- >> drivers/xen/balloon.c | 7 +++---- >> 1 file changed, 3 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c >> index b232908..0e4ca20 100644 >> --- a/drivers/xen/balloon.c >> +++ b/drivers/xen/balloon.c >> @@ -157,11 +157,10 @@ static struct page *balloon_retrieve(bool prefer_highmem) >> return page; >> } >> >> -static struct page *balloon_first_page(void) >> +static inline struct page *balloon_first_page(void) >> { >> - if (list_empty(&ballooned_pages)) >> - return NULL; >> - return list_entry(ballooned_pages.next, struct page, lru); >> + return list_first_entry_or_null(&ballooned_pages, >> + struct page, lru); >> } > > There''s only one user of balloon_first_page(), can you remove > balloon_first_page() and just use list_first_entry_or_null()?Sure, will post the revised version a little while. Thanks, -Jeff