FS-Cache: Fix __fscache_uncache_all_inode_pages()'s outer loop
The compiler, at least for ix86 and m68k, validly warns that the comparison: next <= (loff_t)-1 is always true (and it's always true also for x86-64 and probably all other arches - as long as pgoff_t isn't wider than loff_t). The intention appears to be to avoid wrapping of "next", so rather than eliminating the pointless comparison, fix the loop to indeed get exited when "next" would otherwise wrap. On m68k the following warning is observed: fs/fscache/page.c: In function '__fscache_uncache_all_inode_pages': fs/fscache/page.c:979: warning: comparison is always false due to limited range of data type Reported-by: Geert Uytterhoeven <geert@linux-m68k.org> Reported-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: David Howells <dhowells@redhat.com> Cc: Suresh Jayaraman <sjayaraman@suse.de> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: stable@kernel.org Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
cf6ace16a3
commit
b307d4655a
1 changed files with 5 additions and 9 deletions
|
@ -976,16 +976,12 @@ void __fscache_uncache_all_inode_pages(struct fscache_cookie *cookie,
|
|||
|
||||
pagevec_init(&pvec, 0);
|
||||
next = 0;
|
||||
while (next <= (loff_t)-1 &&
|
||||
pagevec_lookup(&pvec, mapping, next, PAGEVEC_SIZE)
|
||||
) {
|
||||
do {
|
||||
if (!pagevec_lookup(&pvec, mapping, next, PAGEVEC_SIZE))
|
||||
break;
|
||||
for (i = 0; i < pagevec_count(&pvec); i++) {
|
||||
struct page *page = pvec.pages[i];
|
||||
pgoff_t page_index = page->index;
|
||||
|
||||
ASSERTCMP(page_index, >=, next);
|
||||
next = page_index + 1;
|
||||
|
||||
next = page->index;
|
||||
if (PageFsCache(page)) {
|
||||
__fscache_wait_on_page_write(cookie, page);
|
||||
__fscache_uncache_page(cookie, page);
|
||||
|
@ -993,7 +989,7 @@ void __fscache_uncache_all_inode_pages(struct fscache_cookie *cookie,
|
|||
}
|
||||
pagevec_release(&pvec);
|
||||
cond_resched();
|
||||
}
|
||||
} while (++next);
|
||||
|
||||
_leave("");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue