diff options
Diffstat (limited to 'mm/truncate.c')
-rw-r--r-- | mm/truncate.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/mm/truncate.c b/mm/truncate.c index 6263affdef88..83a059e8cd1d 100644 --- a/mm/truncate.c +++ b/mm/truncate.c | |||
@@ -266,9 +266,8 @@ void truncate_inode_pages_range(struct address_space *mapping, | |||
266 | pgoff_t index; | 266 | pgoff_t index; |
267 | int i; | 267 | int i; |
268 | 268 | ||
269 | cleancache_invalidate_inode(mapping); | ||
270 | if (mapping->nrpages == 0 && mapping->nrexceptional == 0) | 269 | if (mapping->nrpages == 0 && mapping->nrexceptional == 0) |
271 | return; | 270 | goto out; |
272 | 271 | ||
273 | /* Offsets within partial pages */ | 272 | /* Offsets within partial pages */ |
274 | partial_start = lstart & (PAGE_SIZE - 1); | 273 | partial_start = lstart & (PAGE_SIZE - 1); |
@@ -363,7 +362,7 @@ void truncate_inode_pages_range(struct address_space *mapping, | |||
363 | * will be released, just zeroed, so we can bail out now. | 362 | * will be released, just zeroed, so we can bail out now. |
364 | */ | 363 | */ |
365 | if (start >= end) | 364 | if (start >= end) |
366 | return; | 365 | goto out; |
367 | 366 | ||
368 | index = start; | 367 | index = start; |
369 | for ( ; ; ) { | 368 | for ( ; ; ) { |
@@ -410,6 +409,8 @@ void truncate_inode_pages_range(struct address_space *mapping, | |||
410 | pagevec_release(&pvec); | 409 | pagevec_release(&pvec); |
411 | index++; | 410 | index++; |
412 | } | 411 | } |
412 | |||
413 | out: | ||
413 | cleancache_invalidate_inode(mapping); | 414 | cleancache_invalidate_inode(mapping); |
414 | } | 415 | } |
415 | EXPORT_SYMBOL(truncate_inode_pages_range); | 416 | EXPORT_SYMBOL(truncate_inode_pages_range); |
@@ -623,7 +624,9 @@ int invalidate_inode_pages2_range(struct address_space *mapping, | |||
623 | int ret2 = 0; | 624 | int ret2 = 0; |
624 | int did_range_unmap = 0; | 625 | int did_range_unmap = 0; |
625 | 626 | ||
626 | cleancache_invalidate_inode(mapping); | 627 | if (mapping->nrpages == 0 && mapping->nrexceptional == 0) |
628 | goto out; | ||
629 | |||
627 | pagevec_init(&pvec, 0); | 630 | pagevec_init(&pvec, 0); |
628 | index = start; | 631 | index = start; |
629 | while (index <= end && pagevec_lookup_entries(&pvec, mapping, index, | 632 | while (index <= end && pagevec_lookup_entries(&pvec, mapping, index, |
@@ -686,6 +689,8 @@ int invalidate_inode_pages2_range(struct address_space *mapping, | |||
686 | cond_resched(); | 689 | cond_resched(); |
687 | index++; | 690 | index++; |
688 | } | 691 | } |
692 | |||
693 | out: | ||
689 | cleancache_invalidate_inode(mapping); | 694 | cleancache_invalidate_inode(mapping); |
690 | return ret; | 695 | return ret; |
691 | } | 696 | } |