Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
madvise11: ignore EBUSY for MADV_SOFT_OFFLINE
The EBUSY error could be easily triggered on small system with kernel-debug. By not treating EBUSY as a failure, the test can avoid false positives where the test environment itself might frequently cause resource contention. Test output: madvise11.c:409: TINFO: Spawning 4 threads, with a total of 640 memory pages madvise11.c:163: TINFO: Thread [0] returned 0, succeeded. madvise11.c:163: TINFO: Thread [2] returned 0, succeeded. madvise11.c:163: TINFO: Thread [1] returned 0, succeeded. madvise11.c:163: TINFO: Thread [3] returned 0, succeeded. madvise11.c:198: TPASS: soft-offline / mmap race still clean <--- end of 1st test madvise11.c:132: TFAIL: madvise failed: EBUSY (16) <--- ERROR! ... From kernel log: [ 431.590511] soft offline: 0xbfa8f: page migration failed 1, type 0x800000008002e(referenced|uptodate|dirty|active|swapbacked|node=0|zone=1) ... [ 435.510819] soft offline: 0x98fb6: page migration failed 1, type 0x800000008000e(referenced|uptodate|dirty|swapbacked|node=0|zone=1) ... Kernel callpath: do_madvise() --- #ifdef CONFIG_MEMORY_FAILURE if (behavior == MADV_HWPOISON || behavior == MADV_SOFT_OFFLINE) return madvise_inject_error(behavior, start, start + len_in); #endif --- madvise_inject_error() soft_offline_page() soft_offline_in_use_page() ... 2727 pr_info("soft offline: %#lx: %s migration failed %ld, type %pGp\n", 2728 pfn, msg_page[huge], ret, &page->flags); 2729 if (ret > 0) 2730 ret = -EBUSY; <--- Here Debugged-by: Luis Goncalves <lgoncalv@redhat.com> Signed-off-by: Li Wang <liwang@redhat.com> Reviewed-by: Petr Vorel <pvorel@suse.cz>
- Loading branch information