On Sun, Oct 17, 2021 at 9:41 PM Christoph Hellwig <hch@xxxxxx> wrote: > > Drivers that register a dax_dev should make sure it works, no need > to double check from the file system. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > drivers/dax/super.c | 49 +-------------------------------------------- > 1 file changed, 1 insertion(+), 48 deletions(-) > > diff --git a/drivers/dax/super.c b/drivers/dax/super.c > index 9383c11b21853..04fc680542e8d 100644 > --- a/drivers/dax/super.c > +++ b/drivers/dax/super.c > @@ -107,13 +107,9 @@ bool generic_fsdax_supported(struct dax_device *dax_dev, > struct block_device *bdev, int blocksize, sector_t start, > sector_t sectors) > { > - bool dax_enabled = false; > pgoff_t pgoff, pgoff_end; > - void *kaddr, *end_kaddr; > - pfn_t pfn, end_pfn; > sector_t last_page; > - long len, len2; > - int err, id; > + int err; > > if (blocksize != PAGE_SIZE) { > pr_info("%pg: error: unsupported blocksize for dax\n", bdev); > @@ -138,49 +134,6 @@ bool generic_fsdax_supported(struct dax_device *dax_dev, > return false; > } > > - id = dax_read_lock(); > - len = dax_direct_access(dax_dev, pgoff, 1, &kaddr, &pfn); > - len2 = dax_direct_access(dax_dev, pgoff_end, 1, &end_kaddr, &end_pfn); > - > - if (len < 1 || len2 < 1) { > - pr_info("%pg: error: dax access failed (%ld)\n", > - bdev, len < 1 ? len : len2); > - dax_read_unlock(id); > - return false; > - } > - > - if (IS_ENABLED(CONFIG_FS_DAX_LIMITED) && pfn_t_special(pfn)) { > - /* > - * An arch that has enabled the pmem api should also > - * have its drivers support pfn_t_devmap() > - * > - * This is a developer warning and should not trigger in > - * production. dax_flush() will crash since it depends > - * 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) && pfn_t_devmap(end_pfn)) { > - struct dev_pagemap *pgmap, *end_pgmap; > - > - pgmap = get_dev_pagemap(pfn_t_to_pfn(pfn), NULL); > - end_pgmap = get_dev_pagemap(pfn_t_to_pfn(end_pfn), NULL); > - if (pgmap && pgmap == end_pgmap && pgmap->type == MEMORY_DEVICE_FS_DAX > - && pfn_t_to_page(pfn)->pgmap == pgmap > - && pfn_t_to_page(end_pfn)->pgmap == pgmap > - && pfn_t_to_pfn(pfn) == PHYS_PFN(__pa(kaddr)) > - && pfn_t_to_pfn(end_pfn) == PHYS_PFN(__pa(end_kaddr))) This is effectively a self-test for a regression that was found while manipulating the 'struct page' memmap metadata reservation for PMEM namespaces. I guess it's just serving as a security-blanket now and I should find a way to move it out to a self-test. I'll take a look. > - dax_enabled = true; > - put_dev_pagemap(pgmap); > - put_dev_pagemap(end_pgmap); > - > - } > - dax_read_unlock(id); > - > - if (!dax_enabled) { > - pr_info("%pg: error: dax support not enabled\n", bdev); > - return false; > - } > return true; > } > EXPORT_SYMBOL_GPL(generic_fsdax_supported); > -- > 2.30.2 >