diff options
author | Kirill A. Shutemov <kirill.shutemov@linux.intel.com> | 2016-04-01 08:29:47 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-04-04 13:41:08 -0400 |
commit | 09cbfeaf1a5a67bfb3201e0c83c810cecb2efa5a (patch) | |
tree | 6cdf210c9c0f981cd22544feeba701892ec19464 /fs/ufs | |
parent | c05c2ec96bb8b7310da1055c7b9d786a3ec6dc0c (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/ufs')
-rw-r--r-- | fs/ufs/balloc.c | 6 | ||||
-rw-r--r-- | fs/ufs/dir.c | 32 | ||||
-rw-r--r-- | fs/ufs/inode.c | 4 | ||||
-rw-r--r-- | fs/ufs/namei.c | 6 | ||||
-rw-r--r-- | fs/ufs/util.c | 4 | ||||
-rw-r--r-- | fs/ufs/util.h | 2 |
6 files changed, 27 insertions, 27 deletions
diff --git a/fs/ufs/balloc.c b/fs/ufs/balloc.c index dc5fae601c24..0447b949c7f5 100644 --- a/fs/ufs/balloc.c +++ b/fs/ufs/balloc.c | |||
@@ -237,7 +237,7 @@ static void ufs_change_blocknr(struct inode *inode, sector_t beg, | |||
237 | sector_t newb, struct page *locked_page) | 237 | sector_t newb, struct page *locked_page) |
238 | { | 238 | { |
239 | const unsigned blks_per_page = | 239 | const unsigned blks_per_page = |
240 | 1 << (PAGE_CACHE_SHIFT - inode->i_blkbits); | 240 | 1 << (PAGE_SHIFT - inode->i_blkbits); |
241 | const unsigned mask = blks_per_page - 1; | 241 | const unsigned mask = blks_per_page - 1; |
242 | struct address_space * const mapping = inode->i_mapping; | 242 | struct address_space * const mapping = inode->i_mapping; |
243 | pgoff_t index, cur_index, last_index; | 243 | pgoff_t index, cur_index, last_index; |
@@ -255,9 +255,9 @@ static void ufs_change_blocknr(struct inode *inode, sector_t beg, | |||
255 | 255 | ||
256 | cur_index = locked_page->index; | 256 | cur_index = locked_page->index; |
257 | end = count + beg; | 257 | end = count + beg; |
258 | last_index = end >> (PAGE_CACHE_SHIFT - inode->i_blkbits); | 258 | last_index = end >> (PAGE_SHIFT - inode->i_blkbits); |
259 | for (i = beg; i < end; i = (i | mask) + 1) { | 259 | for (i = beg; i < end; i = (i | mask) + 1) { |
260 | index = i >> (PAGE_CACHE_SHIFT - inode->i_blkbits); | 260 | index = i >> (PAGE_SHIFT - inode->i_blkbits); |
261 | 261 | ||
262 | if (likely(cur_index != index)) { | 262 | if (likely(cur_index != index)) { |
263 | page = ufs_get_locked_page(mapping, index); | 263 | page = ufs_get_locked_page(mapping, index); |
diff --git a/fs/ufs/dir.c b/fs/ufs/dir.c index 74f2e80288bf..0b1457292734 100644 --- a/fs/ufs/dir.c +++ b/fs/ufs/dir.c | |||
@@ -62,7 +62,7 @@ static int ufs_commit_chunk(struct page *page, loff_t pos, unsigned len) | |||
62 | static inline void ufs_put_page(struct page *page) | 62 | static inline void ufs_put_page(struct page *page) |
63 | { | 63 | { |
64 | kunmap(page); | 64 | kunmap(page); |
65 | page_cache_release(page); | 65 | put_page(page); |
66 | } | 66 | } |
67 | 67 | ||
68 | ino_t ufs_inode_by_name(struct inode *dir, const struct qstr *qstr) | 68 | ino_t ufs_inode_by_name(struct inode *dir, const struct qstr *qstr) |
@@ -111,13 +111,13 @@ static void ufs_check_page(struct page *page) | |||
111 | struct super_block *sb = dir->i_sb; | 111 | struct super_block *sb = dir->i_sb; |
112 | char *kaddr = page_address(page); | 112 | char *kaddr = page_address(page); |
113 | unsigned offs, rec_len; | 113 | unsigned offs, rec_len; |
114 | unsigned limit = PAGE_CACHE_SIZE; | 114 | unsigned limit = PAGE_SIZE; |
115 | const unsigned chunk_mask = UFS_SB(sb)->s_uspi->s_dirblksize - 1; | 115 | const unsigned chunk_mask = UFS_SB(sb)->s_uspi->s_dirblksize - 1; |
116 | struct ufs_dir_entry *p; | 116 | struct ufs_dir_entry *p; |
117 | char *error; | 117 | char *error; |
118 | 118 | ||
119 | if ((dir->i_size >> PAGE_CACHE_SHIFT) == page->index) { | 119 | if ((dir->i_size >> PAGE_SHIFT) == page->index) { |
120 | limit = dir->i_size & ~PAGE_CACHE_MASK; | 120 | limit = dir->i_size & ~PAGE_MASK; |
121 | if (limit & chunk_mask) | 121 | if (limit & chunk_mask) |
122 | goto Ebadsize; | 122 | goto Ebadsize; |
123 | if (!limit) | 123 | if (!limit) |
@@ -170,7 +170,7 @@ Einumber: | |||
170 | bad_entry: | 170 | bad_entry: |
171 | ufs_error (sb, "ufs_check_page", "bad entry in directory #%lu: %s - " | 171 | ufs_error (sb, "ufs_check_page", "bad entry in directory #%lu: %s - " |
172 | "offset=%lu, rec_len=%d, name_len=%d", | 172 | "offset=%lu, rec_len=%d, name_len=%d", |
173 | dir->i_ino, error, (page->index<<PAGE_CACHE_SHIFT)+offs, | 173 | dir->i_ino, error, (page->index<<PAGE_SHIFT)+offs, |
174 | rec_len, ufs_get_de_namlen(sb, p)); | 174 | rec_len, ufs_get_de_namlen(sb, p)); |
175 | goto fail; | 175 | goto fail; |
176 | Eend: | 176 | Eend: |
@@ -178,7 +178,7 @@ Eend: | |||
178 | ufs_error(sb, __func__, | 178 | ufs_error(sb, __func__, |
179 | "entry in directory #%lu spans the page boundary" | 179 | "entry in directory #%lu spans the page boundary" |
180 | "offset=%lu", | 180 | "offset=%lu", |
181 | dir->i_ino, (page->index<<PAGE_CACHE_SHIFT)+offs); | 181 | dir->i_ino, (page->index<<PAGE_SHIFT)+offs); |
182 | fail: | 182 | fail: |
183 | SetPageChecked(page); | 183 | SetPageChecked(page); |
184 | SetPageError(page); | 184 | SetPageError(page); |
@@ -211,9 +211,9 @@ ufs_last_byte(struct inode *inode, unsigned long page_nr) | |||
211 | { | 211 | { |
212 | unsigned last_byte = inode->i_size; | 212 | unsigned last_byte = inode->i_size; |
213 | 213 | ||
214 | last_byte -= page_nr << PAGE_CACHE_SHIFT; | 214 | last_byte -= page_nr << PAGE_SHIFT; |
215 | if (last_byte > PAGE_CACHE_SIZE) | 215 | if (last_byte > PAGE_SIZE) |
216 | last_byte = PAGE_CACHE_SIZE; | 216 | last_byte = PAGE_SIZE; |
217 | return last_byte; | 217 | return last_byte; |
218 | } | 218 | } |
219 | 219 | ||
@@ -341,7 +341,7 @@ int ufs_add_link(struct dentry *dentry, struct inode *inode) | |||
341 | kaddr = page_address(page); | 341 | kaddr = page_address(page); |
342 | dir_end = kaddr + ufs_last_byte(dir, n); | 342 | dir_end = kaddr + ufs_last_byte(dir, n); |
343 | de = (struct ufs_dir_entry *)kaddr; | 343 | de = (struct ufs_dir_entry *)kaddr; |
344 | kaddr += PAGE_CACHE_SIZE - reclen; | 344 | kaddr += PAGE_SIZE - reclen; |
345 | while ((char *)de <= kaddr) { | 345 | while ((char *)de <= kaddr) { |
346 | if ((char *)de == dir_end) { | 346 | if ((char *)de == dir_end) { |
347 | /* We hit i_size */ | 347 | /* We hit i_size */ |
@@ -432,8 +432,8 @@ ufs_readdir(struct file *file, struct dir_context *ctx) | |||
432 | loff_t pos = ctx->pos; | 432 | loff_t pos = ctx->pos; |
433 | struct inode *inode = file_inode(file); | 433 | struct inode *inode = file_inode(file); |
434 | struct super_block *sb = inode->i_sb; | 434 | struct super_block *sb = inode->i_sb; |
435 | unsigned int offset = pos & ~PAGE_CACHE_MASK; | 435 | unsigned int offset = pos & ~PAGE_MASK; |
436 | unsigned long n = pos >> PAGE_CACHE_SHIFT; | 436 | unsigned long n = pos >> PAGE_SHIFT; |
437 | unsigned long npages = dir_pages(inode); | 437 | unsigned long npages = dir_pages(inode); |
438 | unsigned chunk_mask = ~(UFS_SB(sb)->s_uspi->s_dirblksize - 1); | 438 | unsigned chunk_mask = ~(UFS_SB(sb)->s_uspi->s_dirblksize - 1); |
439 | int need_revalidate = file->f_version != inode->i_version; | 439 | int need_revalidate = file->f_version != inode->i_version; |
@@ -454,14 +454,14 @@ ufs_readdir(struct file *file, struct dir_context *ctx) | |||
454 | ufs_error(sb, __func__, | 454 | ufs_error(sb, __func__, |
455 | "bad page in #%lu", | 455 | "bad page in #%lu", |
456 | inode->i_ino); | 456 | inode->i_ino); |
457 | ctx->pos += PAGE_CACHE_SIZE - offset; | 457 | ctx->pos += PAGE_SIZE - offset; |
458 | return -EIO; | 458 | return -EIO; |
459 | } | 459 | } |
460 | kaddr = page_address(page); | 460 | kaddr = page_address(page); |
461 | if (unlikely(need_revalidate)) { | 461 | if (unlikely(need_revalidate)) { |
462 | if (offset) { | 462 | if (offset) { |
463 | offset = ufs_validate_entry(sb, kaddr, offset, chunk_mask); | 463 | offset = ufs_validate_entry(sb, kaddr, offset, chunk_mask); |
464 | ctx->pos = (n<<PAGE_CACHE_SHIFT) + offset; | 464 | ctx->pos = (n<<PAGE_SHIFT) + offset; |
465 | } | 465 | } |
466 | file->f_version = inode->i_version; | 466 | file->f_version = inode->i_version; |
467 | need_revalidate = 0; | 467 | need_revalidate = 0; |
@@ -574,7 +574,7 @@ int ufs_make_empty(struct inode * inode, struct inode *dir) | |||
574 | 574 | ||
575 | kmap(page); | 575 | kmap(page); |
576 | base = (char*)page_address(page); | 576 | base = (char*)page_address(page); |
577 | memset(base, 0, PAGE_CACHE_SIZE); | 577 | memset(base, 0, PAGE_SIZE); |
578 | 578 | ||
579 | de = (struct ufs_dir_entry *) base; | 579 | de = (struct ufs_dir_entry *) base; |
580 | 580 | ||
@@ -594,7 +594,7 @@ int ufs_make_empty(struct inode * inode, struct inode *dir) | |||
594 | 594 | ||
595 | err = ufs_commit_chunk(page, 0, chunk_size); | 595 | err = ufs_commit_chunk(page, 0, chunk_size); |
596 | fail: | 596 | fail: |
597 | page_cache_release(page); | 597 | put_page(page); |
598 | return err; | 598 | return err; |
599 | } | 599 | } |
600 | 600 | ||
diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c index d897e169ab9c..9f49431e798d 100644 --- a/fs/ufs/inode.c +++ b/fs/ufs/inode.c | |||
@@ -1051,13 +1051,13 @@ static int ufs_alloc_lastblock(struct inode *inode, loff_t size) | |||
1051 | lastfrag--; | 1051 | lastfrag--; |
1052 | 1052 | ||
1053 | lastpage = ufs_get_locked_page(mapping, lastfrag >> | 1053 | lastpage = ufs_get_locked_page(mapping, lastfrag >> |
1054 | (PAGE_CACHE_SHIFT - inode->i_blkbits)); | 1054 | (PAGE_SHIFT - inode->i_blkbits)); |
1055 | if (IS_ERR(lastpage)) { | 1055 | if (IS_ERR(lastpage)) { |
1056 | err = -EIO; | 1056 | err = -EIO; |
1057 | goto out; | 1057 | goto out; |
1058 | } | 1058 | } |
1059 | 1059 | ||
1060 | end = lastfrag & ((1 << (PAGE_CACHE_SHIFT - inode->i_blkbits)) - 1); | 1060 | end = lastfrag & ((1 << (PAGE_SHIFT - inode->i_blkbits)) - 1); |
1061 | bh = page_buffers(lastpage); | 1061 | bh = page_buffers(lastpage); |
1062 | for (i = 0; i < end; ++i) | 1062 | for (i = 0; i < end; ++i) |
1063 | bh = bh->b_this_page; | 1063 | bh = bh->b_this_page; |
diff --git a/fs/ufs/namei.c b/fs/ufs/namei.c index acf4a3b61b81..a1559f762805 100644 --- a/fs/ufs/namei.c +++ b/fs/ufs/namei.c | |||
@@ -305,7 +305,7 @@ static int ufs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
305 | ufs_set_link(old_inode, dir_de, dir_page, new_dir, 0); | 305 | ufs_set_link(old_inode, dir_de, dir_page, new_dir, 0); |
306 | else { | 306 | else { |
307 | kunmap(dir_page); | 307 | kunmap(dir_page); |
308 | page_cache_release(dir_page); | 308 | put_page(dir_page); |
309 | } | 309 | } |
310 | inode_dec_link_count(old_dir); | 310 | inode_dec_link_count(old_dir); |
311 | } | 311 | } |
@@ -315,11 +315,11 @@ static int ufs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
315 | out_dir: | 315 | out_dir: |
316 | if (dir_de) { | 316 | if (dir_de) { |
317 | kunmap(dir_page); | 317 | kunmap(dir_page); |
318 | page_cache_release(dir_page); | 318 | put_page(dir_page); |
319 | } | 319 | } |
320 | out_old: | 320 | out_old: |
321 | kunmap(old_page); | 321 | kunmap(old_page); |
322 | page_cache_release(old_page); | 322 | put_page(old_page); |
323 | out: | 323 | out: |
324 | return err; | 324 | return err; |
325 | } | 325 | } |
diff --git a/fs/ufs/util.c b/fs/ufs/util.c index b6c2f94e041e..a409e3e7827a 100644 --- a/fs/ufs/util.c +++ b/fs/ufs/util.c | |||
@@ -261,14 +261,14 @@ struct page *ufs_get_locked_page(struct address_space *mapping, | |||
261 | if (unlikely(page->mapping == NULL)) { | 261 | if (unlikely(page->mapping == NULL)) { |
262 | /* Truncate got there first */ | 262 | /* Truncate got there first */ |
263 | unlock_page(page); | 263 | unlock_page(page); |
264 | page_cache_release(page); | 264 | put_page(page); |
265 | page = NULL; | 265 | page = NULL; |
266 | goto out; | 266 | goto out; |
267 | } | 267 | } |
268 | 268 | ||
269 | if (!PageUptodate(page) || PageError(page)) { | 269 | if (!PageUptodate(page) || PageError(page)) { |
270 | unlock_page(page); | 270 | unlock_page(page); |
271 | page_cache_release(page); | 271 | put_page(page); |
272 | 272 | ||
273 | printk(KERN_ERR "ufs_change_blocknr: " | 273 | printk(KERN_ERR "ufs_change_blocknr: " |
274 | "can not read page: ino %lu, index: %lu\n", | 274 | "can not read page: ino %lu, index: %lu\n", |
diff --git a/fs/ufs/util.h b/fs/ufs/util.h index 954175928240..b7fbf53dbc81 100644 --- a/fs/ufs/util.h +++ b/fs/ufs/util.h | |||
@@ -283,7 +283,7 @@ extern struct page *ufs_get_locked_page(struct address_space *mapping, | |||
283 | static inline void ufs_put_locked_page(struct page *page) | 283 | static inline void ufs_put_locked_page(struct page *page) |
284 | { | 284 | { |
285 | unlock_page(page); | 285 | unlock_page(page); |
286 | page_cache_release(page); | 286 | put_page(page); |
287 | } | 287 | } |
288 | 288 | ||
289 | 289 | ||