libnvdimm/pfn: Fix namespace creation on misaligned addresses
authorJeff Moyer <jmoyer@redhat.com>
Wed, 28 Aug 2019 15:49:46 +0000 (11:49 -0400)
committerDan Williams <dan.j.williams@intel.com>
Wed, 28 Aug 2019 17:33:13 +0000 (10:33 -0700)
commit274b924088e93593c76fb122d24bc0ef18d0ddf4
tree2ec36ff79fd8d90827d6854d38a58b5e6d4ac293
parenta55aa89aab90fae7c815b0551b07be37db359d76
libnvdimm/pfn: Fix namespace creation on misaligned addresses

Yi reported[1] that after commit a3619190d62e ("libnvdimm/pfn: stop
padding pmem namespaces to section alignment"), it was no longer
possible to create a device dax namespace with a 1G alignment.  The
reason was that the pmem region was not itself 1G-aligned.  The code
happily skips past the first 512M, but fails to account for a now
misaligned end offset (since space was allocated starting at that
misaligned address, and extending for size GBs).  Reintroduce
end_trunc, so that the code correctly handles the misaligned end
address.  This results in the same behavior as before the introduction
of the offending commit.

[1] https://lists.01.org/pipermail/linux-nvdimm/2019-July/022813.html

Fixes: a3619190d62e ("libnvdimm/pfn: stop padding pmem namespaces ...")
Reported-and-tested-by: Yi Zhang <yi.zhang@redhat.com>
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Link: https://lore.kernel.org/r/x49ftll8f39.fsf@segfault.boston.devel.redhat.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/nvdimm/pfn_devs.c