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

Reply via email to