On Tue, Feb 7, 2017 at 7:51 PM, Xiong Zhou <xzhou(a)redhat.com> wrote:
On Fri, Jan 20, 2017 at 12:40:07PM +0800, Xiong Zhou wrote:
> At first, I am not sure whether this is an issue.
> mmap a file in a DAX mountpoint, open another file
> in a non-DAX mountpoint with O_DIRECT, write the
> mapped area to the other file.
> This write Success on pmem ramdisk(memmap=2G!20G like)
> This write Fail(Bad address) on nvdimm pmem devices.
> This write Fail(Bad address) on brd based ramdisk.
> If we skip the O_DIRECT flag, all tests pass.
> If we write from DAX to DAX, all tests pass.
> If we write from non-DAX to DAX, all tests pass.
To falloc instead of pwrite while initiating test files,
( Thanks Ross! :)
the write call returned success, however the following
read back to mmaped area FAILED the same way:
return (Bad address) on raw-mode nvdimm device;
return (Success) on memory-mode nvdimm device;
return (Bad address) on brd based ramdisk.
Also, this only happends with O_DIRECT flag on.
This smells like an issue to me, still looking into why
read can't get that page..
Why does it smell like an issue? Any path that calls get_user_pages()
and a DAX mmap range will fail without "memory" mode. I'm of the
opinion that we should disable DAX altogether for raw-mode.