splice: move balance_dirty_pages_ratelimited() outside of splice actor
I've seen inode related deadlocks, so move this call outside of the
actor itself, which may hold the inode lock.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fs/splice.c b/fs/splice.c
index b78a7f0..6349d31 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -652,7 +652,6 @@
* accessed, we are now done!
*/
mark_page_accessed(page);
- balance_dirty_pages_ratelimited(mapping);
out:
page_cache_release(page);
unlock_page(page);
@@ -823,6 +822,7 @@
if (err)
ret = err;
}
+ balance_dirty_pages_ratelimited(mapping);
}
return ret;
@@ -876,6 +876,7 @@
if (err)
ret = err;
}
+ balance_dirty_pages_ratelimited(mapping);
}
return ret;