linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	Konstantin Khlebnikov <khlebnikov@yandex-team.ru>,
	Jan Kara <jack@suse.cz>, Tejun Heo <tj@kernel.org>,
	Jens Axboe <axboe@kernel.dk>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 4.19 124/125] mm/filemap.c: dont initiate writeback if mapping has no dirty pages
Date: Mon, 11 Nov 2019 19:29:23 +0100	[thread overview]
Message-ID: <20191111181456.247399096@linuxfoundation.org> (raw)
In-Reply-To: <20191111181438.945353076@linuxfoundation.org>

From: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>

commit c3aab9a0bd91b696a852169479b7db1ece6cbf8c upstream.

Functions like filemap_write_and_wait_range() should do nothing if inode
has no dirty pages or pages currently under writeback.  But they anyway
construct struct writeback_control and this does some atomic operations if
CONFIG_CGROUP_WRITEBACK=y - on fast path it locks inode->i_lock and
updates state of writeback ownership, on slow path might be more work.
Current this path is safely avoided only when inode mapping has no pages.

For example generic_file_read_iter() calls filemap_write_and_wait_range()
at each O_DIRECT read - pretty hot path.

This patch skips starting new writeback if mapping has no dirty tags set.
If writeback is already in progress filemap_write_and_wait_range() will
wait for it.

Link: http://lkml.kernel.org/r/156378816804.1087.8607636317907921438.stgit@buzz
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Reviewed-by: Jan Kara <jack@suse.cz>
Cc: Tejun Heo <tj@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 mm/filemap.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -438,7 +438,8 @@ int __filemap_fdatawrite_range(struct ad
 		.range_end = end,
 	};
 
-	if (!mapping_cap_writeback_dirty(mapping))
+	if (!mapping_cap_writeback_dirty(mapping) ||
+	    !mapping_tagged(mapping, PAGECACHE_TAG_DIRTY))
 		return 0;
 
 	wbc_attach_fdatawrite_inode(&wbc, mapping->host);



  parent reply	other threads:[~2019-11-11 18:47 UTC|newest]

