On 11/1/05, Christoph Lameter <[email protected]> wrote:
[snip]
> +static inline int
> +__isolate_lru_page(struct zone *zone, struct page *page)
> +{
> + if (TestClearPageLRU(page)) {
> + if (get_page_testone(page)) {
> + /*
> + * It is being freed elsewhere
> + */
> + __put_page(page);
> + SetPageLRU(page);
> + return -ENOENT;
Ok, -ENOENT..
> -static int isolate_lru_pages(int nr_to_scan, struct list_head *src,
> - struct list_head *dst, int *scanned)
> +static int isolate_lru_pages(struct zone *zone, int nr_to_scan,
> + struct list_head *src, struct list_head *dst)
[snip]
> + switch (__isolate_lru_page(zone, page)) {
> + case 1:
> + /* Succeeded to isolate page */
> list_add(&page->lru, dst);
> - nr_taken++;
> + break;
> + case -1:
> + /* Not possible to isolate */
> + list_move(&page->lru, src);
> + break;
> + default:
> + BUG();
Huh, -1?
It looks like the V4 to V5 upgrade added -ENOENT as return value to
__isolate_lru_page(), but did not change the code in
isolate_lru_pages().
The fix for this is simple, but maybe something else needs to be
changed too or I'm misunderstanding what is happening here.
Andrew, this looks like a showstopper for 2.6.14-mm1.
/ magnus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]