Re: suspend-to-{RAM,disk} for 2.5.17

Pavel Machek (pavel@ucw.cz)
Tue, 28 May 2002 21:32:22 +0200


Hi!

> The rest is okay...
>
> I'd try writing it this way, and though I've not tested it, I've walked
> buddy lists a few times in the past week or two:
>
>
> #ifdef CONFIG_SOFTWARE_SUSPEND
> int is_head_of_free_region(struct page *page)
> {
> zone_t *zone, *node_zones = pgdat_list->node_zones;
> unsigned long flags;
>
> for (zone = node_zones; zone - node_zones < MAX_NR_ZONES; ++zone) {
> int order;
> list_t *curr;
>
> /*
> * Should not matter as we need quiescent system for
> * suspend anyway, but...
> */
> spin_lock_irqsave(&zone->lock, flags);
> for (order = MAX_ORDER - 1; order >= 0; --order)
> list_for_each(curr, &zone->free_area[order].free_list)
<== HERE ==>
> if (page == list_entry(curr, struct page, list))
> return 1 << order;
> spin_unlock_irqrestore(&zone->lock, flags);
>
> }
> return 0;
> }
> #endif /* CONFIG_SOFTWARE_SUSPEND */

I had to add
if (!curr) break;

to fix the oops. It now looks way nicer. Thanx.
Pavel

-- 
(about SSSCA) "I don't say this lightly.  However, I really think that the U.S.
no longer is classifiable as a democracy, but rather as a plutocracy." --hpa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/