From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Slavomir Kaslev <kaslevs@vmware.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Sasha Levin <sashal@kernel.org>,
linux-fsdevel@vger.kernel.org
Subject: [PATCH AUTOSEL 4.14 028/123] fs: Make splice() and tee() take into account O_NONBLOCK flag on pipes
Date: Wed, 27 Mar 2019 14:14:52 -0400 [thread overview]
Message-ID: <20190327181628.15899-28-sashal@kernel.org> (raw)
In-Reply-To: <20190327181628.15899-1-sashal@kernel.org>
From: Slavomir Kaslev <kaslevs@vmware.com>
[ Upstream commit ee5e001196d1345b8fee25925ff5f1d67936081e ]
The current implementation of splice() and tee() ignores O_NONBLOCK set
on pipe file descriptors and checks only the SPLICE_F_NONBLOCK flag for
blocking on pipe arguments. This is inconsistent since splice()-ing
from/to non-pipe file descriptors does take O_NONBLOCK into
consideration.
Fix this by promoting O_NONBLOCK, when set on a pipe, to
SPLICE_F_NONBLOCK.
Some context for how the current implementation of splice() leads to
inconsistent behavior. In the ongoing work[1] to add VM tracing
capability to trace-cmd we stream tracing data over named FIFOs or
vsockets from guests back to the host.
When we receive SIGINT from user to stop tracing, we set O_NONBLOCK on
the input file descriptor and set SPLICE_F_NONBLOCK for the next call to
splice(). If splice() was blocked waiting on data from the input FIFO,
after SIGINT splice() restarts with the same arguments (no
SPLICE_F_NONBLOCK) and blocks again instead of returning -EAGAIN when no
data is available.
This differs from the splice() behavior when reading from a vsocket or
when we're doing a traditional read()/write() loop (trace-cmd's
--nosplice argument).
With this patch applied we get the same behavior in all situations after
setting O_NONBLOCK which also matches the behavior of doing a
read()/write() loop instead of splice().
This change does have potential of breaking users who don't expect
EAGAIN from splice() when SPLICE_F_NONBLOCK is not set. OTOH programs
that set O_NONBLOCK and don't anticipate EAGAIN are arguably buggy[2].
[1] https://github.com/skaslev/trace-cmd/tree/vsock
[2] https://github.com/torvalds/linux/blob/d47e3da1759230e394096fd742aad423c291ba48/fs/read_write.c#L1425
Signed-off-by: Slavomir Kaslev <kaslevs@vmware.com>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/splice.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/fs/splice.c b/fs/splice.c
index 00d2f142dcf9..3ff3e7fb3b5a 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -1118,6 +1118,9 @@ static long do_splice(struct file *in, loff_t __user *off_in,
if (ipipe == opipe)
return -EINVAL;
+ if ((in->f_flags | out->f_flags) & O_NONBLOCK)
+ flags |= SPLICE_F_NONBLOCK;
+
return splice_pipe_to_pipe(ipipe, opipe, len, flags);
}
@@ -1143,6 +1146,9 @@ static long do_splice(struct file *in, loff_t __user *off_in,
if (unlikely(ret < 0))
return ret;
+ if (in->f_flags & O_NONBLOCK)
+ flags |= SPLICE_F_NONBLOCK;
+
file_start_write(out);
ret = do_splice_from(ipipe, out, &offset, len, flags);
file_end_write(out);
@@ -1167,6 +1173,9 @@ static long do_splice(struct file *in, loff_t __user *off_in,
offset = in->f_pos;
}
+ if (out->f_flags & O_NONBLOCK)
+ flags |= SPLICE_F_NONBLOCK;
+
pipe_lock(opipe);
ret = wait_for_space(opipe, flags);
if (!ret)
@@ -1704,6 +1713,9 @@ static long do_tee(struct file *in, struct file *out, size_t len,
* copying the data.
*/
if (ipipe && opipe && ipipe != opipe) {
+ if ((in->f_flags | out->f_flags) & O_NONBLOCK)
+ flags |= SPLICE_F_NONBLOCK;
+
/*
* Keep going, unless we encounter an error. The ipipe/opipe
* ordering doesn't really matter.
--
2.19.1
next prev parent reply other threads:[~2019-03-27 18:17 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-27 18:14 [PATCH AUTOSEL 4.14 001/123] CIFS: fix POSIX lock leak and invalid ptr deref Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 002/123] h8300: use cc-cross-prefix instead of hardcoding h8300-unknown-linux- Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 003/123] f2fs: fix to avoid deadlock in f2fs_read_inline_dir() Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 004/123] i2c: sis630: correct format strings Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 005/123] tracing: kdb: Fix ftdump to not sleep Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 006/123] net/mlx5: Avoid panic when setting vport rate Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 007/123] net/mlx5: Avoid panic when setting vport mac, getting vport config Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 008/123] gpio: gpio-omap: fix level interrupt idling Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 009/123] include/linux/relay.h: fix percpu annotation in struct rchan Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 010/123] sysctl: handle overflow for file-max Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 011/123] enic: fix build warning without CONFIG_CPUMASK_OFFSTACK Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 012/123] scsi: hisi_sas: Set PHY linkrate when disconnected Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 013/123] iio: adc: fix warning in Qualcomm PM8xxx HK/XOADC driver Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 014/123] perf c2c: Fix c2c report for empty numa node Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 015/123] mm/cma.c: cma_declare_contiguous: correct err handling Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 016/123] mm/page_ext.c: fix an imbalance with kmemleak Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 017/123] mm, mempolicy: fix uninit memory access Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 018/123] mm/vmalloc.c: fix kernel BUG at mm/vmalloc.c:512! Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 019/123] mm/slab.c: kmemleak no scan alien caches Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 020/123] ocfs2: fix a panic problem caused by o2cb_ctl Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 021/123] f2fs: do not use mutex lock in atomic context Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 022/123] f2fs: fix to data block override node segment by mistake Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 023/123] fs/file.c: initialize init_files.resize_wait Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 024/123] page_poison: play nicely with KASAN Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 025/123] cifs: use correct format characters Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 026/123] dm thin: add sanity checks to thin-pool and external snapshot creation Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 027/123] cifs: Fix NULL pointer dereference of devname Sasha Levin
2019-03-27 18:14 ` Sasha Levin [this message]
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 029/123] jbd2: fix invalid descriptor block checksum Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 030/123] fs: fix guard_bio_eod to check for real EOD errors Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 031/123] tools lib traceevent: Fix buffer overflow in arg_eval Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 032/123] PCI/PME: Fix hotplug/sysfs remove deadlock in pcie_pme_remove() Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 033/123] wil6210: check null pointer in _wil_cfg80211_merge_extra_ies Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 034/123] crypto: crypto4xx - add missing of_node_put after of_device_is_available Sasha Levin
2019-03-27 18:14 ` [PATCH AUTOSEL 4.14 035/123] crypto: cavium/zip - fix collision with generic cra_driver_name Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 036/123] usb: chipidea: Grab the (legacy) USB PHY by phandle first Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 037/123] scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 038/123] powerpc/xmon: Fix opcode being uninitialized in print_insn_powerpc Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 039/123] coresight: etm4x: Add support to enable ETMv4.2 Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 040/123] serial: 8250_pxa: honor the port number from devicetree Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 041/123] ARM: 8840/1: use a raw_spinlock_t in unwind Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 042/123] iommu/io-pgtable-arm-v7s: Only kmemleak_ignore L2 tables Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 043/123] powerpc/hugetlb: Handle mmap_min_addr correctly in get_unmapped_area callback Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 044/123] mmc: omap: fix the maximum timeout setting Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 045/123] e1000e: Fix -Wformat-truncation warnings Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 046/123] mlxsw: spectrum: Avoid " Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 047/123] IB/mlx4: Increase the timeout for CM cache Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 048/123] clk: fractional-divider: check parent rate only if flag is set Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 049/123] ASoC: qcom: Fix of-node refcount unbalance in apq8016_sbc_parse_of() Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 050/123] cpufreq: acpi-cpufreq: Report if CPU doesn't support boost technologies Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 051/123] efi: cper: Fix possible out-of-bounds access Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 052/123] scsi: megaraid_sas: return error when create DMA pool failed Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 053/123] scsi: fcoe: make use of fip_mode enum complete Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 054/123] perf test: Fix failure of 'evsel-tp-sched' test on s390 Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 055/123] SoC: imx-sgtl5000: add missing put_device() Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 056/123] media: sh_veu: Correct return type for mem2mem buffer helpers Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 057/123] media: s5p-jpeg: " Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 058/123] media: s5p-g2d: " Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 059/123] media: mx2_emmaprp: " Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 060/123] media: mtk-jpeg: " Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 061/123] Bluetooth: hci_ldisc: Initialize hci_dev before open() Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 062/123] vfs: fix preadv64v2 and pwritev64v2 compat syscalls with offset == -1 Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 063/123] HID: intel-ish-hid: avoid binding wrong ishtp_cl_device Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 064/123] jbd2: fix race when writing superblock Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 065/123] leds: lp55xx: fix null deref on firmware load failure Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 066/123] iwlwifi: pcie: fix emergency path Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 067/123] ACPI / video: Refactor and fix dmi_is_desktop() Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 068/123] drm: allow render capable master with DRM_AUTH ioctls Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 069/123] kprobes: Prohibit probing on bsearch() Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 070/123] netfilter: conntrack: fix cloned unconfirmed skb->_nfct race in __nf_conntrack_confirm Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 071/123] ARM: 8833/1: Ensure that NEON code always compiles with Clang Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 072/123] ALSA: PCM: check if ops are defined before suspending PCM Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 073/123] usb: f_fs: Avoid crash due to out-of-scope stack ptr access Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 074/123] sched/topology: Fix percpu data types in struct sd_data & struct s_data Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 075/123] bcache: fix input overflow to cache set sysfs file io_error_halflife Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 076/123] bcache: fix input overflow to sequential_cutoff Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 077/123] bcache: improve sysfs_strtoul_clamp() Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 078/123] genirq: Avoid summation loops for /proc/stat Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 079/123] iw_cxgb4: fix srqidx leak during connection abort Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 080/123] fbdev: fbmem: fix memory access if logo is bigger than the screen Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 081/123] cdrom: Fix race condition in cdrom_sysctl_register Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 082/123] e1000e: fix cyclic resets at link up with active tx Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 083/123] platform/x86: intel_pmc_core: Fix PCH IP sts reading Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 084/123] ASoC: fsl-asoc-card: fix object reference leaks in fsl_asoc_card_probe Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 085/123] sched/debug: Initialize sd_sysctl_cpus if !CONFIG_CPUMASK_OFFSTACK Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 086/123] locking/lockdep: Add debug_locks check in __lock_downgrade() Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 087/123] efi/memattr: Don't bail on zero VA if it equals the region's PA Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 088/123] ARM: dts: lpc32xx: Remove leading 0x and 0s from bindings notation Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 089/123] efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 090/123] soc: qcom: gsbi: Fix error handling in gsbi_probe() Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 091/123] mt7601u: bump supported EEPROM version Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 092/123] ARM: 8830/1: NOMMU: Toggle only bits in EXC_RETURN we are really care of Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 093/123] ARM: avoid Cortex-A9 livelock on tight dmb loops Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 094/123] bpf: fix missing prototype warnings Sasha Levin
2019-03-27 18:15 ` [PATCH AUTOSEL 4.14 095/123] cgroup/pids: turn cgroup_subsys->free() into cgroup_subsys->release() to fix the accounting Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 096/123] backlight: pwm_bl: Use gpiod_get_value_cansleep() to get initial state Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 097/123] tty: increase the default flip buffer limit to 2*640K Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 098/123] powerpc/pseries: Perform full re-add of CPU for topology update post-migration Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 099/123] usb: dwc3: gadget: Fix OTG events when gadget driver isn't loaded Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 100/123] media: mt9m111: set initial frame size other than 0x0 Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 101/123] hwrng: virtio - Avoid repeated init of completion Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 102/123] soc/tegra: fuse: Fix illegal free of IO base address Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 103/123] HID: intel-ish: ipc: handle PIMR before ish_wakeup also clear PISR busy_clear bit Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 104/123] Bluetooth: Verify that l2cap_get_conf_opt provides large enough buffer Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 105/123] hpet: Fix missing '=' character in the __setup() code of hpet_mmap_enable Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 106/123] cpu/hotplug: Mute hotplug lockdep during init Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 107/123] dmaengine: imx-dma: fix warning comparison of distinct pointer types Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 108/123] dmaengine: qcom_hidma: assign channel cookie correctly Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 109/123] dmaengine: qcom_hidma: initialize tx flags in hidma_prep_dma_* Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 110/123] netfilter: physdev: relax br_netfilter dependency Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 111/123] media: s5p-jpeg: Check for fmt_ver_flag when doing fmt enumeration Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 112/123] regulator: act8865: Fix act8600_sudcdc_voltage_ranges setting Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 113/123] drm: Auto-set allow_fb_modifiers when given modifiers at plane init Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 114/123] drm/nouveau: Stop using drm_crtc_force_disable Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 115/123] x86/build: Specify elf_i386 linker emulation explicitly for i386 objects Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 116/123] selinux: do not override context on context mounts Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 117/123] wlcore: Fix memory leak in case wl12xx_fetch_firmware failure Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 118/123] x86/build: Mark per-CPU symbols as absolute explicitly for LLD Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 119/123] clk: rockchip: fix frac settings of GPLL clock for rk3328 Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 120/123] dmaengine: tegra: avoid overflow of byte tracking Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 121/123] drm: Reorder set_property_atomic to avoid returning with an active ww_ctx Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 122/123] drm/dp/mst: Configure no_stop_bit correctly for remote i2c xfers Sasha Levin
2019-03-27 18:16 ` [PATCH AUTOSEL 4.14 123/123] ACPI / video: Extend chassis-type detection with a "Lunch Box" check Sasha Levin
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=20190327181628.15899-28-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=kaslevs@vmware.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.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