BLOCK selects DAX (was: Re: dax: introduce dax_direct_access())

From: Geert Uytterhoeven
Date: Sun May 07 2017 - 18:30:05 EST


Hi Dan,

On Sat, May 6, 2017 at 4:21 AM, Linux Kernel Mailing List
<linux-kernel@xxxxxxxxxxxxxxx> wrote:
> Web: https://git.kernel.org/torvalds/c/b0686260fecaa924d8eff2ace94bee70506bc308
> Commit: b0686260fecaa924d8eff2ace94bee70506bc308
> Parent: d8f07aee3f2fd959878bf614d4e984900018eb9e
> Refname: refs/heads/master
> Author: Dan Williams <dan.j.williams@xxxxxxxxx>
> AuthorDate: Thu Jan 26 20:37:35 2017 -0800
> Committer: Dan Williams <dan.j.williams@xxxxxxxxx>
> CommitDate: Thu Apr 20 11:57:52 2017 -0700
>
> dax: introduce dax_direct_access()
>
> Replace bdev_direct_access() with dax_direct_access() that uses
> dax_device and dax_operations instead of a block_device and
> block_device_operations for dax. Once all consumers of the old api have
> been converted bdev_direct_access() will be deleted.
>
> Given that block device partitioning decisions can cause dax page
> alignment constraints to be violated this also introduces the
> bdev_dax_pgoff() helper. It handles calculating a logical pgoff relative
> to the dax_device and also checks for page alignment.
>
> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

This looks like a fairly innocent change...

> ---
> block/Kconfig | 1 +
> drivers/dax/super.c | 39 +++++++++++++++++++++++++++++++++++++++
> fs/block_dev.c | 14 ++++++++++++++
> include/linux/blkdev.h | 1 +
> include/linux/dax.h | 2 ++
> 5 files changed, 57 insertions(+)
>
> diff --git a/block/Kconfig b/block/Kconfig
> index e9f780f815f5..93da7fc3f254 100644
> --- a/block/Kconfig
> +++ b/block/Kconfig
> @@ -6,6 +6,7 @@ menuconfig BLOCK
> default y
> select SBITMAP
> select SRCU
> + select DAX
> help
> Provide block layer support for the kernel.

... but it is not: now DAX is always enabled if you use block devices.

$ bloat-o-meter vmlinux.nodax vmlinux.dax | head
add/remove: 59/0 grow/shrink: 10/1 up/down: 6048/-8 (6040)
function old new delta
dax_host_list - 4096 +4096
alloc_dax - 306 +306
dax_fs_init - 230 +230
dax_get_by_host - 128 +128
dax_sops - 100 +100
dax_srcu - 90 +90
dax_direct_access - 80 +80
bdev_dax_pgoff - 80 +80

Does all block device access really needs DAX enabled?

Furthermore:

Maximum number of Device-DAX instances (NR_DEV_DAX) [32768] (NEW) ?

There is no help available for this option.
Symbol: NR_DEV_DAX [=32768]
Type : integer
Range : [256 2147483647]
Prompt: Maximum number of Device-DAX instances
Location:
-> Device Drivers
-> DAX: direct access to differentiated memory (DAX [=y])
Defined at drivers/dax/Kconfig:31
Depends on: DAX [=y]

What should I answer here?
"256" already sounds like a large number to me, "32768" sounds huge, and
"2147483647" sounds insane? But perhaps this doesn't really mean what I
would expect...

Can you please add some help for this option?

Thanks!

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds