linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Dave Chinner <dchinner@redhat.com>, Jan Kara <jack@suse.de>,
	Nicholas Piggin <npiggin@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Sasha Levin <sashal@kernel.org>,
	linux-mm@kvack.org
Subject: [PATCH AUTOSEL 4.14 080/150] mm/page-writeback.c: fix range_cyclic writeback vs writepages deadlock
Date: Sat, 16 Nov 2019 10:46:18 -0500	[thread overview]
Message-ID: <20191116154729.9573-80-sashal@kernel.org> (raw)
In-Reply-To: <20191116154729.9573-1-sashal@kernel.org>

From: Dave Chinner <dchinner@redhat.com>

[ Upstream commit 64081362e8ff4587b4554087f3cfc73d3e0a4cd7 ]

We've recently seen a workload on XFS filesystems with a repeatable
deadlock between background writeback and a multi-process application
doing concurrent writes and fsyncs to a small range of a file.

range_cyclic
writeback		Process 1		Process 2

xfs_vm_writepages
  write_cache_pages
    writeback_index = 2
    cycled = 0
    ....
    find page 2 dirty
    lock Page 2
    ->writepage
      page 2 writeback
      page 2 clean
      page 2 added to bio
    no more pages
			write()
			locks page 1
			dirties page 1
			locks page 2
			dirties page 1
			fsync()
			....
			xfs_vm_writepages
			write_cache_pages
			  start index 0
			  find page 1 towrite
			  lock Page 1
			  ->writepage
			    page 1 writeback
			    page 1 clean
			    page 1 added to bio
			  find page 2 towrite
			  lock Page 2
			  page 2 is writeback
			  <blocks>
						write()
						locks page 1
						dirties page 1
						fsync()
						....
						xfs_vm_writepages
						write_cache_pages
						  start index 0

    !done && !cycled
      sets index to 0, restarts lookup
    find page 1 dirty
						  find page 1 towrite
						  lock Page 1
						  page 1 is writeback
						  <blocks>

    lock Page 1
    <blocks>

DEADLOCK because:

	- process 1 needs page 2 writeback to complete to make
	  enough progress to issue IO pending for page 1
	- writeback needs page 1 writeback to complete so process 2
	  can progress and unlock the page it is blocked on, then it
	  can issue the IO pending for page 2
	- process 2 can't make progress until process 1 issues IO
	  for page 1

The underlying cause of the problem here is that range_cyclic writeback is
processing pages in descending index order as we hold higher index pages
in a structure controlled from above write_cache_pages().  The
write_cache_pages() caller needs to be able to submit these pages for IO
before write_cache_pages restarts writeback at mapping index 0 to avoid
wcp inverting the page lock/writeback wait order.

generic_writepages() is not susceptible to this bug as it has no private
context held across write_cache_pages() - filesystems using this
infrastructure always submit pages in ->writepage immediately and so there
is no problem with range_cyclic going back to mapping index 0.

However:
	mpage_writepages() has a private bio context,
	exofs_writepages() has page_collect
	fuse_writepages() has fuse_fill_wb_data
	nfs_writepages() has nfs_pageio_descriptor
	xfs_vm_writepages() has xfs_writepage_ctx

All of these ->writepages implementations can hold pages under writeback
in their private structures until write_cache_pages() returns, and hence
they are all susceptible to this deadlock.

Also worth noting is that ext4 has it's own bastardised version of
write_cache_pages() and so it /may/ have an equivalent deadlock.  I looked
at the code long enough to understand that it has a similar retry loop for
range_cyclic writeback reaching the end of the file and then promptly ran
away before my eyes bled too much.  I'll leave it for the ext4 developers
to determine if their code is actually has this deadlock and how to fix it
if it has.

There's a few ways I can see avoid this deadlock.  There's probably more,
but these are the first I've though of:

1. get rid of range_cyclic altogether

2. range_cyclic always stops at EOF, and we start again from
writeback index 0 on the next call into write_cache_pages()

2a. wcp also returns EAGAIN to ->writepages implementations to
indicate range cyclic has hit EOF. writepages implementations can
then flush the current context and call wpc again to continue. i.e.
lift the retry into the ->writepages implementation

