summaryrefslogtreecommitdiffstats
path: root/fs/logfs/segment.c
diff options
context:
space:
mode:
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>2016-04-01 08:29:47 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-04-04 13:41:08 -0400
commit09cbfeaf1a5a67bfb3201e0c83c810cecb2efa5a (patch)
tree6cdf210c9c0f981cd22544feeba701892ec19464 /fs/logfs/segment.c
parentc05c2ec96bb8b7310da1055c7b9d786a3ec6dc0c (diff)
mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros
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) Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Acked-by: Michal Hocko <mhocko@suse.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/logfs/segment.c')
-rw-r--r--fs/logfs/segment.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/fs/logfs/segment.c b/fs/logfs/segment.c
index d270e4b2ab6b..1efd6055f4b0 100644
--- a/fs/logfs/segment.c
+++ b/fs/logfs/segment.c
@@ -90,9 +90,9 @@ int __logfs_buf_write(struct logfs_area *area, u64 ofs, void *buf, size_t len,
90 90
91 if (!PagePrivate(page)) { 91 if (!PagePrivate(page)) {
92 SetPagePrivate(page); 92 SetPagePrivate(page);
93 page_cache_get(page); 93 get_page(page);
94 } 94 }
95 page_cache_release(page); 95 put_page(page);
96 96
97 buf += copylen; 97 buf += copylen;
98 len -= copylen; 98 len -= copylen;
@@ -117,9 +117,9 @@ static void pad_partial_page(struct logfs_area *area)
117 memset(page_address(page) + offset, 0xff, len); 117 memset(page_address(page) + offset, 0xff, len);
118 if (!PagePrivate(page)) { 118 if (!PagePrivate(page)) {
119 SetPagePrivate(page); 119 SetPagePrivate(page);
120 page_cache_get(page); 120 get_page(page);
121 } 121 }
122 page_cache_release(page); 122 put_page(page);
123 } 123 }
124} 124}
125 125
@@ -129,20 +129,20 @@ static void pad_full_pages(struct logfs_area *area)
129 struct logfs_super *super = logfs_super(sb); 129 struct logfs_super *super = logfs_super(sb);
130 u64 ofs = dev_ofs(sb, area->a_segno, area->a_used_bytes); 130 u64 ofs = dev_ofs(sb, area->a_segno, area->a_used_bytes);
131 u32 len = super->s_segsize - area->a_used_bytes; 131 u32 len = super->s_segsize - area->a_used_bytes;
132 pgoff_t index = PAGE_CACHE_ALIGN(ofs) >> PAGE_CACHE_SHIFT; 132 pgoff_t index = PAGE_ALIGN(ofs) >> PAGE_SHIFT;
133 pgoff_t no_indizes = len >> PAGE_CACHE_SHIFT; 133 pgoff_t no_indizes = len >> PAGE_SHIFT;
134 struct page *page; 134 struct page *page;
135 135
136 while (no_indizes) { 136 while (no_indizes) {
137 page = get_mapping_page(sb, index, 0); 137 page = get_mapping_page(sb, index, 0);
138 BUG_ON(!page); /* FIXME: reserve a pool */ 138 BUG_ON(!page); /* FIXME: reserve a pool */
139 SetPageUptodate(page); 139 SetPageUptodate(page);
140 memset(page_address(page), 0xff, PAGE_CACHE_SIZE); 140 memset(page_address(page), 0xff, PAGE_SIZE);
141 if (!PagePrivate(page)) { 141 if (!PagePrivate(page)) {
142 SetPagePrivate(page); 142 SetPagePrivate(page);
143 page_cache_get(page); 143 get_page(page);
144 } 144 }
145 page_cache_release(page); 145 put_page(page);
146 index++; 146 index++;
147 no_indizes--; 147 no_indizes--;
148 } 148 }
@@ -411,7 +411,7 @@ int wbuf_read(struct super_block *sb, u64 ofs, size_t len, void *buf)
411 if (IS_ERR(page)) 411 if (IS_ERR(page))
412 return PTR_ERR(page); 412 return PTR_ERR(page);
413 memcpy(buf, page_address(page) + offset, copylen); 413 memcpy(buf, page_address(page) + offset, copylen);
414 page_cache_release(page); 414 put_page(page);
415 415
416 buf += copylen; 416 buf += copylen;
417 len -= copylen; 417 len -= copylen;
@@ -499,7 +499,7 @@ static void move_btree_to_page(struct inode *inode, struct page *page,
499 499
500 if (!PagePrivate(page)) { 500 if (!PagePrivate(page)) {
501 SetPagePrivate(page); 501 SetPagePrivate(page);
502 page_cache_get(page); 502 get_page(page);
503 set_page_private(page, (unsigned long) block); 503 set_page_private(page, (unsigned long) block);
504 } 504 }
505 block->ops = &indirect_block_ops; 505 block->ops = &indirect_block_ops;
@@ -554,7 +554,7 @@ void move_page_to_btree(struct page *page)
554 554
555 if (PagePrivate(page)) { 555 if (PagePrivate(page)) {
556 ClearPagePrivate(page); 556 ClearPagePrivate(page);
557 page_cache_release(page); 557 put_page(page);
558 set_page_private(page, 0); 558 set_page_private(page, 0);
559 } 559 }
560 block->ops = &btree_block_ops; 560 block->ops = &btree_block_ops;
@@ -723,9 +723,9 @@ void freeseg(struct super_block *sb, u32 segno)
723 continue; 723 continue;
724 if (PagePrivate(page)) { 724 if (PagePrivate(page)) {
725 ClearPagePrivate(page); 725 ClearPagePrivate(page);
726 page_cache_release(page); 726 put_page(page);
727 } 727 }
728 page_cache_release(page); 728 put_page(page);
729 } 729 }
730} 730}
731 731