mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 07:51:16 -04:00
fsdax: introduce dax_lock_mapping_entry()
The current dax_lock_page() locks dax entry by obtaining mapping and index in page. To support 1-to-N RMAP in NVDIMM, we need a new function to lock a specific dax entry corresponding to this file's mapping,index. And output the page corresponding to the specific dax entry for caller use. Link: https://lkml.kernel.org/r/20220603053738.1218681-5-ruansy.fnst@fujitsu.com Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Dan Williams <dan.j.wiliams@intel.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Dave Chinner <david@fromorbit.com> Cc: Goldwyn Rodrigues <rgoldwyn@suse.com> Cc: Goldwyn Rodrigues <rgoldwyn@suse.de> Cc: Jane Chu <jane.chu@oracle.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Miaohe Lin <linmiaohe@huawei.com> Cc: Naoya Horiguchi <naoya.horiguchi@nec.com> Cc: Ritesh Harjani <riteshh@linux.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
@@ -161,6 +161,10 @@ struct page *dax_layout_busy_page(struct address_space *mapping);
|
||||
struct page *dax_layout_busy_page_range(struct address_space *mapping, loff_t start, loff_t end);
|
||||
dax_entry_t dax_lock_page(struct page *page);
|
||||
void dax_unlock_page(struct page *page, dax_entry_t cookie);
|
||||
dax_entry_t dax_lock_mapping_entry(struct address_space *mapping,
|
||||
unsigned long index, struct page **page);
|
||||
void dax_unlock_mapping_entry(struct address_space *mapping,
|
||||
unsigned long index, dax_entry_t cookie);
|
||||
#else
|
||||
static inline struct page *dax_layout_busy_page(struct address_space *mapping)
|
||||
{
|
||||
@@ -188,6 +192,17 @@ static inline dax_entry_t dax_lock_page(struct page *page)
|
||||
static inline void dax_unlock_page(struct page *page, dax_entry_t cookie)
|
||||
{
|
||||
}
|
||||
|
||||
static inline dax_entry_t dax_lock_mapping_entry(struct address_space *mapping,
|
||||
unsigned long index, struct page **page)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void dax_unlock_mapping_entry(struct address_space *mapping,
|
||||
unsigned long index, dax_entry_t cookie)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
int dax_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero,
|
||||
|
||||
Reference in New Issue
Block a user