summaryrefslogtreecommitdiffstats
path: root/fs/nfs/file.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/nfs/file.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/nfs/file.c')
-rw-r--r--fs/nfs/file.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 89bf093d342a..be01095b97ae 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -320,7 +320,7 @@ static int nfs_want_read_modify_write(struct file *file, struct page *page,
320 loff_t pos, unsigned len) 320 loff_t pos, unsigned len)
321{ 321{
322 unsigned int pglen = nfs_page_length(page); 322 unsigned int pglen = nfs_page_length(page);
323 unsigned int offset = pos & (PAGE_CACHE_SIZE - 1); 323 unsigned int offset = pos & (PAGE_SIZE - 1);
324 unsigned int end = offset + len; 324 unsigned int end = offset + len;
325 325
326 if (pnfs_ld_read_whole_page(file->f_mapping->host)) { 326 if (pnfs_ld_read_whole_page(file->f_mapping->host)) {
@@ -351,7 +351,7 @@ static int nfs_write_begin(struct file *file, struct address_space *mapping,
351 struct page **pagep, void **fsdata) 351 struct page **pagep, void **fsdata)
352{ 352{
353 int ret; 353 int ret;
354 pgoff_t index = pos >> PAGE_CACHE_SHIFT; 354 pgoff_t index = pos >> PAGE_SHIFT;
355 struct page *page; 355 struct page *page;
356 int once_thru = 0; 356 int once_thru = 0;
357 357
@@ -380,12 +380,12 @@ start:
380 ret = nfs_flush_incompatible(file, page); 380 ret = nfs_flush_incompatible(file, page);
381 if (ret) { 381 if (ret) {
382 unlock_page(page); 382 unlock_page(page);
383 page_cache_release(page); 383 put_page(page);
384 } else if (!once_thru && 384 } else if (!once_thru &&
385 nfs_want_read_modify_write(file, page, pos, len)) { 385 nfs_want_read_modify_write(file, page, pos, len)) {
386 once_thru = 1; 386 once_thru = 1;
387 ret = nfs_readpage(file, page); 387 ret = nfs_readpage(file, page);
388 page_cache_release(page); 388 put_page(page);
389 if (!ret) 389 if (!ret)
390 goto start; 390 goto start;
391 } 391 }
@@ -396,7 +396,7 @@ static int nfs_write_end(struct file *file, struct address_space *mapping,
396 loff_t pos, unsigned len, unsigned copied, 396 loff_t pos, unsigned len, unsigned copied,
397 struct page *page, void *fsdata) 397 struct page *page, void *fsdata)
398{ 398{
399 unsigned offset = pos & (PAGE_CACHE_SIZE - 1); 399 unsigned offset = pos & (PAGE_SIZE - 1);
400 struct nfs_open_context *ctx = nfs_file_open_context(file); 400 struct nfs_open_context *ctx = nfs_file_open_context(file);
401 int status; 401 int status;
402 402
@@ -413,20 +413,20 @@ static int nfs_write_end(struct file *file, struct address_space *mapping,
413 413
414 if (pglen == 0) { 414 if (pglen == 0) {
415 zero_user_segments(page, 0, offset, 415 zero_user_segments(page, 0, offset,
416 end, PAGE_CACHE_SIZE); 416 end, PAGE_SIZE);
417 SetPageUptodate(page); 417 SetPageUptodate(page);
418 } else if (end >= pglen) { 418 } else if (end >= pglen) {
419 zero_user_segment(page, end, PAGE_CACHE_SIZE); 419 zero_user_segment(page, end, PAGE_SIZE);
420 if (offset == 0) 420 if (offset == 0)
421 SetPageUptodate(page); 421 SetPageUptodate(page);
422 } else 422 } else
423 zero_user_segment(page, pglen, PAGE_CACHE_SIZE); 423 zero_user_segment(page, pglen, PAGE_SIZE);
424 } 424 }
425 425
426 status = nfs_updatepage(file, page, offset, copied); 426 status = nfs_updatepage(file, page, offset, copied);
427 427
428 unlock_page(page); 428 unlock_page(page);
429 page_cache_release(page); 429 put_page(page);
430 430
431 if (status < 0) 431 if (status < 0)
432 return status; 432 return status;
@@ -454,7 +454,7 @@ static void nfs_invalidate_page(struct page *page, unsigned int offset,
454 dfprintk(PAGECACHE, "NFS: invalidate_page(%p, %u, %u)\n", 454 dfprintk(PAGECACHE, "NFS: invalidate_page(%p, %u, %u)\n",
455 page, offset, length); 455 page, offset, length);
456 456
457 if (offset != 0 || length < PAGE_CACHE_SIZE) 457 if (offset != 0 || length < PAGE_SIZE)
458 return; 458 return;
459 /* Cancel any unstarted writes on this page */ 459 /* Cancel any unstarted writes on this page */
460 nfs_wb_page_cancel(page_file_mapping(page)->host, page); 460 nfs_wb_page_cancel(page_file_mapping(page)->host, page);