> -----Original Message----- > From: Matthew Wilcox <willy@xxxxxxxxxxxxx> > Sent: Wednesday, April 7, 2021 7:14 PM > To: Ruan, Shiyang/阮 世阳 <ruansy.fnst@xxxxxxxxxxx> > Cc: linux-kernel@xxxxxxxxxxxxxxx; linux-xfs@xxxxxxxxxxxxxxx; > linux-nvdimm@xxxxxxxxxxxx; linux-fsdevel@xxxxxxxxxxxxxxx; > darrick.wong@xxxxxxxxxx; dan.j.williams@xxxxxxxxx; jack@xxxxxxx; > viro@xxxxxxxxxxxxxxxxxx; linux-btrfs@xxxxxxxxxxxxxxx; david@xxxxxxxxxxxxx; > hch@xxxxxx; rgoldwyn@xxxxxxx; Ritesh Harjani <riteshh@xxxxxxxxx> > 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.