3. range_cyclic uses trylock_page() rather than lock_page(), and it
skips pages it can't lock without blocking. It will already do this
for pages under writeback, so this seems like a no-brainer

3a. all non-WB_SYNC_ALL writeback uses trylock_page() to avoid
blocking as per pages under writeback.

I don't think #1 is an option - range_cyclic prevents frequently
dirtied lower file offset from starving background writeback of
rarely touched higher file offsets.

#2 is simple, and I don't think it will have any impact on
performance as going back to the start of the file implies an
immediate seek. We'll have exactly the same number of seeks if we
switch writeback to another inode, and then come back to this one
later and restart from index 0.

#2a is pretty much "status quo without the deadlock". Moving the
retry loop up into the wcp caller means we can issue IO on the
pending pages before calling wcp again, and so avoid locking or
waiting on pages in the wrong order. I'm not convinced we need to do
this given that we get the same thing from #2 on the next writeback
call from the writeback infrastructure.

#3 is really just a band-aid - it doesn't fix the access/wait
inversion problem, just prevents it from becoming a deadlock
situation. I'd prefer we fix the inversion, not sweep it under the
carpet like this.

#3a is really an optimisation that just so happens to include the
band-aid fix of #3.

So it seems that the simplest way to fix this issue is to implement
solution #2

Link: http://lkml.kernel.org/r/20181005054526.21507-1-david@fromorbit.com
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Jan Kara <jack@suse.de>
Cc: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 mm/page-writeback.c | 33 +++++++++++++++------------------
 1 file changed, 15 insertions(+), 18 deletions(-)

diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index e001de5ac50cb..a40c075fd8f1e 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -2150,6 +2150,13 @@ EXPORT_SYMBOL(tag_pages_for_writeback);
  * not miss some pages (e.g., because some other process has cleared TOWRITE
  * tag we set). The rule we follow is that TOWRITE tag can be cleared only
  * by the process clearing the DIRTY tag (and submitting the page for IO).
+ *
+ * To avoid deadlocks between range_cyclic writeback and callers that hold
+ * pages in PageWriteback to aggregate IO until write_cache_pages() returns,
+ * we do not loop back to the start of the file. Doing so causes a page
+ * lock/page writeback access order inversion - we should only ever lock
+ * multiple pages in ascending page->index order, and looping back to the start
+ * of the file violates that rule and causes deadlocks.
  */
 int write_cache_pages(struct address_space *mapping,
 		      struct writeback_control *wbc, writepage_t writepage,
@@ -2164,7 +2171,6 @@ int write_cache_pages(struct address_space *mapping,
 	pgoff_t index;
 	pgoff_t end;		/* Inclusive */
 	pgoff_t done_index;
-	int cycled;
 	int range_whole = 0;
 	int tag;
 
@@ -2172,23 +2178,17 @@ int write_cache_pages(struct address_space *mapping,
 	if (wbc->range_cyclic) {
 		writeback_index = mapping->writeback_index; /* prev offset */
 		index = writeback_index;
-		if (index == 0)
-			cycled = 1;
-		else
-			cycled = 0;
 		end = -1;
 	} else {
 		index = wbc->range_start >> PAGE_SHIFT;
 		end = wbc->range_end >> PAGE_SHIFT;
 		if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX)
 			range_whole = 1;
-		cycled = 1; /* ignore range_cyclic tests */
 	}
 	if (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages)
 		tag = PAGECACHE_TAG_TOWRITE;
 	else
 		tag = PAGECACHE_TAG_DIRTY;
-retry:
 	if (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages)
 		tag_pages_for_writeback(mapping, index, end);
 	done_index = index;
@@ -2296,17 +2296,14 @@ int write_cache_pages(struct address_space *mapping,
 		pagevec_release(&pvec);
 		cond_resched();
 	}
-	if (!cycled && !done) {
-		/*
-		 * range_cyclic:
-		 * We hit the last page and there is more work to be done: wrap
-		 * back to the start of the file
-		 */
-		cycled = 1;
-		index = 0;
-		end = writeback_index - 1;
-		goto retry;
-	}
+
+	/*
+	 * If we hit the last page and there is more work to be done: wrap
+	 * back the index back to the start of the file for the next
+	 * time we are called.
+	 */
+	if (wbc->range_cyclic && !done)
+		done_index = 0;
 	if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0))
 		mapping->writeback_index = done_index;
 
