diff options
| author | Benjamin LaHaise <bcrl@kvack.org> | 2013-12-21 17:56:08 -0500 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2017-07-21 12:38:30 +0200 |
| commit | b4c41710906bf35aebb3c34b57146d65aa8e3d8b (patch) | |
| tree | ddb0c86e176164b16b3aca1946ff87df65fb05c1 /mm | |
| parent | f2c17060e41b8a080669ddcd98fbf1158e23e013 (diff) | |
mm: make migrate_page_move_mapping() take an extra_count parameter
Needed for f2fs upstream.
Referenced from https://github.com/torvalds/linux/commit/8e321fefb0e60bae4e2a28d20fc4fa30758d27c6#diff-8e2530775024feb6361f8a93e833d3c1R342
Diffstat (limited to 'mm')
| -rw-r--r-- | mm/migrate.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/mm/migrate.c b/mm/migrate.c index 27d1fdf8b..e03f03ffb 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -310,16 +310,17 @@ static inline bool buffer_migrate_lock_buffers(struct buffer_head *head, */ int migrate_page_move_mapping(struct address_space *mapping, struct page *newpage, struct page *page, - struct buffer_head *head, enum migrate_mode mode) + struct buffer_head *head, enum migrate_mode mode, + int extra_count) { struct zone *oldzone, *newzone; int dirty; - int expected_count = 0; + int expected_count = 1 + extra_count; void **pslot; if (!mapping) { /* Anonymous page without mapping */ - if (page_count(page) != 1) + if (page_count(page) != expected_count) return -EAGAIN; return MIGRATEPAGE_SUCCESS; } @@ -332,7 +333,7 @@ int migrate_page_move_mapping(struct address_space *mapping, pslot = radix_tree_lookup_slot(&mapping->page_tree, page_index(page)); - expected_count = 2 + page_has_private(page); + expected_count += 1 + page_has_private(page); if (page_count(page) != expected_count || radix_tree_deref_slot_protected(pslot, &mapping->tree_lock) != page) { spin_unlock_irq(&mapping->tree_lock); @@ -532,7 +533,7 @@ int migrate_page(struct address_space *mapping, BUG_ON(PageWriteback(page)); /* Writeback must be complete */ - rc = migrate_page_move_mapping(mapping, newpage, page, NULL, mode); + rc = migrate_page_move_mapping(mapping, newpage, page, NULL, mode, 0); if (rc != MIGRATEPAGE_SUCCESS) return rc; @@ -559,7 +560,7 @@ int buffer_migrate_page(struct address_space *mapping, head = page_buffers(page); - rc = migrate_page_move_mapping(mapping, newpage, page, head, mode); + rc = migrate_page_move_mapping(mapping, newpage, page, head, mode, 0); if (rc != MIGRATEPAGE_SUCCESS) return rc; |
