On 2/3/2022 9:32 PM, Dan Williams wrote: > On Thu, Feb 3, 2022 at 9:17 PM Dan Williams <dan.j.williams@xxxxxxxxx> wrote: >> >> On Thu, Feb 3, 2022 at 5:43 AM Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote: >>> >>> On Wed, Feb 02, 2022 at 09:27:42PM +0000, Jane Chu wrote: >>>> Yeah, I see. Would you suggest a way to pass the indication from >>>> dax_iomap_iter to dax_direct_access that the caller intends the >>>> callee to ignore poison in the range because the caller intends >>>> to do recovery_write? We tried adding a flag to dax_direct_access, and >>>> that wasn't liked if I recall. >>> >>> To me a flag seems cleaner than this magic, but let's wait for Dan to >>> chime in. >> >> So back in November I suggested modifying the kaddr, mainly to avoid >> touching all the dax_direct_access() call sites [1]. However, now >> seeing the code and Chrisoph's comment I think this either wants type >> safety (e.g. 'dax_addr_t *'), or just add a new flag. Given both of >> those options involve touching all dax_direct_access() call sites and >> a @flags operation is more extensible if any other scenarios arrive >> lets go ahead and plumb a flag and skip the magic. > > Just to be clear we are talking about a flow like: > > flags = 0; > rc = dax_direct_access(..., &kaddr, flags, ...); > if (unlikely(rc)) { > flags |= DAX_RECOVERY; > dax_direct_access(..., &kaddr, flags, ...); > return dax_recovery_{read,write}(..., kaddr, ...); > } > return copy_{mc_to_iter,from_iter_flushcache}(...); Okay, will go with a flag. thanks! -jane