Message ID | 20240129070934.3717659-2-wangkefeng.wang@huawei.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm: migrate: support poison recover from migrate folio | expand |
On Mon, Jan 29, 2024 at 03:09:26PM +0800, Kefeng Wang wrote: > @@ -774,24 +774,16 @@ static int __buffer_migrate_folio(struct address_space *mapping, > } > } > > - rc = folio_migrate_mapping(mapping, dst, src, 0); > + rc = filemap_migrate_folio(mapping, dst, src, mode); > if (rc != MIGRATEPAGE_SUCCESS) > goto unlock_buffers; > > - folio_attach_private(dst, folio_detach_private(src)); > - > bh = head; > do { > folio_set_bh(bh, dst, bh_offset(bh)); > bh = bh->b_this_page; > } while (bh != head); > > - if (mode != MIGRATE_SYNC_NO_COPY) > - folio_migrate_copy(dst, src); > - else > - folio_migrate_flags(dst, src); > - > - rc = MIGRATEPAGE_SUCCESS; I wondered if maybe there was an ordering requirement; that we had to set up the BHs before copying the data over. But I don't think there is; the page should be frozen, the buffer heads are locked, and I don't think the ordering matters. So ... Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
diff --git a/mm/migrate.c b/mm/migrate.c index cc9f2bcd73b4..cdae25b7105f 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -774,24 +774,16 @@ static int __buffer_migrate_folio(struct address_space *mapping, } } - rc = folio_migrate_mapping(mapping, dst, src, 0); + rc = filemap_migrate_folio(mapping, dst, src, mode); if (rc != MIGRATEPAGE_SUCCESS) goto unlock_buffers; - folio_attach_private(dst, folio_detach_private(src)); - bh = head; do { folio_set_bh(bh, dst, bh_offset(bh)); bh = bh->b_this_page; } while (bh != head); - if (mode != MIGRATE_SYNC_NO_COPY) - folio_migrate_copy(dst, src); - else - folio_migrate_flags(dst, src); - - rc = MIGRATEPAGE_SUCCESS; unlock_buffers: if (check_refs) spin_unlock(&mapping->i_private_lock);
Use filemap_migrate_folio() helper to simplify __buffer_migrate_folio(). Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> --- mm/migrate.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-)