Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

jfs: microoptimize get_zeroed_page / virt_to_page

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>

Al Viro 76e8d7cb 222e4ade

+4 -5
+4 -5
fs/jfs/jfs_logmgr.c
··· 1835 1835 for (i = 0; i < LOGPAGES;) { 1836 1836 char *buffer; 1837 1837 uint offset; 1838 - struct page *page; 1838 + struct page *page = alloc_page(GFP_KERNEL | __GFP_ZERO); 1839 1839 1840 - buffer = (char *) get_zeroed_page(GFP_KERNEL); 1841 - if (buffer == NULL) 1840 + if (!page) 1842 1841 goto error; 1843 - page = virt_to_page(buffer); 1842 + buffer = page_address(page); 1844 1843 for (offset = 0; offset < PAGE_SIZE; offset += LOGPSIZE) { 1845 1844 lbuf = kmalloc(sizeof(struct lbuf), GFP_KERNEL); 1846 1845 if (lbuf == NULL) { 1847 1846 if (offset == 0) 1848 - free_page((unsigned long) buffer); 1847 + __free_page(page); 1849 1848 goto error; 1850 1849 } 1851 1850 if (offset) /* we already have one reference */