Re: [PATCH 2/2] block: use DAX for partition table reads

From: Jens Axboe
Date: Fri Jan 29 2016 - 12:46:33 EST


On 01/29/2016 08:18 AM, Dan Williams wrote:
+unsigned char *read_dev_sector(struct block_device *bdev, sector_t n, Sector *p)
+{
struct page *page;

- page = read_mapping_page(mapping, (pgoff_t)(n >> (PAGE_CACHE_SHIFT-9)),
- NULL);
+ /* don't populate page cache for dax capable devices */
+ if (IS_DAX(bdev->bd_inode))
+ page = read_dax_sector(bdev, n);
+ else
+ page = read_pagecache_sector(bdev, n);
+

Fall back to non-dax, if dax fails?

+struct page *read_dax_sector(struct block_device *bdev, sector_t n)
+{
+ struct page *page = __page_cache_alloc(GFP_KERNEL | __GFP_COLD);

Why isn't that just alloc_pages()?

--
Jens Axboe