On 2/3/2022 10:21 PM, Dan Williams wrote:
> On Fri, Jan 28, 2022 at 1:32 PM Jane Chu wrote:
>>
>> pmem_recovery_write() consists of clearing poison via DSM,
>> clearing page HWPoison bit, re-state _PAGE_PRESENT bit,
>> cacheflush, write, and finally clearing bad-block record.
>>
>> A competing pre
On Fri, Jan 28, 2022 at 1:32 PM Jane Chu wrote:
>
> pmem_recovery_write() consists of clearing poison via DSM,
> clearing page HWPoison bit, re-state _PAGE_PRESENT bit,
> cacheflush, write, and finally clearing bad-block record.
>
> A competing pread thread is held off during recovery write
> by t
On 2/2/2022 5:43 AM, Christoph Hellwig wrote:
>> @@ -257,10 +263,15 @@ static int pmem_rw_page(struct block_device *bdev,
>> sector_t sector,
>> __weak long __pmem_direct_access(struct pmem_device *pmem, pgoff_t pgoff,
>> long nr_pages, void **kaddr, pfn_t *pfn)
>> {
>> +bool
> @@ -257,10 +263,15 @@ static int pmem_rw_page(struct block_device *bdev,
> sector_t sector,
> __weak long __pmem_direct_access(struct pmem_device *pmem, pgoff_t pgoff,
> long nr_pages, void **kaddr, pfn_t *pfn)
> {
> + bool bad_pmem;
> + bool do_recovery = false;
>
pmem_recovery_write() consists of clearing poison via DSM,
clearing page HWPoison bit, re-state _PAGE_PRESENT bit,
cacheflush, write, and finally clearing bad-block record.
A competing pread thread is held off during recovery write
by the presence of bad-block record. A competing recovery_write
th