diff options
author | Dan Williams <dan.j.williams@intel.com> | 2018-06-08 15:16:40 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2018-06-08 15:16:40 -0700 |
commit | b56845794e1e93121acb74ca325db965035d5545 (patch) | |
tree | 3435f4e8de92d5a63fdc15953391cf057ee46642 /drivers/dax/super.c | |
parent | 808c340be17dc77131fcdf9ad1eb34452d650da1 (diff) | |
parent | cc4a90ac816e00775fbc2a9c018bf2af606abd06 (diff) | |
download | linux-b56845794e1e93121acb74ca325db965035d5545.tar.bz2 |
Merge branch 'for-4.18/dax' into libnvdimm-for-next
Diffstat (limited to 'drivers/dax/super.c')
-rw-r--r-- | drivers/dax/super.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/dax/super.c b/drivers/dax/super.c index c2c46f96b18c..60d01b5d2a67 100644 --- a/drivers/dax/super.c +++ b/drivers/dax/super.c @@ -86,6 +86,7 @@ int __bdev_dax_supported(struct super_block *sb, int blocksize) { struct block_device *bdev = sb->s_bdev; struct dax_device *dax_dev; + bool dax_enabled = false; pgoff_t pgoff; int err, id; void *kaddr; @@ -134,14 +135,21 @@ int __bdev_dax_supported(struct super_block *sb, int blocksize) * on being able to do (page_address(pfn_to_page())). */ WARN_ON(IS_ENABLED(CONFIG_ARCH_HAS_PMEM_API)); + dax_enabled = true; } else if (pfn_t_devmap(pfn)) { - /* pass */; - } else { + struct dev_pagemap *pgmap; + + pgmap = get_dev_pagemap(pfn_t_to_pfn(pfn), NULL); + if (pgmap && pgmap->type == MEMORY_DEVICE_FS_DAX) + dax_enabled = true; + put_dev_pagemap(pgmap); + } + + if (!dax_enabled) { pr_debug("VFS (%s): error: dax support not enabled\n", sb->s_id); return -EOPNOTSUPP; } - return 0; } EXPORT_SYMBOL_GPL(__bdev_dax_supported); |