* [merged] btrfs-add-manual-psi-accounting-for-compressed-reads.patch removed from -mm tree
@ 2022-09-28 17:13 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2022-09-28 17:13 UTC (permalink / raw)
To: mm-commits, xiang, willy, surenb, josef, hsiangkao, hannes,
dsterba, clm, chao, axboe, hch, akpm
The quilt patch titled
Subject: btrfs: add manual PSI accounting for compressed reads
has been removed from the -mm tree. Its filename was
btrfs-add-manual-psi-accounting-for-compressed-reads.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
From: Christoph Hellwig <hch@lst.de>
Subject: btrfs: add manual PSI accounting for compressed reads
Date: Thu, 15 Sep 2022 10:41:58 +0100
btrfs compressed reads try to always read the entire compressed chunk,
even if only a subset is requested. Currently this is covered by the
magic PSI accounting underneath submit_bio, but that is about to go away.
Instead add manual psi_memstall_{enter,leave} annotations.
Note that for readahead this really should be using readahead_expand, but
the additionals reads are also done for plain ->read_folio where
readahead_expand can't work, so this overall logic is left as-is for now.
Link: https://lkml.kernel.org/r/20220915094200.139713-4-hch@lst.de
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: David Sterba <dsterba@suse.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Chao Yu <chao@kernel.org>
Cc: Chris Mason <clm@fb.com>
Cc: Gao Xiang <hsiangkao@linux.alibaba.com>
Cc: Gao Xiang <xiang@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Josef Bacik <josef@toxicpanda.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/btrfs/compression.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
--- a/fs/btrfs/compression.c~btrfs-add-manual-psi-accounting-for-compressed-reads
+++ a/fs/btrfs/compression.c
@@ -16,6 +16,7 @@
#include <linux/string.h>
#include <linux/backing-dev.h>
#include <linux/writeback.h>
+#include <linux/psi.h>
#include <linux/slab.h>
#include <linux/sched/mm.h>
#include <linux/log2.h>
@@ -518,7 +519,8 @@ static u64 bio_end_offset(struct bio *bi
*/
static noinline int add_ra_bio_pages(struct inode *inode,
u64 compressed_end,
- struct compressed_bio *cb)
+ struct compressed_bio *cb,
+ unsigned long *pflags)
{
struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
unsigned long end_index;
@@ -587,6 +589,9 @@ static noinline int add_ra_bio_pages(str
continue;
}
+ if (PageWorkingset(page))
+ psi_memstall_enter(pflags);
+
ret = set_page_extent_mapped(page);
if (ret < 0) {
unlock_page(page);
@@ -673,6 +678,8 @@ void btrfs_submit_compressed_read(struct
u64 em_len;
u64 em_start;
struct extent_map *em;
+ /* Initialize to 1 to make skip psi_memstall_leave unless needed */
+ unsigned long pflags = 1;
blk_status_t ret;
int ret2;
int i;
@@ -728,7 +735,7 @@ void btrfs_submit_compressed_read(struct
goto fail;
}
- add_ra_bio_pages(inode, em_start + em_len, cb);
+ add_ra_bio_pages(inode, em_start + em_len, cb, &pflags);
/* include any pages we added in add_ra-bio_pages */
cb->len = bio->bi_iter.bi_size;
@@ -809,6 +816,9 @@ void btrfs_submit_compressed_read(struct
}
}
+ if (!pflags)
+ psi_memstall_leave(&pflags);
+
if (refcount_dec_and_test(&cb->pending_ios))
finish_compressed_bio_read(cb);
return;
_
Patches currently in -mm which might be from hch@lst.de are
erofs-add-manual-psi-accounting-for-the-compressed-address-space.patch
block-remove-psi-accounting-from-the-bio-layer.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-09-28 17:14 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-28 17:13 [merged] btrfs-add-manual-psi-accounting-for-compressed-reads.patch removed from -mm tree Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.