I think I used an old e-mail address for Nick (got it from git blame), I'm changing it now, sorry for the noise! Regards, Jacobo Giralt. 2011/11/5 Jacobo Giralt <jacobo.giralt@xxxxxxxxx>: > From 3754c8617ef4377ce2ca2e3b28bdc28f8de1aa0d Mon Sep 17 00:00:00 2001 > From: Jacobo Giralt <jacobo.giralt@xxxxxxxxx> > Date: Sat, 5 Nov 2011 13:12:50 +0100 > Subject: [PATCH] mm: migrate: One less atomic operation > > migrate_page_move_mapping drops a reference from the > old page after unfreezing its counter. Both operations > can be merged into a single atomic operation by > directly unfreezing to one less reference. > > The same applies to migrate_huge_page_move_mapping. > > Signed-off-by: Jacobo Giralt <jacobo.giralt@xxxxxxxxx> > --- > mm/migrate.c | 10 ++++------ > 1 files changed, 4 insertions(+), 6 deletions(-) > > diff --git a/mm/migrate.c b/mm/migrate.c > index 33358f8..46d04a0 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -269,12 +269,12 @@ static int migrate_page_move_mapping(struct address_space *mapping, > > radix_tree_replace_slot(pslot, newpage); > > - page_unfreeze_refs(page, expected_count); > /* > - * Drop cache reference from old page. > + * Drop cache reference from old page by unfreezing > + * to one less reference. > * We know this isn't the last reference. > */ > - __put_page(page); > + page_unfreeze_refs(page, expected_count - 1); > > /* > * If moved to a different zone then also account > @@ -334,9 +334,7 @@ int migrate_huge_page_move_mapping(struct address_space *mapping, > > radix_tree_replace_slot(pslot, newpage); > > - page_unfreeze_refs(page, expected_count); > - > - __put_page(page); > + page_unfreeze_refs(page, expected_count - 1); > > spin_unlock_irq(&mapping->tree_lock); > return 0; > -- > 1.7.5.4 > > > > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href