2016-03-13 19:27:59

by Denys Vlasenko

[permalink] [raw]
Subject: [PATCH] block/xen-blkback: Deinline put_free_pages, save 645 bytes

This function compiles to 170 bytes of machine code. 7 callsites.

This function has a spinlocked code section,
which is significantly more expensive than call/return overhead.

Signed-off-by: Denys Vlasenko <[email protected]>
CC: Konrad Rzeszutek Wilk <[email protected]>
CC: Roger Pau MonnĂ© <[email protected]>
CC: [email protected]
CC: [email protected]
---
drivers/block/xen-blkback/blkback.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c
index 4809c15..86798b4 100644
--- a/drivers/block/xen-blkback/blkback.c
+++ b/drivers/block/xen-blkback/blkback.c
@@ -142,7 +142,7 @@ static inline int get_free_page(struct xen_blkif_ring *ring, struct page **page)
return 0;
}

-static inline void put_free_pages(struct xen_blkif_ring *ring, struct page **page,
+static void put_free_pages(struct xen_blkif_ring *ring, struct page **page,
int num)
{
unsigned long flags;
--
2.5.0


2016-03-13 19:28:07

by Denys Vlasenko

[permalink] [raw]
Subject: [PATCH] block/xen-blkback: Deinline shrink_free_pagepool, save 204 bytes

This function compiles to 201 bytes of machine code. 2 callsites.

This function has a spinlocked code section,
which is significantly more expensive than call/return overhead.

Signed-off-by: Denys Vlasenko <[email protected]>
CC: Konrad Rzeszutek Wilk <[email protected]>
CC: Roger Pau MonnĂ© <[email protected]>
CC: [email protected]
CC: [email protected]
---
drivers/block/xen-blkback/blkback.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c
index 4809c15..5e3394c 100644
--- a/drivers/block/xen-blkback/blkback.c
+++ b/drivers/block/xen-blkback/blkback.c
@@ -155,7 +155,7 @@ static inline void put_free_pages(struct xen_blkif_ring *ring, struct page **pag
spin_unlock_irqrestore(&ring->free_pages_lock, flags);
}

-static inline void shrink_free_pagepool(struct xen_blkif_ring *ring, int num)
+static void shrink_free_pagepool(struct xen_blkif_ring *ring, int num)
{
/* Remove requested pages in batches of NUM_BATCH_FREE_PAGES */
struct page *page[NUM_BATCH_FREE_PAGES];
--
2.5.0