-- 
2.20.1


  parent reply	other threads:[~2019-11-16 15:49 UTC|newest]

Thread overview: 151+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-16 15:44 [PATCH AUTOSEL 4.14 001/150] ALSA: isight: fix leak of reference to firewire unit in error path of .probe callback Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 002/150] printk: fix integer overflow in setup_log_buf() Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 003/150] gfs2: Fix marking bitmaps non-full Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 004/150] pty: fix compat ioctls Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 005/150] synclink_gt(): fix compat_ioctl() Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 006/150] powerpc: Fix signedness bug in update_flash_db() Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 007/150] powerpc/boot: Disable vector instructions Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 008/150] powerpc/eeh: Fix use of EEH_PE_KEEP on wrong field Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 009/150] EDAC, thunderx: Fix memory leak in thunderx_l2c_threaded_isr() Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 010/150] brcmsmac: AP mode: update beacon when TIM changes Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 011/150] ath10k: allocate small size dma memory in ath10k_pci_diag_write_mem Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 012/150] skd: fixup usage of legacy IO API Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 013/150] cdrom: don't attempt to fiddle with cdo->capability Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 014/150] spi: sh-msiof: fix deferred probing Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 015/150] mmc: mediatek: fix cannot receive new request when msdc_cmd_is_ready fail Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 016/150] Btrfs: fix alignment in declaration and prototype of btrfs_get_extent Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 017/150] btrfs: handle error of get_old_root Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 018/150] gsmi: Fix bug in append_to_eventlog sysfs handler Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 019/150] misc: mic: fix a DMA pool free failure Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 020/150] w1: IAD Register is yet readable trough iad sys file. Fix snprintf (%u for unsigned, count for max size) Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 021/150] m68k: fix command-line parsing when passed from u-boot Sasha Levin
2019-11-16 15:45   ` Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 022/150] RDMA/bnxt_re: Fix qp async event reporting Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 023/150] pinctrl: sunxi: Fix a memory leak in 'sunxi_pinctrl_build_state()' Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 024/150] pwm: lpss: Only set update bit if we are actually changing the settings Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 025/150] amiflop: clean up on errors during setup Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 026/150] qed: Align local and global PTT to propagate through the APIs Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 027/150] scsi: ips: fix missing break in switch Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 028/150] KVM: nVMX: reset cache/shadows when switching loaded VMCS Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 029/150] KVM: nVMX: move check_vmentry_postreqs() call to nested_vmx_enter_non_root_mode() Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 030/150] KVM/x86: Fix invvpid and invept register operand size in 64-bit mode Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 031/150] scsi: isci: Use proper enumerated type in atapi_d2h_reg_frame_handler Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 032/150] scsi: isci: Change sci_controller_start_task's return type to sci_status Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 033/150] scsi: iscsi_tcp: Explicitly cast param in iscsi_sw_tcp_host_get_param Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 034/150] crypto: ccree - avoid implicit enum conversion Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 035/150] nvmet-fcloop: suppress a compiler warning Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 036/150] clk: mmp2: fix the clock id for sdh2_clk and sdh3_clk Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 037/150] clk: at91: audio-pll: fix audio pmc type Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 038/150] ASoC: tegra_sgtl5000: fix device_node refcounting Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 039/150] scsi: dc395x: fix dma API usage in srb_done Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 040/150] scsi: dc395x: fix DMA API usage in sg_update_list Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 041/150] net: dsa: mv88e6xxx: Fix 88E6141/6341 2500mbps SERDES speed Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 042/150] net: fix warning in af_unix Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 043/150] net: ena: Fix Kconfig dependency on X86 Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 044/150] xfs: fix use-after-free race in xfs_buf_rele Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 045/150] kprobes, x86/ptrace.h: Make regs_get_kernel_stack_nth() not fault on bad stack Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 046/150] PM / Domains: Deal with multiple states but no governor in genpd Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 047/150] ALSA: i2c/cs8427: Fix int to char conversion Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 048/150] macintosh/windfarm_smu_sat: Fix debug output Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 049/150] PCI: vmd: Detach resources after stopping root bus Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 050/150] USB: misc: appledisplay: fix backlight update_status return code Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 051/150] usbip: tools: fix atoi() on non-null terminated string Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 052/150] dm raid: avoid bitmap with raid4/5/6 journal device Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 053/150] SUNRPC: Fix a compile warning for cmpxchg64() Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 054/150] sunrpc: safely reallow resvport min/max inversion Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 055/150] atm: zatm: Fix empty body Clang warnings Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 056/150] s390/perf: Return error when debug_register fails Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 057/150] spi: omap2-mcspi: Set FIFO DMA trigger level to word length Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 058/150] sparc: Fix parport build warnings Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 059/150] powerpc/pseries: Export raw per-CPU VPA data via debugfs Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 060/150] ceph: fix dentry leak in ceph_readdir_prepopulate Sasha Levin
2019-11-16 15:45 ` [PATCH AUTOSEL 4.14 061/150] libceph: don't consume a ref on pagelist in ceph_msg_data_add_pagelist() Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 062/150] rtc: s35390a: Change buf's type to u8 in s35390a_init Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 063/150] f2fs: fix to spread clear_cold_data() Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 064/150] mISDN: Fix type of switch control variable in ctrl_teimanager Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 065/150] qlcnic: fix a return in qlcnic_dcb_get_capability() Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 066/150] net: ethernet: ti: cpsw: unsync mcast entries while switch promisc mode Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 067/150] mfd: arizona: Correct calling of runtime_put_sync Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 068/150] mfd: mc13xxx-core: Fix PMIC shutdown when reading ADC values Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 069/150] mfd: intel_soc_pmic_bxtwc: Chain power button IRQs as well Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 070/150] mfd: max8997: Enale irq-wakeup unconditionally Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 071/150] selftests/ftrace: Fix to test kprobe $comm arg only if available Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 072/150] selftests: watchdog: fix message when /dev/watchdog open fails Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 073/150] selftests: watchdog: Fix error message Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 074/150] thermal: rcar_thermal: Prevent hardware access during system suspend Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 075/150] bpf: devmap: fix wrong interface selection in notifier_call Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 076/150] powerpc/process: Fix flush_all_to_thread for SPE Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 077/150] sparc64: Rework xchg() definition to avoid warnings Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 078/150] arm64: lib: use C string functions with KASAN enabled Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 079/150] fs/ocfs2/dlm/dlmdebug.c: fix a sleep-in-atomic-context bug in dlm_print_one_mle() Sasha Levin
2019-11-16 15:46 ` Sasha Levin [this message]
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 081/150] macsec: update operstate when lower device changes Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 082/150] macsec: let the administrator set UP state even if lowerdev is down Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 083/150] block: fix the DISCARD request merge Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 084/150] i2c: uniphier-f: make driver robust against concurrency Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 085/150] i2c: uniphier-f: fix occasional timeout error Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 086/150] i2c: uniphier-f: fix race condition when IRQ is cleared Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 087/150] um: Make line/tty semantics use true write IRQ Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 088/150] vfs: avoid problematic remapping requests into partial EOF block Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 089/150] powerpc/xmon: Relax frame size for clang Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 090/150] selftests/powerpc/signal: Fix out-of-tree build Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 091/150] selftests/powerpc/switch_endian: " Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 092/150] selftests/powerpc/cache_shape: " Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 093/150] linux/bitmap.h: handle constant zero-size bitmaps correctly Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 094/150] linux/bitmap.h: fix type of nbits in bitmap_shift_right() Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 095/150] hfsplus: fix BUG on bnode parent update Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 096/150] hfs: " Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 097/150] hfsplus: prevent btree data loss on ENOSPC Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 098/150] hfs: " Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 099/150] hfsplus: fix return value of hfsplus_get_block() Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 100/150] hfs: fix return value of hfs_get_block() Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 101/150] hfsplus: update timestamps on truncate() Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 102/150] hfs: update timestamp " Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 103/150] fs/hfs/extent.c: fix array out of bounds read of array extent Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 104/150] mm/memory_hotplug: make add_memory() take the device_hotplug_lock Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 105/150] igb: shorten maximum PHC timecounter update interval Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 106/150] net: hns3: bugfix for buffer not free problem during resetting Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 107/150] ntb_netdev: fix sleep time mismatch Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 108/150] ntb: intel: fix return value for ndev_vec_mask() Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 109/150] nvme-pci: fix conflicting p2p resource adds Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 110/150] arm64: makefile fix build of .i file in external module case Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 111/150] ocfs2: don't put and assigning null to bh allocated outside Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 112/150] ocfs2: fix clusters leak in ocfs2_defrag_extent() Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 113/150] net: do not abort bulk send on BQL status Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 114/150] sched/topology: Fix off by one bug Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 115/150] sched/fair: Don't increase sd->balance_interval on newidle balance Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 116/150] openvswitch: fix linking without CONFIG_NF_CONNTRACK_LABELS Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 117/150] clk: sunxi-ng: enable so-said LDOs for A64 SoC's pll-mipi clock Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 118/150] audit: print empty EXECVE args Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 119/150] btrfs: avoid link error with CONFIG_NO_AUTO_INLINE Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 120/150] wil6210: fix locking in wmi_call Sasha Levin
2019-11-16 15:46 ` [PATCH AUTOSEL 4.14 121/150] wlcore: Fix the return value in case of error in 'wlcore_vendor_cmd_smart_config_start()' Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 122/150] rtl8xxxu: Fix missing break in switch Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 123/150] brcmsmac: never log "tid x is not agg'able" by default Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 124/150] wireless: airo: potential buffer overflow in sprintf() Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 125/150] rtlwifi: rtl8192de: Fix misleading REG_MCUFWDL information Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 126/150] net: dsa: bcm_sf2: Turn on PHY to allow successful registration Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 127/150] scsi: mpt3sas: Fix Sync cache command failure during driver unload Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 128/150] scsi: mpt3sas: Don't modify EEDPTagMode field setting on SAS3.5 HBA devices Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 129/150] scsi: mpt3sas: Fix driver modifying persistent data in Manufacturing page11 Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 130/150] scsi: megaraid_sas: Fix msleep granularity Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 131/150] scsi: megaraid_sas: Fix goto labels in error handling Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 132/150] scsi: lpfc: fcoe: Fix link down issue after 1000+ link bounces Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 133/150] scsi: lpfc: Correct loss of fc4 type on remote port address change Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 134/150] dlm: fix invalid free Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 135/150] dlm: don't leak kernel pointer to userspace Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 136/150] vrf: mark skb for multicast or link-local as enslaved to VRF Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 137/150] ACPICA: Use %d for signed int print formatting instead of %u Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 138/150] net: bcmgenet: return correct value 'ret' from bcmgenet_power_down Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 139/150] sock: Reset dst when changing sk_mark via setsockopt Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 140/150] of: unittest: allow base devicetree to have symbol metadata Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 141/150] cfg80211: Prevent regulatory restore during STA disconnect in concurrent interfaces Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 142/150] pinctrl: qcom: spmi-gpio: fix gpio-hog related boot issues Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 143/150] pinctrl: lpc18xx: Use define directive for PIN_CONFIG_GPIO_PIN_INT Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 144/150] pinctrl: zynq: Use define directive for PIN_CONFIG_IO_STANDARD Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 145/150] PCI: keystone: Use quirk to limit MRRS for K2G Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 146/150] spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 147/150] i2c: uniphier-f: fix timeout error after reading 8 bytes Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 148/150] mm/memory_hotplug: Do not unlock when fails to take the device_hotplug_lock Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 149/150] ipv6: Fix handling of LLA with VRF and sockets bound to VRF Sasha Levin
2019-11-16 15:47 ` [PATCH AUTOSEL 4.14 150/150] cfg80211: call disconnect_wk when AP stops 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=20191116154729.9573-80-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=dchinner@redhat.com \
    --cc=jack@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=npiggin@gmail.com \
    --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;
as well as URLs for NNTP newsgroup(s).