Skip to content

Commit

Permalink
dax: Inline dax_pmd_insert_mapping() into the callsite
Browse files Browse the repository at this point in the history
dax_pmd_insert_mapping() has only one callsite and we will need to
further fine tune what it does for synchronous faults. Just inline it
into the callsite so that we don't have to pass awkward bools around.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
  • Loading branch information
Jan Kara authored and Dan Williams committed Nov 3, 2017
1 parent 1b5a1cb commit 302a5e3
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 29 deletions.
47 changes: 19 additions & 28 deletions fs/dax.c
Original file line number Diff line number Diff line change
Expand Up @@ -1235,33 +1235,11 @@ static int dax_iomap_pte_fault(struct vm_fault *vmf,
}

#ifdef CONFIG_FS_DAX_PMD
static int dax_pmd_insert_mapping(struct vm_fault *vmf, struct iomap *iomap,
loff_t pos, void *entry)
{
struct address_space *mapping = vmf->vma->vm_file->f_mapping;
const sector_t sector = dax_iomap_sector(iomap, pos);
struct inode *inode = mapping->host;
void *ret = NULL;
pfn_t pfn = {};
int rc;

rc = dax_iomap_pfn(iomap, pos, PMD_SIZE, &pfn);
if (rc < 0)
goto fallback;

ret = dax_insert_mapping_entry(mapping, vmf, entry, sector,
RADIX_DAX_PMD);
if (IS_ERR(ret))
goto fallback;

trace_dax_pmd_insert_mapping(inode, vmf, PMD_SIZE, pfn, ret);
return vmf_insert_pfn_pmd(vmf->vma, vmf->address, vmf->pmd,
pfn, vmf->flags & FAULT_FLAG_WRITE);

fallback:
trace_dax_pmd_insert_mapping_fallback(inode, vmf, PMD_SIZE, pfn, ret);
return VM_FAULT_FALLBACK;
}
/*
* The 'colour' (ie low bits) within a PMD of a page offset. This comes up
* more often than one might expect in the below functions.
*/
#define PG_PMD_COLOUR ((PMD_SIZE >> PAGE_SHIFT) - 1)

static int dax_pmd_load_hole(struct vm_fault *vmf, struct iomap *iomap,
void *entry)
Expand Down Expand Up @@ -1317,6 +1295,7 @@ static int dax_iomap_pmd_fault(struct vm_fault *vmf,
void *entry;
loff_t pos;
int error;
pfn_t pfn;

/*
* Check whether offset isn't beyond end of file now. Caller is
Expand Down Expand Up @@ -1394,7 +1373,19 @@ static int dax_iomap_pmd_fault(struct vm_fault *vmf,

switch (iomap.type) {
case IOMAP_MAPPED:
result = dax_pmd_insert_mapping(vmf, &iomap, pos, entry);
error = dax_iomap_pfn(&iomap, pos, PMD_SIZE, &pfn);
if (error < 0)
goto finish_iomap;

entry = dax_insert_mapping_entry(mapping, vmf, entry,
dax_iomap_sector(&iomap, pos),
RADIX_DAX_PMD);
if (IS_ERR(entry))
goto finish_iomap;

trace_dax_pmd_insert_mapping(inode, vmf, PMD_SIZE, pfn, entry);
result = vmf_insert_pfn_pmd(vma, vmf->address, vmf->pmd, pfn,
write);
break;
case IOMAP_UNWRITTEN:
case IOMAP_HOLE:
Expand Down
1 change: 0 additions & 1 deletion include/trace/events/fs_dax.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,6 @@ DEFINE_EVENT(dax_pmd_insert_mapping_class, name, \
TP_ARGS(inode, vmf, length, pfn, radix_entry))

DEFINE_PMD_INSERT_MAPPING_EVENT(dax_pmd_insert_mapping);
DEFINE_PMD_INSERT_MAPPING_EVENT(dax_pmd_insert_mapping_fallback);

DECLARE_EVENT_CLASS(dax_pte_fault_class,
TP_PROTO(struct inode *inode, struct vm_fault *vmf, int result),
Expand Down

0 comments on commit 302a5e3

Please sign in to comment.