From: Christoph Lameter It is sufficient to have the page locked to guarantee that the list of buffers is not changed. Cc: Mike Kravetz Signed-off-by: Andrew Morton --- fs/buffer.c | 5 ----- 1 files changed, 5 deletions(-) diff -puN fs/buffer.c~direct-migration-v9-avoid-writeback-page_migrate-method-locking-fix fs/buffer.c --- 25/fs/buffer.c~direct-migration-v9-avoid-writeback-page_migrate-method-locking-fix Fri Jan 13 17:53:58 2006 +++ 25-akpm/fs/buffer.c Fri Jan 13 17:53:58 2006 @@ -3071,8 +3071,6 @@ int buffer_migrate_page(struct page *new if (migrate_page_remove_references(newpage, page, 3)) return -EAGAIN; - spin_lock(&mapping->private_lock); - bh = head; do { get_bh(bh); @@ -3095,11 +3093,9 @@ int buffer_migrate_page(struct page *new } while (bh != head); SetPagePrivate(newpage); - spin_unlock(&mapping->private_lock); migrate_page_copy(newpage, page); - spin_lock(&mapping->private_lock); bh = head; do { unlock_buffer(bh); @@ -3107,7 +3103,6 @@ int buffer_migrate_page(struct page *new bh = bh->b_this_page; } while (bh != head); - spin_unlock(&mapping->private_lock); return 0; } _