From bba9d6d23609f79b9d6d15543a4c805b53b16d42 Mon Sep 17 00:00:00 2001 From: Kirill Smelkov <kirr@nexedi.com> Date: Thu, 11 Jul 2019 19:47:49 +0300 Subject: [PATCH] . --- bigfile/tests/test_virtmem.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/bigfile/tests/test_virtmem.c b/bigfile/tests/test_virtmem.c index 54e5ceda..3293ee4b 100644 --- a/bigfile/tests/test_virtmem.c +++ b/bigfile/tests/test_virtmem.c @@ -1476,11 +1476,38 @@ void test_file_access_mmapbase(void) ok1(!M(vma, 2)); CHECK_NOPAGE( 102 ); ok1(!M(vma, 3)); CHECK_NOPAGE( 103 ); + /* writeout in 3 variants - STORE, MARK, STORE+MARK */ + diag("writeout"); + vma_unmap(vma); + CHECK_NOPAGE( 100 ); + CHECK_NOPAGE( 101 ); + CHECK_NOPAGE( 102 ); + CHECK_NOPAGE( 103 ); - // XXX writeout STORE, MARK, STORE+MARK - diag("writeout"); + page0 = page2 = page3 = NULL; + + /* mkdirty2 prepares state with 2 dirty pages only 1 of which is mapped */ + void mkdirty2(int gen) { + err = fileh_mmap(vma, fh, 100, 4); + ok1(!err); + + B(vma, 0*PSb) = gen + 0; + B(vma, 2*PSb) = gen + 2; + vma_unmap(vma); + page0 = pagemap_get(&fh->pagemap, 100); ok1(page0); + page2 = pagemap_get(&fh->pagemap, 102); ok1(page2); + + err = fileh_mmap(vma, fh, 100, 2); /* note - only 2 pages */ + ok1(!err); + + ok1( M(vma, 0)); CHECK_PAGE (page0, 100, PAGE_DIRTY, 1); + ok1(!M(vma, 1)); CHECK_NOPAGE( 101 ); + CHECK_PAGE (page2, 102, PAGE_DIRTY, 0); + CHECK_NOPAGE( 103 ); + } + mkdirty2(10); -- 2.30.9