linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] afs: Fix writeback
@ 2023-06-19 13:42 David Howells
  2023-06-19 13:42 ` [PATCH 1/2] afs: Fix dangling folio ref counts in writeback David Howells
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: David Howells @ 2023-06-19 13:42 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: David Howells, Marc Dionne, linux-afs, linux-fsdevel,
	linux-kernel

Hi Linus,

Could you apply these fixes to AFS writeback code from Vishal?

 (1) Release the acquired batch before returning if we got >=5 skips.

 (2) Retry a page we had to wait for rather than skipping over it after the
     wait.

The patches can be found here:

	https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=afs-fixes

Thanks,
David

---
%(shortlog)s
%(diffstat)s

Vishal Moola (Oracle) (2):
  afs: Fix dangling folio ref counts in writeback
  afs: Fix waiting for writeback then skipping folio

 fs/afs/write.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] afs: Fix dangling folio ref counts in writeback
  2023-06-19 13:42 [PATCH 0/2] afs: Fix writeback David Howells
@ 2023-06-19 13:42 ` David Howells
  2023-06-19 13:42 ` [PATCH 2/2] afs: Fix waiting for writeback then skipping folio David Howells
  2023-06-19 13:45 ` [PATCH 0/2] afs: Fix writeback David Howells
  2 siblings, 0 replies; 4+ messages in thread
From: David Howells @ 2023-06-19 13:42 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: David Howells, Marc Dionne, linux-afs, linux-fsdevel,
	linux-kernel, Vishal Moola (Oracle)

From: "Vishal Moola (Oracle)" <vishal.moola@gmail.com>

Commit acc8d8588cb7 converted afs_writepages_region() to write back a
folio batch. If writeback needs rescheduling, the function exits without
dropping the references to the folios in fbatch. This patch fixes that.

[DH: Moved the added line before the _leave()]

Fixes: acc8d8588cb7 ("afs: convert afs_writepages_region() to use filemap_get_folios_tag()")
Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Link: https://lore.kernel.org/r/20230607204120.89416-1-vishal.moola@gmail.com/
---
 fs/afs/write.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/afs/write.c b/fs/afs/write.c
index c822d6006033..fd433024070e 100644
--- a/fs/afs/write.c
+++ b/fs/afs/write.c
@@ -763,6 +763,7 @@ static int afs_writepages_region(struct address_space *mapping,
 				if (wbc->sync_mode == WB_SYNC_NONE) {
 					if (skips >= 5 || need_resched()) {
 						*_next = start;
+						folio_batch_release(&fbatch);
 						_leave(" = 0 [%llx]", *_next);
 						return 0;
 					}


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] afs: Fix waiting for writeback then skipping folio
  2023-06-19 13:42 [PATCH 0/2] afs: Fix writeback David Howells
  2023-06-19 13:42 ` [PATCH 1/2] afs: Fix dangling folio ref counts in writeback David Howells
@ 2023-06-19 13:42 ` David Howells
  2023-06-19 13:45 ` [PATCH 0/2] afs: Fix writeback David Howells
  2 siblings, 0 replies; 4+ messages in thread
From: David Howells @ 2023-06-19 13:42 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: David Howells, Marc Dionne, linux-afs, linux-fsdevel,
	linux-kernel, Vishal Moola (Oracle)

From: "Vishal Moola (Oracle)" <vishal.moola@gmail.com>

Commit acc8d8588cb7 converted afs_writepages_region() to write back a
folio batch. The function waits for writeback to a folio, but then
proceeds to the rest of the batch without trying to write that folio
again. This patch fixes has it attempt to write the folio again.

[DH: Also remove an 'else' that adding a goto makes redundant]

Fixes: acc8d8588cb7 ("afs: convert afs_writepages_region() to use filemap_get_folios_tag()")
Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Link: https://lore.kernel.org/r/20230607204120.89416-2-vishal.moola@gmail.com/
---
 fs/afs/write.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/afs/write.c b/fs/afs/write.c
index fd433024070e..8750b99c3f56 100644
--- a/fs/afs/write.c
+++ b/fs/afs/write.c
@@ -731,6 +731,7 @@ static int afs_writepages_region(struct address_space *mapping,
 			 * (changing page->mapping to NULL), or even swizzled
 			 * back from swapper_space to tmpfs file mapping
 			 */
+try_again:
 			if (wbc->sync_mode != WB_SYNC_NONE) {
 				ret = folio_lock_killable(folio);
 				if (ret < 0) {
@@ -757,9 +758,10 @@ static int afs_writepages_region(struct address_space *mapping,
 #ifdef CONFIG_AFS_FSCACHE
 					folio_wait_fscache(folio);
 #endif
-				} else {
-					start += folio_size(folio);
+					goto try_again;
 				}
+
+				start += folio_size(folio);
 				if (wbc->sync_mode == WB_SYNC_NONE) {
 					if (skips >= 5 || need_resched()) {
 						*_next = start;


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] afs: Fix writeback
  2023-06-19 13:42 [PATCH 0/2] afs: Fix writeback David Howells
  2023-06-19 13:42 ` [PATCH 1/2] afs: Fix dangling folio ref counts in writeback David Howells
  2023-06-19 13:42 ` [PATCH 2/2] afs: Fix waiting for writeback then skipping folio David Howells
@ 2023-06-19 13:45 ` David Howells
  2 siblings, 0 replies; 4+ messages in thread
From: David Howells @ 2023-06-19 13:45 UTC (permalink / raw)
  Cc: dhowells, Linus Torvalds, Marc Dionne, linux-afs, linux-fsdevel,
	linux-kernel

David Howells <dhowells@redhat.com> wrote:

> Hi Linus,
> 
> Could you apply these fixes to AFS writeback code from Vishal?
> 
>  (1) Release the acquired batch before returning if we got >=5 skips.
> 
>  (2) Retry a page we had to wait for rather than skipping over it after the
>      wait.
> 
> The patches can be found here:
> 
> 	https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=afs-fixes

Let me do that with a signed tag.

David


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-06-19 13:46 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-19 13:42 [PATCH 0/2] afs: Fix writeback David Howells
2023-06-19 13:42 ` [PATCH 1/2] afs: Fix dangling folio ref counts in writeback David Howells
2023-06-19 13:42 ` [PATCH 2/2] afs: Fix waiting for writeback then skipping folio David Howells
2023-06-19 13:45 ` [PATCH 0/2] afs: Fix writeback David Howells

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).