Message ID | 1533102620-30244-1-git-send-email-yangx.jy@cn.fujitsu.com |
---|---|
State | Accepted |
Delegated to: | Petr Vorel |
Headers | show |
Series | open_posix_testsuite/mmap_11-4: Skip this test on tmpfs | expand |
Hi Xiao, > According to mmap(2) manpage, when you write data to such partial > page after the end of the object, the data stays in the page cache > even after the file is closed and unmapped, subsequent mappings > always see the modified content on tmpfs. We just skip this test > when running it on tmpfs. > Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com> > --- > .../conformance/interfaces/mmap/11-4.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > diff --git a/testcases/open_posix_testsuite/conformance/interfaces/mmap/11-4.c b/testcases/open_posix_testsuite/conformance/interfaces/mmap/11-4.c > index 2b44815..a52b288 100644 > --- a/testcases/open_posix_testsuite/conformance/interfaces/mmap/11-4.c > +++ b/testcases/open_posix_testsuite/conformance/interfaces/mmap/11-4.c > @@ -40,8 +40,11 @@ > #include <fcntl.h> > #include <string.h> > #include <errno.h> > +#include <sys/vfs.h> > #include "posixtest.h" > +#define TYPE_TMPFS_MAGIC 0x01021994 Thanks for your patch, pushed. I don't like redefinition of TMPFS_MAGIC, but I didn't change it as openposix subproject don't use include directory from root and therefore we can't use TST_TMPFS_MAGIC from tst_fs.h. And I didn't add include of <linux/magic.h> due the same inaccessibility of config.h. Maybe it'd make sense to make access for some of the headers from include directory. Kind regards, Petr
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/mmap/11-4.c b/testcases/open_posix_testsuite/conformance/interfaces/mmap/11-4.c index 2b44815..a52b288 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/mmap/11-4.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/mmap/11-4.c @@ -40,8 +40,11 @@ #include <fcntl.h> #include <string.h> #include <errno.h> +#include <sys/vfs.h> #include "posixtest.h" +#define TYPE_TMPFS_MAGIC 0x01021994 + int main(void) { char tmpfname[256]; @@ -54,11 +57,23 @@ int main(void) pid_t child; int i, exit_val; + struct statfs buf; + page_size = sysconf(_SC_PAGE_SIZE); /* mmap will create a partial page */ len = page_size / 2; + if (statfs("/tmp", &buf)) { + printf("Error at statfs(): %s\n", strerror(errno)); + return PTS_UNRESOLVED; + } + + if (buf.f_type == TYPE_TMPFS_MAGIC) { + printf("From mmap(2) manpage, skip known bug on tmpfs\n"); + return PTS_UNTESTED; + } + snprintf(tmpfname, sizeof(tmpfname), "/tmp/pts_mmap_11_5_%d", getpid()); child = fork(); switch (child) {
According to mmap(2) manpage, when you write data to such partial page after the end of the object, the data stays in the page cache even after the file is closed and unmapped, subsequent mappings always see the modified content on tmpfs. We just skip this test when running it on tmpfs. Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com> --- .../conformance/interfaces/mmap/11-4.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)