mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros
authorJiyu Yang <jiyu.yang@amlogic.com>
Tue, 7 Mar 2017 10:42:37 +0000 (18:42 +0800)
committerSimon Zheng <simon.zheng@amlogic.com>
Wed, 8 Mar 2017 05:40:38 +0000 (21:40 -0800)
PD#138714 kernel 4.9 bringup
PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
ago with promise that one day it will be possible to implement page
cache with bigger chunks than PAGE_SIZE.

This promise never materialized.  And unlikely will.

We have many places where PAGE_CACHE_SIZE assumed to be equal to
PAGE_SIZE.  And it's constant source of confusion on whether
PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
especially on the border between fs and mm.

Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
breakage to be doable.

Let's stop pretending that pages in page cache are special.  They are
not.

The changes are pretty straight-forward:

 - <foo> << (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> <foo>;

 - <foo> >> (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> <foo>;

 - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -> PAGE_{SIZE,SHIFT,MASK,ALIGN};

 - page_cache_get() -> get_page();

 - page_cache_release() -> put_page();

This patch contains automated changes generated with coccinelle using
script below.  For some reason, coccinelle doesn't patch header files.
I've called spatch for them manually.

The only adjustment after coccinelle is revert of changes to
PAGE_CAHCE_ALIGN definition: we are going to drop it later.

There are few places in the code where coccinelle didn't reach.  I'll
fix them manually in a separate patch.  Comments and documentation also
will be addressed with the separate patch.

virtual patch

@@
expression E;
@@
- E << (PAGE_CACHE_SHIFT - PAGE_SHIFT)
+ E

@@
expression E;
@@
- E >> (PAGE_CACHE_SHIFT - PAGE_SHIFT)
+ E

@@
@@
- PAGE_CACHE_SHIFT
+ PAGE_SHIFT

@@
@@
- PAGE_CACHE_SIZE
+ PAGE_SIZE

@@
@@
- PAGE_CACHE_MASK
+ PAGE_MASK

@@
expression E;
@@
- PAGE_CACHE_ALIGN(E)
+ PAGE_ALIGN(E)

@@
expression E;
@@
- page_cache_get(E)
+ get_page(E)

@@
expression E;
@@
- page_cache_release(E)
+ put_page(E)

Change-Id: I139b5a4aab2622a3813233b1c224c02f0df9a621

mali/linux/mali_memory_swap_alloc.c
utgard/r6p1/linux/mali_memory_swap_alloc.c
utgard/r6p2/linux/mali_memory_swap_alloc.c

index 47933283680cb63a8a48b7a059293cb3817c0975..132bad4cd6ed5bfadc08fb635c6ebe570702f3ac 100644 (file)
@@ -52,7 +52,11 @@ extern struct mali_mem_os_allocator mali_mem_os_allocator;
 #define MALI_SWAP_LOW_MEM_DEFAULT_VALUE (60*1024*1024)
 #define MALI_SWAP_INVALIDATE_MALI_ADDRESS (0)               /* Used to mark the given memory cookie is invalidate. */
 #define MALI_SWAP_GLOBAL_SWAP_FILE_SIZE (0xFFFFFFFF)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+#define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_SHIFT)
+#else
 #define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_CACHE_SHIFT)
+#endif
 #define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX_RESERVE (1 << 15) /* Reserved for CoW nonlinear swap backend memory, the space size is 128MB. */
 
 unsigned int mali_mem_swap_out_threshold_value = MALI_SWAP_LOW_MEM_DEFAULT_VALUE;
@@ -183,7 +187,11 @@ static void mali_mem_swap_out_page_node(mali_page_node *page_node)
        dma_unmap_page(&mali_platform_device->dev, page_node->swap_it->dma_addr,
                       _MALI_OSK_MALI_PAGE_SIZE, DMA_TO_DEVICE);
        set_page_dirty(page_node->swap_it->page);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+       put_page(page_node->swap_it->page);
+#else
        page_cache_release(page_node->swap_it->page);
+#endif
 }
 
 void mali_mem_swap_unlock_single_mem_backend(mali_mem_backend *mem_bkend)
index 47933283680cb63a8a48b7a059293cb3817c0975..132bad4cd6ed5bfadc08fb635c6ebe570702f3ac 100644 (file)
@@ -52,7 +52,11 @@ extern struct mali_mem_os_allocator mali_mem_os_allocator;
 #define MALI_SWAP_LOW_MEM_DEFAULT_VALUE (60*1024*1024)
 #define MALI_SWAP_INVALIDATE_MALI_ADDRESS (0)               /* Used to mark the given memory cookie is invalidate. */
 #define MALI_SWAP_GLOBAL_SWAP_FILE_SIZE (0xFFFFFFFF)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+#define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_SHIFT)
+#else
 #define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_CACHE_SHIFT)
+#endif
 #define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX_RESERVE (1 << 15) /* Reserved for CoW nonlinear swap backend memory, the space size is 128MB. */
 
 unsigned int mali_mem_swap_out_threshold_value = MALI_SWAP_LOW_MEM_DEFAULT_VALUE;
@@ -183,7 +187,11 @@ static void mali_mem_swap_out_page_node(mali_page_node *page_node)
        dma_unmap_page(&mali_platform_device->dev, page_node->swap_it->dma_addr,
                       _MALI_OSK_MALI_PAGE_SIZE, DMA_TO_DEVICE);
        set_page_dirty(page_node->swap_it->page);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+       put_page(page_node->swap_it->page);
+#else
        page_cache_release(page_node->swap_it->page);
+#endif
 }
 
 void mali_mem_swap_unlock_single_mem_backend(mali_mem_backend *mem_bkend)
index 47933283680cb63a8a48b7a059293cb3817c0975..132bad4cd6ed5bfadc08fb635c6ebe570702f3ac 100644 (file)
@@ -52,7 +52,11 @@ extern struct mali_mem_os_allocator mali_mem_os_allocator;
 #define MALI_SWAP_LOW_MEM_DEFAULT_VALUE (60*1024*1024)
 #define MALI_SWAP_INVALIDATE_MALI_ADDRESS (0)               /* Used to mark the given memory cookie is invalidate. */
 #define MALI_SWAP_GLOBAL_SWAP_FILE_SIZE (0xFFFFFFFF)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+#define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_SHIFT)
+#else
 #define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_CACHE_SHIFT)
+#endif
 #define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX_RESERVE (1 << 15) /* Reserved for CoW nonlinear swap backend memory, the space size is 128MB. */
 
 unsigned int mali_mem_swap_out_threshold_value = MALI_SWAP_LOW_MEM_DEFAULT_VALUE;
@@ -183,7 +187,11 @@ static void mali_mem_swap_out_page_node(mali_page_node *page_node)
        dma_unmap_page(&mali_platform_device->dev, page_node->swap_it->dma_addr,
                       _MALI_OSK_MALI_PAGE_SIZE, DMA_TO_DEVICE);
        set_page_dirty(page_node->swap_it->page);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+       put_page(page_node->swap_it->page);
+#else
        page_cache_release(page_node->swap_it->page);
+#endif
 }
 
 void mali_mem_swap_unlock_single_mem_backend(mali_mem_backend *mem_bkend)