Skip to content

Commit

Permalink
FS-Cache: Fix __fscache_uncache_all_inode_pages()'s outer loop
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reported-by: Jan Beulich <[email protected]>
Signed-off-by: Jan Beulich <[email protected]>
Signed-off-by: David Howells <[email protected]>
Cc: Suresh Jayaraman <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Cc: [email protected]
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Jan Beulich authored and torvalds committed Jul 21, 2011
1 parent cf6ace1 commit b307d46
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions fs/fscache/page.c
Original file line number Diff line number Diff line change
Expand Up @@ -976,24 +976,20 @@ 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);
}
}
pagevec_release(&pvec);
cond_resched();
}
} while (++next);

_leave("");
}
Expand Down

0 comments on commit b307d46

Please sign in to comment.