> -----Original Message----- > From: Matthew Wilcox <wi...@infradead.org> > Sent: Wednesday, April 7, 2021 7:14 PM > To: Ruan, Shiyang/阮 世阳 <ruansy.f...@fujitsu.com> > Cc: linux-kernel@vger.kernel.org; linux-...@vger.kernel.org; > linux-nvd...@lists.01.org; linux-fsde...@vger.kernel.org; > darrick.w...@oracle.com; dan.j.willi...@intel.com; j...@suse.cz; > v...@zeniv.linux.org.uk; linux-bt...@vger.kernel.org; da...@fromorbit.com; > h...@lst.de; rgold...@suse.de; Ritesh Harjani <rite...@gmail.com> > Subject: Re: [PATCH 1/3] fsdax: Factor helpers to simplify dax fault code > > On Wed, Apr 07, 2021 at 02:32:05PM +0800, Shiyang Ruan wrote: > > +static int dax_fault_cow_page(struct vm_fault *vmf, struct iomap *iomap, > > + loff_t pos, vm_fault_t *ret) > > +{ > > + int error = 0; > > + unsigned long vaddr = vmf->address; > > + sector_t sector = dax_iomap_sector(iomap, pos); > > + > > + switch (iomap->type) { > > + case IOMAP_HOLE: > > + case IOMAP_UNWRITTEN: > > + clear_user_highpage(vmf->cow_page, vaddr); > > + break; > > + case IOMAP_MAPPED: > > + error = copy_cow_page_dax(iomap->bdev, iomap->dax_dev, > > + sector, vmf->cow_page, vaddr); > > + break; > > + default: > > + WARN_ON_ONCE(1); > > + error = -EIO; > > + break; > > + } > > + > > + if (error) > > + return error; > > + > > + __SetPageUptodate(vmf->cow_page); > > + *ret = finish_fault(vmf); > > + if (!*ret) > > + *ret = VM_FAULT_DONE_COW; > > + return 0; > > +} > ... > > > + error = dax_fault_cow_page(vmf, &iomap, pos, &ret); > > if (error) > > + ret = dax_fault_return(error); > > goto finish_iomap; > > This seems unnecessarily complex. Why not return the vm_fault_t instead of > returning the errno and then converting it?
Yes, I'll fix it. -- Thanks, Ruan Shiyang.