From: kbuild test robot <fengguang.wu@intel.com>
To: Waiman Long <longman@redhat.com>
Cc: kbuild-all@01.org, linux-mm@kvack.org,
Michal Hocko <mhocko@suse.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: [memcg:since-4.12 539/540] mm/compaction.c:469:8: error: implicit declaration of function 'pageblock_skip_persistent'
Date: Sat, 19 Aug 2017 00:42:40 +0800 [thread overview]
Message-ID: <201708190034.TmrRSDV7%fengguang.wu@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 12421 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git since-4.12
head: ba5e8c23db5729ebdbafad983b07434c829cf5b6
commit: 500539d3686a835f6a9740ffc38bed5d74951a64 [539/540] debugobjects: make kmemleak ignore debug objects
config: i386-randconfig-s0-08141822 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
git checkout 500539d3686a835f6a9740ffc38bed5d74951a64
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
mm/compaction.c: In function 'isolate_freepages_block':
>> mm/compaction.c:469:8: error: implicit declaration of function 'pageblock_skip_persistent' [-Werror=implicit-function-declaration]
if (pageblock_skip_persistent(page, order)) {
^~~~~~~~~~~~~~~~~~~~~~~~~
>> mm/compaction.c:470:5: error: implicit declaration of function 'set_pageblock_skip' [-Werror=implicit-function-declaration]
set_pageblock_skip(page);
^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/pageblock_skip_persistent +469 mm/compaction.c
be976572 Vlastimil Babka 2014-06-04 417
c67fe375 Mel Gorman 2012-08-21 418 /*
9e4be470 Jerome Marchand 2013-11-12 419 * Isolate free pages onto a private freelist. If @strict is true, will abort
9e4be470 Jerome Marchand 2013-11-12 420 * returning 0 on any invalid PFNs or non-free pages inside of the pageblock
9e4be470 Jerome Marchand 2013-11-12 421 * (even though it may still end up isolating some pages).
85aa125f Michal Nazarewicz 2012-01-30 422 */
f40d1e42 Mel Gorman 2012-10-08 423 static unsigned long isolate_freepages_block(struct compact_control *cc,
e14c720e Vlastimil Babka 2014-10-09 424 unsigned long *start_pfn,
85aa125f Michal Nazarewicz 2012-01-30 425 unsigned long end_pfn,
85aa125f Michal Nazarewicz 2012-01-30 426 struct list_head *freelist,
85aa125f Michal Nazarewicz 2012-01-30 427 bool strict)
748446bb Mel Gorman 2010-05-24 428 {
b7aba698 Mel Gorman 2011-01-13 429 int nr_scanned = 0, total_isolated = 0;
bb13ffeb Mel Gorman 2012-10-08 430 struct page *cursor, *valid_page = NULL;
b8b2d825 Xiubo Li 2014-10-09 431 unsigned long flags = 0;
f40d1e42 Mel Gorman 2012-10-08 432 bool locked = false;
e14c720e Vlastimil Babka 2014-10-09 433 unsigned long blockpfn = *start_pfn;
66c64223 Joonsoo Kim 2016-07-26 434 unsigned int order;
748446bb Mel Gorman 2010-05-24 435
748446bb Mel Gorman 2010-05-24 436 cursor = pfn_to_page(blockpfn);
748446bb Mel Gorman 2010-05-24 437
f40d1e42 Mel Gorman 2012-10-08 438 /* Isolate free pages. */
748446bb Mel Gorman 2010-05-24 439 for (; blockpfn < end_pfn; blockpfn++, cursor++) {
66c64223 Joonsoo Kim 2016-07-26 440 int isolated;
748446bb Mel Gorman 2010-05-24 441 struct page *page = cursor;
748446bb Mel Gorman 2010-05-24 442
8b44d279 Vlastimil Babka 2014-10-09 443 /*
8b44d279 Vlastimil Babka 2014-10-09 444 * Periodically drop the lock (if held) regardless of its
8b44d279 Vlastimil Babka 2014-10-09 445 * contention, to give chance to IRQs. Abort if fatal signal
8b44d279 Vlastimil Babka 2014-10-09 446 * pending or async compaction detects need_resched()
8b44d279 Vlastimil Babka 2014-10-09 447 */
8b44d279 Vlastimil Babka 2014-10-09 448 if (!(blockpfn % SWAP_CLUSTER_MAX)
8b44d279 Vlastimil Babka 2014-10-09 449 && compact_unlock_should_abort(&cc->zone->lock, flags,
8b44d279 Vlastimil Babka 2014-10-09 450 &locked, cc))
8b44d279 Vlastimil Babka 2014-10-09 451 break;
8b44d279 Vlastimil Babka 2014-10-09 452
b7aba698 Mel Gorman 2011-01-13 453 nr_scanned++;
f40d1e42 Mel Gorman 2012-10-08 454 if (!pfn_valid_within(blockpfn))
2af120bc Laura Abbott 2014-03-10 455 goto isolate_fail;
2af120bc Laura Abbott 2014-03-10 456
bb13ffeb Mel Gorman 2012-10-08 457 if (!valid_page)
bb13ffeb Mel Gorman 2012-10-08 458 valid_page = page;
9fcd6d2e Vlastimil Babka 2015-09-08 459
9fcd6d2e Vlastimil Babka 2015-09-08 460 /*
9fcd6d2e Vlastimil Babka 2015-09-08 461 * For compound pages such as THP and hugetlbfs, we can save
9fcd6d2e Vlastimil Babka 2015-09-08 462 * potentially a lot of iterations if we skip them at once.
9fcd6d2e Vlastimil Babka 2015-09-08 463 * The check is racy, but we can consider only valid values
9fcd6d2e Vlastimil Babka 2015-09-08 464 * and the only danger is skipping too much.
9fcd6d2e Vlastimil Babka 2015-09-08 465 */
9fcd6d2e Vlastimil Babka 2015-09-08 466 if (PageCompound(page)) {
a93d0214 David Rientjes 2017-08-18 467 const unsigned int order = compound_order(page);
9fcd6d2e Vlastimil Babka 2015-09-08 468
a93d0214 David Rientjes 2017-08-18 @469 if (pageblock_skip_persistent(page, order)) {
a93d0214 David Rientjes 2017-08-18 @470 set_pageblock_skip(page);
a93d0214 David Rientjes 2017-08-18 471 blockpfn = end_pfn;
a93d0214 David Rientjes 2017-08-18 472 } else if (likely(order < MAX_ORDER)) {
a93d0214 David Rientjes 2017-08-18 473 blockpfn += (1UL << order) - 1;
a93d0214 David Rientjes 2017-08-18 474 cursor += (1UL << order) - 1;
9fcd6d2e Vlastimil Babka 2015-09-08 475 }
9fcd6d2e Vlastimil Babka 2015-09-08 476 goto isolate_fail;
9fcd6d2e Vlastimil Babka 2015-09-08 477 }
9fcd6d2e Vlastimil Babka 2015-09-08 478
f40d1e42 Mel Gorman 2012-10-08 479 if (!PageBuddy(page))
2af120bc Laura Abbott 2014-03-10 480 goto isolate_fail;
748446bb Mel Gorman 2010-05-24 481
f40d1e42 Mel Gorman 2012-10-08 482 /*
69b7189f Vlastimil Babka 2014-10-09 483 * If we already hold the lock, we can skip some rechecking.
69b7189f Vlastimil Babka 2014-10-09 484 * Note that if we hold the lock now, checked_pageblock was
69b7189f Vlastimil Babka 2014-10-09 485 * already set in some previous iteration (or strict is true),
69b7189f Vlastimil Babka 2014-10-09 486 * so it is correct to skip the suitable migration target
69b7189f Vlastimil Babka 2014-10-09 487 * recheck as well.
69b7189f Vlastimil Babka 2014-10-09 488 */
69b7189f Vlastimil Babka 2014-10-09 489 if (!locked) {
69b7189f Vlastimil Babka 2014-10-09 490 /*
f40d1e42 Mel Gorman 2012-10-08 491 * The zone lock must be held to isolate freepages.
f40d1e42 Mel Gorman 2012-10-08 492 * Unfortunately this is a very coarse lock and can be
f40d1e42 Mel Gorman 2012-10-08 493 * heavily contended if there are parallel allocations
f40d1e42 Mel Gorman 2012-10-08 494 * or parallel compactions. For async compaction do not
f40d1e42 Mel Gorman 2012-10-08 495 * spin on the lock and we acquire the lock as late as
f40d1e42 Mel Gorman 2012-10-08 496 * possible.
f40d1e42 Mel Gorman 2012-10-08 497 */
8b44d279 Vlastimil Babka 2014-10-09 498 locked = compact_trylock_irqsave(&cc->zone->lock,
8b44d279 Vlastimil Babka 2014-10-09 499 &flags, cc);
f40d1e42 Mel Gorman 2012-10-08 500 if (!locked)
f40d1e42 Mel Gorman 2012-10-08 501 break;
f40d1e42 Mel Gorman 2012-10-08 502
f40d1e42 Mel Gorman 2012-10-08 503 /* Recheck this is a buddy page under lock */
f40d1e42 Mel Gorman 2012-10-08 504 if (!PageBuddy(page))
2af120bc Laura Abbott 2014-03-10 505 goto isolate_fail;
69b7189f Vlastimil Babka 2014-10-09 506 }
748446bb Mel Gorman 2010-05-24 507
66c64223 Joonsoo Kim 2016-07-26 508 /* Found a free page, will break it into order-0 pages */
66c64223 Joonsoo Kim 2016-07-26 509 order = page_order(page);
66c64223 Joonsoo Kim 2016-07-26 510 isolated = __isolate_free_page(page, order);
a4f04f2c David Rientjes 2016-06-24 511 if (!isolated)
a4f04f2c David Rientjes 2016-06-24 512 break;
66c64223 Joonsoo Kim 2016-07-26 513 set_page_private(page, order);
a4f04f2c David Rientjes 2016-06-24 514
748446bb Mel Gorman 2010-05-24 515 total_isolated += isolated;
a4f04f2c David Rientjes 2016-06-24 516 cc->nr_freepages += isolated;
66c64223 Joonsoo Kim 2016-07-26 517 list_add_tail(&page->lru, freelist);
66c64223 Joonsoo Kim 2016-07-26 518
a4f04f2c David Rientjes 2016-06-24 519 if (!strict && cc->nr_migratepages <= cc->nr_freepages) {
932ff6bb Joonsoo Kim 2015-02-12 520 blockpfn += isolated;
932ff6bb Joonsoo Kim 2015-02-12 521 break;
932ff6bb Joonsoo Kim 2015-02-12 522 }
a4f04f2c David Rientjes 2016-06-24 523 /* Advance to the end of split page */
748446bb Mel Gorman 2010-05-24 524 blockpfn += isolated - 1;
748446bb Mel Gorman 2010-05-24 525 cursor += isolated - 1;
2af120bc Laura Abbott 2014-03-10 526 continue;
2af120bc Laura Abbott 2014-03-10 527
2af120bc Laura Abbott 2014-03-10 528 isolate_fail:
2af120bc Laura Abbott 2014-03-10 529 if (strict)
2af120bc Laura Abbott 2014-03-10 530 break;
2af120bc Laura Abbott 2014-03-10 531 else
2af120bc Laura Abbott 2014-03-10 532 continue;
2af120bc Laura Abbott 2014-03-10 533
748446bb Mel Gorman 2010-05-24 534 }
748446bb Mel Gorman 2010-05-24 535
a4f04f2c David Rientjes 2016-06-24 536 if (locked)
a4f04f2c David Rientjes 2016-06-24 537 spin_unlock_irqrestore(&cc->zone->lock, flags);
a4f04f2c David Rientjes 2016-06-24 538
9fcd6d2e Vlastimil Babka 2015-09-08 539 /*
9fcd6d2e Vlastimil Babka 2015-09-08 540 * There is a tiny chance that we have read bogus compound_order(),
9fcd6d2e Vlastimil Babka 2015-09-08 541 * so be careful to not go outside of the pageblock.
9fcd6d2e Vlastimil Babka 2015-09-08 542 */
9fcd6d2e Vlastimil Babka 2015-09-08 543 if (unlikely(blockpfn > end_pfn))
9fcd6d2e Vlastimil Babka 2015-09-08 544 blockpfn = end_pfn;
9fcd6d2e Vlastimil Babka 2015-09-08 545
e34d85f0 Joonsoo Kim 2015-02-11 546 trace_mm_compaction_isolate_freepages(*start_pfn, blockpfn,
e34d85f0 Joonsoo Kim 2015-02-11 547 nr_scanned, total_isolated);
e34d85f0 Joonsoo Kim 2015-02-11 548
e14c720e Vlastimil Babka 2014-10-09 549 /* Record how far we have got within the block */
e14c720e Vlastimil Babka 2014-10-09 550 *start_pfn = blockpfn;
e14c720e Vlastimil Babka 2014-10-09 551
f40d1e42 Mel Gorman 2012-10-08 552 /*
f40d1e42 Mel Gorman 2012-10-08 553 * If strict isolation is requested by CMA then check that all the
f40d1e42 Mel Gorman 2012-10-08 554 * pages requested were isolated. If there were any failures, 0 is
f40d1e42 Mel Gorman 2012-10-08 555 * returned and CMA will fail.
f40d1e42 Mel Gorman 2012-10-08 556 */
2af120bc Laura Abbott 2014-03-10 557 if (strict && blockpfn < end_pfn)
f40d1e42 Mel Gorman 2012-10-08 558 total_isolated = 0;
f40d1e42 Mel Gorman 2012-10-08 559
bb13ffeb Mel Gorman 2012-10-08 560 /* Update the pageblock-skip if the whole pageblock was scanned */
bb13ffeb Mel Gorman 2012-10-08 561 if (blockpfn == end_pfn)
edc2ca61 Vlastimil Babka 2014-10-09 562 update_pageblock_skip(cc, valid_page, total_isolated, false);
bb13ffeb Mel Gorman 2012-10-08 563
7f354a54 David Rientjes 2017-02-22 564 cc->total_free_scanned += nr_scanned;
397487db Mel Gorman 2012-10-19 565 if (total_isolated)
010fc29a Minchan Kim 2012-12-20 566 count_compact_events(COMPACTISOLATED, total_isolated);
748446bb Mel Gorman 2010-05-24 567 return total_isolated;
748446bb Mel Gorman 2010-05-24 568 }
748446bb Mel Gorman 2010-05-24 569
:::::: The code at line 469 was first introduced by commit
:::::: a93d021466d5ab3b2598e59e3a055c577a3f120b mm, compaction: persistently skip hugetlbfs pageblocks
:::::: TO: David Rientjes <rientjes@google.com>
:::::: CC: Michal Hocko <mhocko@suse.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 27288 bytes --]
next reply other threads:[~2017-08-18 16:43 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-18 16:42 kbuild test robot [this message]
2017-08-18 16:57 ` [memcg:since-4.12 539/540] mm/compaction.c:469:8: error: implicit declaration of function 'pageblock_skip_persistent' Waiman Long
2017-08-18 21:03 ` Andrew Morton
2017-08-21 6:38 ` Michal Hocko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201708190034.TmrRSDV7%fengguang.wu@intel.com \
--to=fengguang.wu@intel.com \
--cc=akpm@linux-foundation.org \
--cc=kbuild-all@01.org \
--cc=linux-mm@kvack.org \
--cc=longman@redhat.com \
--cc=mhocko@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.