mirror of
https://github.com/hardkernel/linux.git
synced 2026-04-28 00:11:52 +09:00
Merge tag 'dax-fixes-4.20-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
Pull dax fixes from Dan Williams:
"The last of the known regression fixes and fallout from the Xarray
conversion of the filesystem-dax implementation.
On the path to debugging why the dax memory-failure injection test
started failing after the Xarray conversion a couple more fixes for
the dax_lock_mapping_entry(), now called dax_lock_page(), surfaced.
Those plus the bug that started the hunt are now addressed. These
patches have appeared in a -next release with no issues reported.
Note the touches to mm/memory-failure.c are just the conversion to the
new function signature for dax_lock_page().
Summary:
- Fix the Xarray conversion of fsdax to properly handle
dax_lock_mapping_entry() in the presense of pmd entries
- Fix inode destruction racing a new lock request"
* tag 'dax-fixes-4.20-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
dax: Fix unlock mismatch with updated API
dax: Don't access a freed inode
dax: Check page->mapping isn't NULL
This commit is contained in:
@@ -7,6 +7,8 @@
|
||||
#include <linux/radix-tree.h>
|
||||
#include <asm/pgtable.h>
|
||||
|
||||
typedef unsigned long dax_entry_t;
|
||||
|
||||
struct iomap_ops;
|
||||
struct dax_device;
|
||||
struct dax_operations {
|
||||
@@ -88,8 +90,8 @@ int dax_writeback_mapping_range(struct address_space *mapping,
|
||||
struct block_device *bdev, struct writeback_control *wbc);
|
||||
|
||||
struct page *dax_layout_busy_page(struct address_space *mapping);
|
||||
bool dax_lock_mapping_entry(struct page *page);
|
||||
void dax_unlock_mapping_entry(struct page *page);
|
||||
dax_entry_t dax_lock_page(struct page *page);
|
||||
void dax_unlock_page(struct page *page, dax_entry_t cookie);
|
||||
#else
|
||||
static inline bool bdev_dax_supported(struct block_device *bdev,
|
||||
int blocksize)
|
||||
@@ -122,14 +124,14 @@ static inline int dax_writeback_mapping_range(struct address_space *mapping,
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static inline bool dax_lock_mapping_entry(struct page *page)
|
||||
static inline dax_entry_t dax_lock_page(struct page *page)
|
||||
{
|
||||
if (IS_DAX(page->mapping->host))
|
||||
return true;
|
||||
return false;
|
||||
return ~0UL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void dax_unlock_mapping_entry(struct page *page)
|
||||
static inline void dax_unlock_page(struct page *page, dax_entry_t cookie)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user