Thread overview: 144+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-11 18:27 [PATCH 4.19 000/125] 4.19.84-stable review Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 001/125] bonding: fix state transition issue in link monitoring Greg Kroah-Hartman
2019-11-13  9:56   ` Po-Hsu Lin
2019-11-11 18:27 ` [PATCH 4.19 002/125] CDC-NCM: handle incomplete transfer of MTU Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 003/125] ipv4: Fix table id reference in fib_sync_down_addr Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 004/125] net: ethernet: octeon_mgmt: Account for second possible VLAN header Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 005/125] net: fix data-race in neigh_event_send() Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 006/125] net: qualcomm: rmnet: Fix potential UAF when unregistering Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 007/125] net: usb: qmi_wwan: add support for DW5821e with eSIM support Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 008/125] NFC: fdp: fix incorrect free object Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 009/125] nfc: netlink: fix double device reference drop Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 010/125] NFC: st21nfca: fix double free Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 011/125] qede: fix NULL pointer deref in __qede_remove() Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 012/125] net: mscc: ocelot: dont handle netdev events for other netdevs Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 013/125] net: mscc: ocelot: fix NULL pointer on LAG slave removal Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 014/125] ipv6: fixes rt6_probe() and fib6_nh->last_probe init Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 015/125] net: hns: Fix the stray netpoll locks causing deadlock in NAPI path Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 016/125] ALSA: timer: Fix incorrectly assigned timer instance Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 017/125] ALSA: bebob: fix to detect configured source of sampling clock for Focusrite Saffire Pro i/o series Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 018/125] ALSA: hda/ca0132 - Fix possible workqueue stall Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 019/125] mm: memcontrol: fix network errors from failing __GFP_ATOMIC charges Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 020/125] mm, meminit: recalculate pcpu batch and high limits after init completes Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 021/125] mm: thp: handle page cache THP correctly in PageTransCompoundMap Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 022/125] mm, vmstat: hide /proc/pagetypeinfo from normal users Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 023/125] dump_stack: avoid the livelock of the dump_lock Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 024/125] tools: gpio: Use !building_out_of_srctree to determine srctree Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 025/125] perf tools: Fix time sorting Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 026/125] drm/radeon: fix si_enable_smc_cac() failed issue Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 027/125] HID: wacom: generic: Treat serial number and related fields as unsigned Greg Kroah-Hartman
2019-11-13 10:47   ` Pavel Machek
2019-11-13 11:02     ` Jiri Kosina
2019-11-13 15:43       ` Gerecke, Jason
2019-11-11 18:27 ` [PATCH 4.19 028/125] soundwire: depend on ACPI Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 029/125] soundwire: bus: set initial value to port_status Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 030/125] arm64: Do not mask out PTE_RDONLY in pte_same() Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 031/125] ceph: fix use-after-free in __ceph_remove_cap() Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 032/125] ceph: add missing check in d_revalidate snapdir handling Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 033/125] iio: adc: stm32-adc: fix stopping dma Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 034/125] iio: imu: adis16480: make sure provided frequency is positive Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 035/125] iio: srf04: fix wrong limitation in distance measuring Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 036/125] ARM: sunxi: Fix CPU powerdown on A83T Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 037/125] netfilter: nf_tables: Align nft_expr private data to 64-bit Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 038/125] netfilter: ipset: Fix an error code in ip_set_sockfn_get() Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 039/125] intel_th: pci: Add Comet Lake PCH support Greg Kroah-Hartman
2019-11-11 18:27 ` [PATCH 4.19 040/125] intel_th: pci: Add Jasper " Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 041/125] x86/apic/32: Avoid bogus LDR warnings Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 042/125] SMB3: Fix persistent handles reconnect Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 043/125] can: usb_8dev: fix use-after-free on disconnect Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 044/125] can: flexcan: disable completely the ECC mechanism Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 045/125] can: c_can: c_can_poll(): only read status register after status IRQ Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 046/125] can: peak_usb: fix a potential out-of-sync while decoding packets Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 047/125] can: rx-offload: can_rx_offload_queue_sorted(): fix error handling, avoid skb mem leak Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 048/125] can: gs_usb: gs_can_open(): prevent memory leak Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 049/125] can: dev: add missing of_node_put() after calling of_get_child_by_name() Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 050/125] can: mcba_usb: fix use-after-free on disconnect Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 051/125] can: peak_usb: fix slab info leak Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 052/125] configfs: stash the data we need into configfs_buffer at open time Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 053/125] configfs_register_group() shouldnt be (and isnt) called in rmdirable parts Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 054/125] configfs: new object reprsenting tree fragments Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 055/125] configfs: provide exclusion between IO and removals Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 056/125] configfs: fix a deadlock in configfs_symlink() Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 057/125] ALSA: usb-audio: More validations of descriptor units Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 058/125] ALSA: usb-audio: Simplify parse_audio_unit() Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 059/125] ALSA: usb-audio: Unify the release of usb_mixer_elem_info objects Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 060/125] ALSA: usb-audio: Remove superfluous bLength checks Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 061/125] ALSA: usb-audio: Clean up check_input_term() Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 062/125] ALSA: usb-audio: Fix possible NULL dereference at create_yamaha_midi_quirk() Greg Kroah-Hartman
2019-11-13 10:19   ` Pavel Machek
2019-11-13 10:35     ` Takashi Iwai
2019-11-13 10:36       ` Takashi Iwai
2019-11-18 14:33         ` Pavel Machek
2019-11-11 18:28 ` [PATCH 4.19 063/125] ALSA: usb-audio: remove some dead code Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 064/125] ALSA: usb-audio: Fix copy&paste error in the validator Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 065/125] sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 066/125] sched/fair: Fix -Wunused-but-set-variable warnings Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 067/125] usbip: Fix vhci_urb_enqueue() URB null transfer buffer error path Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 068/125] usbip: Implement SG support to vhci-hcd and stub driver Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 069/125] PCI: tegra: Enable Relaxed Ordering only for Tegra20 & Tegra30 Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 070/125] HID: google: add magnemite/masterball USB ids Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 071/125] dmaengine: xilinx_dma: Fix control reg update in vdma_channel_set_config Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 072/125] dmaengine: sprd: Fix the possible memory leak issue Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 073/125] HID: intel-ish-hid: fix wrong error handling in ishtp_cl_alloc_tx_ring() Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 074/125] RDMA/mlx5: Clear old rate limit when closing QP Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 075/125] iw_cxgb4: fix ECN check on the passive accept Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 076/125] RDMA/qedr: Fix reported firmware version Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 077/125] net/mlx5e: TX, Fix consumer index of error cqe dump Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 078/125] net/mlx5: prevent memory leak in mlx5_fpga_conn_create_cq Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 079/125] scsi: qla2xxx: fixup incorrect usage of host_byte Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 080/125] RDMA/uverbs: Prevent potential underflow Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 081/125] net: openvswitch: free vport unless register_netdevice() succeeds Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 082/125] scsi: lpfc: Honor module parameter lpfc_use_adisc Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 083/125] scsi: qla2xxx: Initialized mailbox to prevent driver load failure Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 084/125] netfilter: nf_flow_table: set timeout before insertion into hashes Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 085/125] ipvs: dont ignore errors in case refcounting ip_vs module fails Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 086/125] ipvs: move old_secure_tcp into struct netns_ipvs Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 087/125] bonding: fix unexpected IFF_BONDING bit unset Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 088/125] macsec: fix refcnt leak in module exit routine Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 089/125] usb: fsl: Check memory resource before releasing it Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 090/125] usb: gadget: udc: atmel: Fix interrupt storm in FIFO mode Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 091/125] usb: gadget: composite: Fix possible double free memory bug Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 092/125] usb: dwc3: pci: prevent memory leak in dwc3_pci_probe Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 093/125] usb: gadget: configfs: fix concurrent issue between composite APIs Greg Kroah-Hartman
2019-11-13 13:49   ` Pavel Machek
2019-11-14  6:44     ` Peter Chen
2019-11-11 18:28 ` [PATCH 4.19 094/125] usb: dwc3: remove the call trace of USBx_GFLADJ Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 095/125] perf/x86/amd/ibs: Fix reading of the IBS OpData register and thus precise RIP validity Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 096/125] perf/x86/amd/ibs: Handle erratum #420 only on the affected CPU family (10h) Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 097/125] perf/x86/uncore: Fix event group support Greg Kroah-Hartman
2019-11-13 10:35   ` Pavel Machek
2019-11-13 13:04     ` Liang, Kan
2019-11-11 18:28 ` [PATCH 4.19 098/125] USB: Skip endpoints with 0 maxpacket length Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 099/125] USB: ldusb: use unsigned size format specifiers Greg Kroah-Hartman
2019-11-11 18:28 ` [PATCH 4.19 100/125] usbip: tools: Fix read_usb_vudc_device() error path handling Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 101/125] RDMA/iw_cxgb4: Avoid freeing skb twice in arp failure case Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 102/125] RDMA/hns: Prevent memory leaks of eq->buf_list Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 103/125] scsi: qla2xxx: stop timer in shutdown path Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 104/125] nvme-multipath: fix possible io hang after ctrl reconnect Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 105/125] fjes: Handle workqueue allocation failure Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 106/125] net: hisilicon: Fix "Trying to free already-free IRQ" Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 107/125] net: mscc: ocelot: fix vlan_filtering when enslaving to bridge before link is up Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 108/125] net: mscc: ocelot: refuse to overwrite the ports native vlan Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 109/125] iommu/amd: Apply the same IVRS IOAPIC workaround to Acer Aspire A315-41 Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 110/125] drm/amdgpu: If amdgpu_ib_schedule fails return back the error Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 111/125] drm/amd/display: Passive DP->HDMI dongle detection fix Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 112/125] hv_netvsc: Fix error handling in netvsc_attach() Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 113/125] usb: dwc3: gadget: fix race when disabling ep with cancelled xfers Greg Kroah-Hartman
2019-11-13 13:52   ` Pavel Machek
2019-11-11 18:29 ` [PATCH 4.19 114/125] NFSv4: Dont allow a cached open with a revoked delegation Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 115/125] net: ethernet: arc: add the missed clk_disable_unprepare Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 116/125] igb: Fix constant media auto sense switching when no cable is connected Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 117/125] e1000: fix memory leaks Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 118/125] pinctrl: intel: Avoid potential glitches if pin is in GPIO mode Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 119/125] ocfs2: protect extent tree in ocfs2_prepare_inode_for_write() Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 120/125] pinctrl: cherryview: Fix irq_valid_mask calculation Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 121/125] blkcg: make blkcg_print_stat() print stats only for online blkgs Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 122/125] iio: imu: mpu6050: Add support for the ICM 20602 IMU Greg Kroah-Hartman
2019-11-11 18:29 ` [PATCH 4.19 123/125] iio: imu: inv_mpu6050: fix no data on MPU6050 Greg Kroah-Hartman
2019-11-13 10:42   ` Pavel Machek
2019-11-11 18:29 ` Greg Kroah-Hartman [this message]
2019-11-11 18:29 ` [PATCH 4.19 125/125] cgroup,writeback: dont switch wbs immediately on dead wbs if the memcg is dead Greg Kroah-Hartman
2019-11-12  5:19 ` [PATCH 4.19 000/125] 4.19.84-stable review kernelci.org bot
2019-11-12  5:49 ` Naresh Kamboju
2019-11-12 12:01 ` Jon Hunter
2019-11-12 18:20 ` Guenter Roeck

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=20191111181456.247399096@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=hannes@cmpxchg.org \
    --cc=jack@suse.cz \
    --cc=khlebnikov@yandex-team.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tj@kernel.org \
    --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;
as well as URLs for NNTP newsgroup(s).