jfs: microoptimize get_zeroed_page / virt_to_page
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 2 Jan 2016 19:22:04 +0000 (14:22 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 4 Jan 2016 15:29:28 +0000 (10:29 -0500)
get_zeroed_page does alloc_page and returns page_address of the result;
subsequent virt_to_page will recover the page, but since the caller
needs both page and its page_address() anyway, why bother going through
that wrapper at all?

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/jfs/jfs_logmgr.c

index a69bdf2a108500ceddee89b80bfd7e34dcddf8e8..a270cb7ff4e030c8031f2c48114e6771c4d796b1 100644 (file)
@@ -1835,17 +1835,16 @@ static int lbmLogInit(struct jfs_log * log)
        for (i = 0; i < LOGPAGES;) {
                char *buffer;
                uint offset;
-               struct page *page;
+               struct page *page = alloc_page(GFP_KERNEL | __GFP_ZERO);
 
-               buffer = (char *) get_zeroed_page(GFP_KERNEL);
-               if (buffer == NULL)
+               if (!page)
                        goto error;
-               page = virt_to_page(buffer);
+               buffer = page_address(page);
                for (offset = 0; offset < PAGE_SIZE; offset += LOGPSIZE) {
                        lbuf = kmalloc(sizeof(struct lbuf), GFP_KERNEL);
                        if (lbuf == NULL) {
                                if (offset == 0)
-                                       free_page((unsigned long) buffer);
+                                       __free_page(page);
                                goto error;
                        }
                        if (offset) /* we already have one reference */