From: Jane Chu <jane.chu@oracle.com> To: david@fromorbit.com, djwong@kernel.org, dan.j.williams@intel.com, hch@infradead.org, vishal.l.verma@intel.com, dave.jiang@intel.com, agk@redhat.com, snitzer@redhat.com, dm-devel@redhat.com, ira.weiny@intel.com, willy@infradead.org, vgoyal@redhat.com, linux-fsdevel@vger.kernel.org, nvdimm@lists.linux.dev, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, x86@kernel.org Subject: [PATCH v7 0/6] DAX poison recovery Date: Tue, 5 Apr 2022 13:47:41 -0600 [thread overview] Message-ID: <20220405194747.2386619-1-jane.chu@oracle.com> (raw) In this series, dax recovery code path is independent of that of normal write. Competing dax recovery threads are serialized, racing read threads are guaranteed not overlapping with the recovery process. In this phase, the recovery granularity is page, future patch will explore recovery in finer granularity. Changelog: v6 -> v7: . incorporated comments from Christoph, and picked up a reviewed-by . add x86@kernel.org per Boris . discovered pmem firmware doesn't reliably handle a request to clear poison over a large range (such as 2M), hence worked around the the feature by limiting the size of the requested range to kernel page size. v5->v6: . per Christoph, move set{clear}_mce_nospec() inline functions out of include/linux/set_memory.h and into arch/x86/mm/pat/set_memory.c file, so that no need to export _set_memory_present(). . per Christoph, ratelimit warning message in pmem_do_write() . per both Christoph and Dan, switch back to adding a flag to dax_direct_access() instead of embedding the flag in kvaddr . suggestions from Christoph for improving code structure and readability . per Dan, add .recovery_write to dev_pagemap.ops instead of adding it to dax_operations, such that, the DM layer doesn't need to be involved explicitly in dax recoovery write . per Dan, is_bad_pmem() takes a seqlock, so no need to place it under recovery_lock. Many thanks for both reviewers! v4->v5: Fixed build errors reported by kernel test robot v3->v4: Rebased to v5.17-rc1-81-g0280e3c58f92 References: v4 https://lore.kernel.org/lkml/20220126211116.860012-1-jane.chu@oracle.com/T/ v3 https://lkml.org/lkml/2022/1/11/900 v2 https://lore.kernel.org/all/20211106011638.2613039-1-jane.chu@oracle.com/ Disussions about marking poisoned page as 'np' https://lore.kernel.org/all/CAPcyv4hrXPb1tASBZUg-GgdVs0OOFKXMXLiHmktg_kFi7YBMyQ@mail.gmail.com/ Jane Chu (6): x86/mm: fix comment x86/mce: relocate set{clear}_mce_nospec() functions mce: fix set_mce_nospec to always unmap the whole page dax: add DAX_RECOVERY flag and .recovery_write dev_pgmap_ops pmem: refactor pmem_clear_poison() pmem: implement pmem_recovery_write() arch/x86/include/asm/set_memory.h | 52 ------- arch/x86/kernel/cpu/mce/core.c | 6 +- arch/x86/mm/pat/set_memory.c | 43 +++++- drivers/dax/super.c | 17 ++- drivers/md/dm-linear.c | 4 +- drivers/md/dm-log-writes.c | 5 +- drivers/md/dm-stripe.c | 4 +- drivers/md/dm-target.c | 2 +- drivers/md/dm-writecache.c | 5 +- drivers/md/dm.c | 5 +- drivers/nvdimm/pmem.c | 224 ++++++++++++++++++++++-------- drivers/nvdimm/pmem.h | 3 +- drivers/s390/block/dcssblk.c | 4 +- fs/dax.c | 24 +++- fs/fuse/dax.c | 4 +- include/linux/dax.h | 11 +- include/linux/device-mapper.h | 2 +- include/linux/memremap.h | 7 + include/linux/set_memory.h | 11 +- tools/testing/nvdimm/pmem-dax.c | 2 +- 20 files changed, 285 insertions(+), 150 deletions(-) base-commit: ae085d7f9365de7da27ab5c0d16b12d51ea7fca9 -- 2.18.4
WARNING: multiple messages have this Message-ID (diff)
From: Jane Chu <jane.chu@oracle.com> To: david@fromorbit.com, djwong@kernel.org, dan.j.williams@intel.com, hch@infradead.org, vishal.l.verma@intel.com, dave.jiang@intel.com, agk@redhat.com, snitzer@redhat.com, dm-devel@redhat.com, ira.weiny@intel.com, willy@infradead.org, vgoyal@redhat.com, linux-fsdevel@vger.kernel.org, nvdimm@lists.linux.dev, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, x86@kernel.org Subject: [dm-devel] [PATCH v7 0/6] DAX poison recovery Date: Tue, 5 Apr 2022 13:47:41 -0600 [thread overview] Message-ID: <20220405194747.2386619-1-jane.chu@oracle.com> (raw) In this series, dax recovery code path is independent of that of normal write. Competing dax recovery threads are serialized, racing read threads are guaranteed not overlapping with the recovery process. In this phase, the recovery granularity is page, future patch will explore recovery in finer granularity. Changelog: v6 -> v7: . incorporated comments from Christoph, and picked up a reviewed-by . add x86@kernel.org per Boris . discovered pmem firmware doesn't reliably handle a request to clear poison over a large range (such as 2M), hence worked around the the feature by limiting the size of the requested range to kernel page size. v5->v6: . per Christoph, move set{clear}_mce_nospec() inline functions out of include/linux/set_memory.h and into arch/x86/mm/pat/set_memory.c file, so that no need to export _set_memory_present(). . per Christoph, ratelimit warning message in pmem_do_write() . per both Christoph and Dan, switch back to adding a flag to dax_direct_access() instead of embedding the flag in kvaddr . suggestions from Christoph for improving code structure and readability . per Dan, add .recovery_write to dev_pagemap.ops instead of adding it to dax_operations, such that, the DM layer doesn't need to be involved explicitly in dax recoovery write . per Dan, is_bad_pmem() takes a seqlock, so no need to place it under recovery_lock. Many thanks for both reviewers! v4->v5: Fixed build errors reported by kernel test robot v3->v4: Rebased to v5.17-rc1-81-g0280e3c58f92 References: v4 https://lore.kernel.org/lkml/20220126211116.860012-1-jane.chu@oracle.com/T/ v3 https://lkml.org/lkml/2022/1/11/900 v2 https://lore.kernel.org/all/20211106011638.2613039-1-jane.chu@oracle.com/ Disussions about marking poisoned page as 'np' https://lore.kernel.org/all/CAPcyv4hrXPb1tASBZUg-GgdVs0OOFKXMXLiHmktg_kFi7YBMyQ@mail.gmail.com/ Jane Chu (6): x86/mm: fix comment x86/mce: relocate set{clear}_mce_nospec() functions mce: fix set_mce_nospec to always unmap the whole page dax: add DAX_RECOVERY flag and .recovery_write dev_pgmap_ops pmem: refactor pmem_clear_poison() pmem: implement pmem_recovery_write() arch/x86/include/asm/set_memory.h | 52 ------- arch/x86/kernel/cpu/mce/core.c | 6 +- arch/x86/mm/pat/set_memory.c | 43 +++++- drivers/dax/super.c | 17 ++- drivers/md/dm-linear.c | 4 +- drivers/md/dm-log-writes.c | 5 +- drivers/md/dm-stripe.c | 4 +- drivers/md/dm-target.c | 2 +- drivers/md/dm-writecache.c | 5 +- drivers/md/dm.c | 5 +- drivers/nvdimm/pmem.c | 224 ++++++++++++++++++++++-------- drivers/nvdimm/pmem.h | 3 +- drivers/s390/block/dcssblk.c | 4 +- fs/dax.c | 24 +++- fs/fuse/dax.c | 4 +- include/linux/dax.h | 11 +- include/linux/device-mapper.h | 2 +- include/linux/memremap.h | 7 + include/linux/set_memory.h | 11 +- tools/testing/nvdimm/pmem-dax.c | 2 +- 20 files changed, 285 insertions(+), 150 deletions(-) base-commit: ae085d7f9365de7da27ab5c0d16b12d51ea7fca9 -- 2.18.4 -- dm-devel mailing list dm-devel@redhat.com https://listman.redhat.com/mailman/listinfo/dm-devel
next reply other threads:[~2022-04-05 19:48 UTC|newest] Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-04-05 19:47 Jane Chu [this message] 2022-04-05 19:47 ` [dm-devel] [PATCH v7 0/6] DAX poison recovery Jane Chu 2022-04-05 19:47 ` [PATCH v7 1/6] x86/mm: fix comment Jane Chu 2022-04-05 19:47 ` [dm-devel] " Jane Chu 2022-04-11 22:07 ` Dan Williams 2022-04-11 22:07 ` [dm-devel] " Dan Williams 2022-04-12 9:53 ` Borislav Petkov 2022-04-12 9:53 ` [dm-devel] " Borislav Petkov 2022-04-14 1:00 ` Jane Chu 2022-04-14 1:00 ` [dm-devel] " Jane Chu 2022-04-14 8:44 ` Borislav Petkov 2022-04-14 8:44 ` [dm-devel] " Borislav Petkov 2022-04-14 21:54 ` Jane Chu 2022-04-14 21:54 ` [dm-devel] " Jane Chu 2022-04-05 19:47 ` [PATCH v7 2/6] x86/mce: relocate set{clear}_mce_nospec() functions Jane Chu 2022-04-05 19:47 ` [dm-devel] " Jane Chu 2022-04-06 5:01 ` Christoph Hellwig 2022-04-06 5:01 ` [dm-devel] " Christoph Hellwig 2022-04-11 22:20 ` Dan Williams 2022-04-11 22:20 ` [dm-devel] " Dan Williams 2022-04-14 0:56 ` Jane Chu 2022-04-14 0:56 ` [dm-devel] " Jane Chu 2022-04-05 19:47 ` [PATCH v7 3/6] mce: fix set_mce_nospec to always unmap the whole page Jane Chu 2022-04-05 19:47 ` [dm-devel] " Jane Chu 2022-04-06 5:02 ` Christoph Hellwig 2022-04-06 5:02 ` [dm-devel] " Christoph Hellwig 2022-04-11 23:27 ` Dan Williams 2022-04-11 23:27 ` [dm-devel] " Dan Williams 2022-04-13 23:36 ` Jane Chu 2022-04-13 23:36 ` [dm-devel] " Jane Chu 2022-04-14 2:32 ` Dan Williams 2022-04-14 2:32 ` [dm-devel] " Dan Williams 2022-04-15 16:18 ` Jane Chu 2022-04-15 16:18 ` [dm-devel] " Jane Chu 2022-04-12 10:07 ` Borislav Petkov 2022-04-12 10:07 ` [dm-devel] " Borislav Petkov 2022-04-13 23:41 ` Jane Chu 2022-04-13 23:41 ` [dm-devel] " Jane Chu 2022-04-05 19:47 ` [PATCH v7 4/6] dax: add DAX_RECOVERY flag and .recovery_write dev_pgmap_ops Jane Chu 2022-04-05 19:47 ` [dm-devel] " Jane Chu 2022-04-06 5:19 ` Christoph Hellwig 2022-04-06 5:19 ` Christoph Hellwig 2022-04-06 17:32 ` [dm-devel] " Jane Chu 2022-04-06 17:32 ` Jane Chu 2022-04-06 17:45 ` Jane Chu 2022-04-06 17:45 ` [dm-devel] " Jane Chu 2022-04-07 5:30 ` Christoph Hellwig 2022-04-07 5:30 ` [dm-devel] " Christoph Hellwig 2022-04-11 23:55 ` Dan Williams 2022-04-11 23:55 ` [dm-devel] " Dan Williams 2022-04-14 0:48 ` Jane Chu 2022-04-14 0:48 ` [dm-devel] " Jane Chu 2022-04-14 0:47 ` Jane Chu 2022-04-14 0:47 ` [dm-devel] " Jane Chu 2022-04-12 0:08 ` Dan Williams 2022-04-12 0:08 ` [dm-devel] " Dan Williams 2022-04-14 0:50 ` Jane Chu 2022-04-14 0:50 ` [dm-devel] " Jane Chu 2022-04-12 4:57 ` Dan Williams 2022-04-12 4:57 ` [dm-devel] " Dan Williams 2022-04-12 5:02 ` Christoph Hellwig 2022-04-12 5:02 ` [dm-devel] " Christoph Hellwig 2022-04-14 0:51 ` Jane Chu 2022-04-14 0:51 ` [dm-devel] " Jane Chu 2022-04-05 19:47 ` [PATCH v7 5/6] pmem: refactor pmem_clear_poison() Jane Chu 2022-04-05 19:47 ` [dm-devel] " Jane Chu 2022-04-06 5:04 ` Christoph Hellwig 2022-04-06 5:04 ` [dm-devel] " Christoph Hellwig 2022-04-06 17:34 ` Jane Chu 2022-04-06 17:34 ` Jane Chu 2022-04-12 4:26 ` Dan Williams 2022-04-12 4:26 ` [dm-devel] " Dan Williams 2022-04-14 0:55 ` Jane Chu 2022-04-14 0:55 ` [dm-devel] " Jane Chu 2022-04-14 2:02 ` Dan Williams 2022-04-14 2:02 ` [dm-devel] " Dan Williams 2022-04-05 19:47 ` [PATCH v7 6/6] pmem: implement pmem_recovery_write() Jane Chu 2022-04-05 19:47 ` [dm-devel] " Jane Chu 2022-04-06 5:21 ` Christoph Hellwig 2022-04-06 5:21 ` [dm-devel] " Christoph Hellwig 2022-04-06 17:33 ` Jane Chu 2022-04-06 17:33 ` Jane Chu
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220405194747.2386619-1-jane.chu@oracle.com \ --to=jane.chu@oracle.com \ --cc=agk@redhat.com \ --cc=dan.j.williams@intel.com \ --cc=dave.jiang@intel.com \ --cc=david@fromorbit.com \ --cc=djwong@kernel.org \ --cc=dm-devel@redhat.com \ --cc=hch@infradead.org \ --cc=ira.weiny@intel.com \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-xfs@vger.kernel.org \ --cc=nvdimm@lists.linux.dev \ --cc=snitzer@redhat.com \ --cc=vgoyal@redhat.com \ --cc=vishal.l.verma@intel.com \ --cc=willy@infradead.org \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.