Re: [PATCH 4.9 089/116] btrfs: flush write bio if we loop in extent_write_cache_pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 13, 2020 at 10:01:09PM +0100, David Sterba wrote:
On Thu, Feb 13, 2020 at 07:20:33AM -0800, Greg Kroah-Hartman wrote:
From: Josef Bacik <josef@xxxxxxxxxxxxxx>

[ Upstream commit 96bf313ecb33567af4cb53928b0c951254a02759 ]

This commit does not exist in my tree, the correct upstream commit of
the backported patch should be 42ffb0bf584ae5b6b38f72259af1e0ee417ac77f.

--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -4060,6 +4060,14 @@ static int extent_write_cache_pages(struct extent_io_tree *tree,
 		 */
 		scanned = 1;
 		index = 0;
+
+		/*
+		 * If we're looping we could run into a page that is locked by a
+		 * writer and that writer could be waiting on writeback for a
+		 * page in our current bio, and thus deadlock, so flush the
+		 * write bio here.
+		 */
+		flush_write_bio(data);

This has been modified to apply, flush_write_bio does not return a value
in 4.9, perhaps this led to the different commit id.

Ah yes. This patch was tricky because there were two "big" things that
broke on the backport:

1. flush_write_bio() returning a value.
2. The 'data' -> 'epd' rename.

96bf313ecb3 comes from when both of the above conditions overlapped, and
I forgot that I'm basing my second backport change on something that was
already modified.

--
Thanks,
Sasha



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux