summaryrefslogtreecommitdiffstats
path: root/fs/ufs
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/ufs
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/ufs')
-rw-r--r--fs/ufs/balloc.c6
-rw-r--r--fs/ufs/dir.c32
-rw-r--r--fs/ufs/inode.c4
-rw-r--r--fs/ufs/namei.c6
-rw-r--r--fs/ufs/util.c4
-rw-r--r--fs/ufs/util.h2
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)
62static inline void ufs_put_page(struct page *page) 62static 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
68ino_t ufs_inode_by_name(struct inode *dir, const struct qstr *qstr) 68ino_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:
170bad_entry: 170bad_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;
176Eend: 176Eend:
@@ -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);
182fail: 182fail:
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);
596fail: 596fail:
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,
315out_dir: 315out_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 }
320out_old: 320out_old:
321 kunmap(old_page); 321 kunmap(old_page);
322 page_cache_release(old_page); 322 put_page(old_page);
323out: 323out:
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,
283static inline void ufs_put_locked_page(struct page *page) 283static 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