Messages in this thread | ![/](/images/icornerl.gif) | | Date | Fri, 14 Apr 2006 11:31:04 -0700 | From | Andrew Morton <> | Subject | Re: Implement lookup_swap_cache for migration entries |
| |
Christoph Lameter <clameter@sgi.com> wrote: > > This undoes the optimization that resulted in a yield in do_swap_cache(). > do_swap_cache() stays as is. Instead we convert the migration entry to > a page * in lookup_swap_cache. > > For the non swap case we need a special macro version of lookup_swap_cache > that is only capable of handling migration cache entries. > > ... > > @@ -305,6 +306,12 @@ struct page * lookup_swap_cache(swp_entr > { > struct page *page; > > + if (is_migration_entry(entry)) { > + page = migration_entry_to_page(entry); > + get_page(page); > + return page; > + }
What locking ensures that the state of `entry' remains unaltered across the is_migration_entry() and migration_entry_to_page() calls?
> > +/* > + * Must use a macro for lookup_swap_cache since the functions > + * used are only available in certain contexts. > + */ > +#define lookup_swap_cache(__swp) \ > +({ struct page *p = NULL; \ > + if (is_migration_entry(__swp)) { \ > + p = migration_entry_to_page(__swp); \ > + get_page(p); \ > + } \ > + p; \ > +})
hm. Can nommu do any of this? - 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/
| ![\](/images/icornerr.gif) |