From: Ingo Molnar <mingo@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Mike Galbraith <efault@gmx.de>, Oleg Nesterov <oleg@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH 38/48] sched/headers: Prepare to use <linux/rcuupdate.h> instead of <linux/rculist.h> in <linux/sched.h>
Date: Wed, 8 Feb 2017 19:39:40 +0100 [thread overview]
Message-ID: <1486579190-11717-39-git-send-email-mingo@kernel.org> (raw)
In-Reply-To: <1486579190-11717-1-git-send-email-mingo@kernel.org>
We don't actually need the full rculist.h header in sched.h anymore,
we will be able to include the smaller rcupdate.h header instead.
But first update code that relied on the implicit header inclusion.
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/powerpc/kvm/book3s_mmu_hpte.c | 1 +
arch/x86/kvm/irq_comm.c | 2 ++
arch/x86/kvm/page_track.c | 2 ++
drivers/md/bcache/btree.c | 2 ++
drivers/misc/vmw_vmci/vmci_event.c | 1 +
drivers/nvme/target/admin-cmd.c | 2 ++
drivers/nvme/target/core.c | 2 ++
drivers/s390/cio/qdio_thinint.c | 2 ++
drivers/scsi/libfc/fc_disc.c | 2 ++
drivers/scsi/libfc/fc_rport.c | 2 ++
include/linux/dmar.h | 2 +-
include/linux/pid.h | 2 +-
include/linux/rhashtable.h | 2 +-
include/linux/sched/signal.h | 1 +
include/net/bluetooth/hci_core.h | 2 ++
kernel/trace/trace_events_hist.c | 1 +
kernel/trace/trace_events_trigger.c | 1 +
kernel/trace/trace_kprobe.c | 1 +
kernel/trace/trace_uprobe.c | 1 +
lib/bug.c | 1 +
lib/rhashtable.c | 1 +
net/mac80211/mesh_plink.c | 2 ++
net/mac802154/llsec.c | 2 ++
security/apparmor/policy.c | 1 +
security/tomoyo/domain.c | 2 ++
security/tomoyo/group.c | 2 ++
security/tomoyo/util.c | 2 ++
27 files changed, 41 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/kvm/book3s_mmu_hpte.c b/arch/powerpc/kvm/book3s_mmu_hpte.c
index 5a1ab1250a05..905a934c1ef4 100644
--- a/arch/powerpc/kvm/book3s_mmu_hpte.c
+++ b/arch/powerpc/kvm/book3s_mmu_hpte.c
@@ -21,6 +21,7 @@
#include <linux/kvm_host.h>
#include <linux/hash.h>
#include <linux/slab.h>
+#include <linux/rculist.h>
#include <asm/kvm_ppc.h>
#include <asm/kvm_book3s.h>
diff --git a/arch/x86/kvm/irq_comm.c b/arch/x86/kvm/irq_comm.c
index 6c0191615f23..a955f906c729 100644
--- a/arch/x86/kvm/irq_comm.c
+++ b/arch/x86/kvm/irq_comm.c
@@ -23,6 +23,8 @@
#include <linux/kvm_host.h>
#include <linux/slab.h>
#include <linux/export.h>
+#include <linux/rculist.h>
+
#include <trace/events/kvm.h>
#include <asm/msidef.h>
diff --git a/arch/x86/kvm/page_track.c b/arch/x86/kvm/page_track.c
index 4a1c13eaa518..37942e419c32 100644
--- a/arch/x86/kvm/page_track.c
+++ b/arch/x86/kvm/page_track.c
@@ -14,6 +14,8 @@
*/
#include <linux/kvm_host.h>
+#include <linux/rculist.h>
+
#include <asm/kvm_host.h>
#include <asm/kvm_page_track.h>
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
index 384559af310e..450d0e848ae4 100644
--- a/drivers/md/bcache/btree.c
+++ b/drivers/md/bcache/btree.c
@@ -33,6 +33,8 @@
#include <linux/random.h>
#include <linux/rcupdate.h>
#include <linux/sched/clock.h>
+#include <linux/rculist.h>
+
#include <trace/events/bcache.h>
/*
diff --git a/drivers/misc/vmw_vmci/vmci_event.c b/drivers/misc/vmw_vmci/vmci_event.c
index 8449516d6ac6..84258a48029d 100644
--- a/drivers/misc/vmw_vmci/vmci_event.c
+++ b/drivers/misc/vmw_vmci/vmci_event.c
@@ -19,6 +19,7 @@
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/slab.h>
+#include <linux/rculist.h>
#include "vmci_driver.h"
#include "vmci_event.h"
diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c
index 95ae52390478..3fca44d7c42a 100644
--- a/drivers/nvme/target/admin-cmd.c
+++ b/drivers/nvme/target/admin-cmd.c
@@ -13,6 +13,8 @@
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>
+#include <linux/rculist.h>
+
#include <generated/utsrelease.h>
#include <asm/unaligned.h>
#include "nvmet.h"
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index fc5ba2f9e15f..966031dc48dc 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -14,6 +14,8 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>
#include <linux/random.h>
+#include <linux/rculist.h>
+
#include "nvmet.h"
static struct nvmet_fabrics_ops *nvmet_transports[NVMF_TRTYPE_MAX];
diff --git a/drivers/s390/cio/qdio_thinint.c b/drivers/s390/cio/qdio_thinint.c
index 5d06253c2a7a..2f451123e556 100644
--- a/drivers/s390/cio/qdio_thinint.c
+++ b/drivers/s390/cio/qdio_thinint.c
@@ -8,6 +8,8 @@
#include <linux/slab.h>
#include <linux/kernel_stat.h>
#include <linux/atomic.h>
+#include <linux/rculist.h>
+
#include <asm/debug.h>
#include <asm/qdio.h>
#include <asm/airq.h>
diff --git a/drivers/scsi/libfc/fc_disc.c b/drivers/scsi/libfc/fc_disc.c
index 6103231104da..fd501f8dbb11 100644
--- a/drivers/scsi/libfc/fc_disc.c
+++ b/drivers/scsi/libfc/fc_disc.c
@@ -36,6 +36,8 @@
#include <linux/slab.h>
#include <linux/err.h>
#include <linux/export.h>
+#include <linux/rculist.h>
+
#include <asm/unaligned.h>
#include <scsi/fc/fc_gs.h>
diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c
index c991f3b822f8..b44c3136eb51 100644
--- a/drivers/scsi/libfc/fc_rport.c
+++ b/drivers/scsi/libfc/fc_rport.c
@@ -65,6 +65,8 @@
#include <linux/timer.h>
#include <linux/workqueue.h>
#include <linux/export.h>
+#include <linux/rculist.h>
+
#include <asm/unaligned.h>
#include <scsi/libfc.h>
diff --git a/include/linux/dmar.h b/include/linux/dmar.h
index e9bc9292bd3a..e8ffba1052d3 100644
--- a/include/linux/dmar.h
+++ b/include/linux/dmar.h
@@ -26,7 +26,7 @@
#include <linux/msi.h>
#include <linux/irqreturn.h>
#include <linux/rwsem.h>
-#include <linux/rcupdate.h>
+#include <linux/rculist.h>
struct acpi_dmar_header;
diff --git a/include/linux/pid.h b/include/linux/pid.h
index 23705a53abba..0e4d48112196 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -1,7 +1,7 @@
#ifndef _LINUX_PID_H
#define _LINUX_PID_H
-#include <linux/rcupdate.h>
+#include <linux/rculist.h>
enum pid_type
{
diff --git a/include/linux/rhashtable.h b/include/linux/rhashtable.h
index 5c132d3188be..0257d2066bcc 100644
--- a/include/linux/rhashtable.h
+++ b/include/linux/rhashtable.h
@@ -25,7 +25,7 @@
#include <linux/list_nulls.h>
#include <linux/workqueue.h>
#include <linux/mutex.h>
-#include <linux/rcupdate.h>
+#include <linux/rculist.h>
/*
* The end of the chain is marked with a special nulls marks which has
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h
index 320eca0446cd..c6958a53fef3 100644
--- a/include/linux/sched/signal.h
+++ b/include/linux/sched/signal.h
@@ -1,6 +1,7 @@
#ifndef _LINUX_SCHED_SIGNAL_H
#define _LINUX_SCHED_SIGNAL_H
+#include <linux/rculist.h>
#include <linux/signal.h>
#include <linux/cred.h>
#include <linux/sched.h>
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index 90708f68cc02..95ccc1eef558 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -26,6 +26,8 @@
#define __HCI_CORE_H
#include <linux/leds.h>
+#include <linux/rculist.h>
+
#include <net/bluetooth/hci.h>
#include <net/bluetooth/hci_sock.h>
diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
index f3a960ed75a1..1c21d0e2a145 100644
--- a/kernel/trace/trace_events_hist.c
+++ b/kernel/trace/trace_events_hist.c
@@ -19,6 +19,7 @@
#include <linux/mutex.h>
#include <linux/slab.h>
#include <linux/stacktrace.h>
+#include <linux/rculist.h>
#include "tracing_map.h"
#include "trace.h"
diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c
index 6721a1e89f39..f2ac9d44f6c4 100644
--- a/kernel/trace/trace_events_trigger.c
+++ b/kernel/trace/trace_events_trigger.c
@@ -22,6 +22,7 @@
#include <linux/ctype.h>
#include <linux/mutex.h>
#include <linux/slab.h>
+#include <linux/rculist.h>
#include "trace.h"
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index a133ecd741e4..3c8f2373aee6 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -19,6 +19,7 @@
#include <linux/module.h>
#include <linux/uaccess.h>
+#include <linux/rculist.h>
#include "trace_probe.h"
diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c
index 0913693caf6e..e5445ab5b7e2 100644
--- a/kernel/trace/trace_uprobe.c
+++ b/kernel/trace/trace_uprobe.c
@@ -23,6 +23,7 @@
#include <linux/uprobes.h>
#include <linux/namei.h>
#include <linux/string.h>
+#include <linux/rculist.h>
#include "trace_probe.h"
diff --git a/lib/bug.c b/lib/bug.c
index bc3656e944d2..06edbbef0623 100644
--- a/lib/bug.c
+++ b/lib/bug.c
@@ -45,6 +45,7 @@
#include <linux/kernel.h>
#include <linux/bug.h>
#include <linux/sched.h>
+#include <linux/rculist.h>
extern const struct bug_entry __start___bug_table[], __stop___bug_table[];
diff --git a/lib/rhashtable.c b/lib/rhashtable.c
index 32d0ad058380..b90f9547e5ef 100644
--- a/lib/rhashtable.c
+++ b/lib/rhashtable.c
@@ -19,6 +19,7 @@
#include <linux/init.h>
#include <linux/log2.h>
#include <linux/sched.h>
+#include <linux/rculist.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/mm.h>
diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c
index 7fcdcf622655..b4d3a9625326 100644
--- a/net/mac80211/mesh_plink.c
+++ b/net/mac80211/mesh_plink.c
@@ -9,6 +9,8 @@
#include <linux/gfp.h>
#include <linux/kernel.h>
#include <linux/random.h>
+#include <linux/rculist.h>
+
#include "ieee80211_i.h"
#include "rate.h"
#include "mesh.h"
diff --git a/net/mac802154/llsec.c b/net/mac802154/llsec.c
index 6a3e1c2181d3..1e1c9b20bab7 100644
--- a/net/mac802154/llsec.c
+++ b/net/mac802154/llsec.c
@@ -18,6 +18,8 @@
#include <linux/bug.h>
#include <linux/completion.h>
#include <linux/ieee802154.h>
+#include <linux/rculist.h>
+
#include <crypto/aead.h>
#include <crypto/skcipher.h>
diff --git a/security/apparmor/policy.c b/security/apparmor/policy.c
index ac4092e191b1..57d08b6b7272 100644
--- a/security/apparmor/policy.c
+++ b/security/apparmor/policy.c
@@ -77,6 +77,7 @@
#include <linux/spinlock.h>
#include <linux/string.h>
#include <linux/cred.h>
+#include <linux/rculist.h>
#include "include/apparmor.h"
#include "include/capability.h"
diff --git a/security/tomoyo/domain.c b/security/tomoyo/domain.c
index 838ffa78cfda..00d223e9fb37 100644
--- a/security/tomoyo/domain.c
+++ b/security/tomoyo/domain.c
@@ -5,8 +5,10 @@
*/
#include "common.h"
+
#include <linux/binfmts.h>
#include <linux/slab.h>
+#include <linux/rculist.h>
/* Variables definitions.*/
diff --git a/security/tomoyo/group.c b/security/tomoyo/group.c
index 50092534ec54..944ad77d8fba 100644
--- a/security/tomoyo/group.c
+++ b/security/tomoyo/group.c
@@ -5,6 +5,8 @@
*/
#include <linux/slab.h>
+#include <linux/rculist.h>
+
#include "common.h"
/**
diff --git a/security/tomoyo/util.c b/security/tomoyo/util.c
index 5fe3679137ae..848317fea704 100644
--- a/security/tomoyo/util.c
+++ b/security/tomoyo/util.c
@@ -5,6 +5,8 @@
*/
#include <linux/slab.h>
+#include <linux/rculist.h>
+
#include "common.h"
/* Lock for protecting policy. */
--
2.7.4
next prev parent reply other threads:[~2017-02-08 19:10 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-08 18:39 [PATCH 00/48] sched.h modernization -v2, phase #2: "Prepare header dependencies" Ingo Molnar
2017-02-08 18:39 ` [PATCH 01/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/topology.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 02/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/idle.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 03/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/wake_q.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 04/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/clock.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 05/48] sched/headers: Prepare for new header dependencies before moving code to <uapi/linux/sched/types.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 06/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/loadavg.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 07/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/autogroup.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 08/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/mm.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 09/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/coredump.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 10/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/signal.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 11/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/user.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 12/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/nmi.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 13/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/cpufreq.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 14/48] sched/headers: Prepare for new header dependencies before moving more code to <linux/sched/mm.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 15/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/numa_balancing.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 16/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/jobctl.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 17/48] sched/headers: Prepare header dependency changes, move the <asm/paravirt.h> include to kernel/sched/sched.h Ingo Molnar
2017-02-08 18:39 ` [PATCH 18/48] sched/headers: Prepare to remove <linux/cred.h> inclusion from <linux/sched.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 19/48] sched/headers: Prepare for the removal of <asm/ptrace.h> " Ingo Molnar
2017-02-08 18:39 ` [PATCH 20/48] sched/headers: Prepare for the removal of <linux/rtmutex.h> " Ingo Molnar
2017-02-08 18:39 ` [PATCH 21/48] sched/headers: Prepare for the removal of various unrelated headers " Ingo Molnar
2017-02-08 18:39 ` [PATCH 22/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/xacct.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 23/48] sched/headers: Prepare to move signal wakeup & sigpending methods from <linux/sched.h> into <linux/sched/signal.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 24/48] sched/headers: Prepare to move the memalloc_noio_*() APIs to <linux/sched/mm.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 25/48] sched/headers: Prepare to remove the <linux/gfp.h> include from <linux/sched.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 26/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/stat.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 27/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/nohz.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 28/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/debug.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 29/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/hotplug.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 30/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 31/48] sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 32/48] sched/headers: Prepare to move the 'root_task_group' declaration to <linux/sched/autogroup.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 33/48] signals: Prepare to split out <linux/signal_types.h> from <linux/signal.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 34/48] sched/headers: Prepare for the reduction of <linux/sched.h>'s signal API dependency Ingo Molnar
2017-02-08 18:39 ` [PATCH 35/48] mm/headers, sched/headers: Prepare to split <linux/mm_types_task.h> out of <linux/mm_types.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 36/48] sched/headers: Prepare to remove the <linux/mm_types.h> dependency from <linux/sched.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 37/48] sched/headers: Prepare to move 'init_task' and 'init_thread_union' from <linux/sched.h> to <linux/sched/task.h> Ingo Molnar
2017-02-08 18:39 ` Ingo Molnar [this message]
2017-02-08 18:39 ` [PATCH 39/48] sched/headers: Prepare to move the task_lock()/unlock() APIs " Ingo Molnar
2017-02-08 18:39 ` [PATCH 40/48] sched/headers: Prepare to move cputime functionality from <linux/sched.h> into <linux/sched/cputime.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 41/48] sched/headers: Prepare to move sched_info_on() and force_schedstat_enabled() from <linux/sched.h> to <linux/sched/stat.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 42/48] sched/headers, vfs/execve: Prepare to move the do_execve*() prototypes from <linux/sched.h> to <linux/binfmts.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 43/48] sched/headers: Prepare to move kstack_end() from <linux/sched.h> to <linux/sched/task_stack.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 44/48] sched/headers: Prepare to move exit_files() and exit_itimers() from <linux/sched.h> to <linux/sched/task.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 45/48] sched/headers: Prepare to move _init() prototypes from <linux/sched.h> to <linux/sched/init.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 46/48] sched/headers: Prepare to move the get_task_struct()/put_task_struct() and related APIs from <linux/sched.h> to <linux/sched/task.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 47/48] sched/headers: Prepare to remove the <linux/magic.h> include from <linux/sched/task_stack.h> Ingo Molnar
2017-02-08 18:39 ` [PATCH 48/48] sched/headers: Prepare to remove spurious <linux/sched.h> inclusion dependencies Ingo Molnar
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=1486579190-11717-39-git-send-email-mingo@kernel.org \
--to=mingo@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox