diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-03-05 03:57:42 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-08-14 12:28:44 -0400 |
commit | b137b5e3c52d13966cc849c02a11fcfad915e71c (patch) | |
tree | b9d9b728c9d781e27504bb5a6afeed7512a394a2 | |
parent | 2619230cfffceb946e4c97590fa8e29cf816818b (diff) |
bcachefs: alloc tagging fixups
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | fs/bcachefs/btree_io.c | 8 | ||||
-rw-r--r-- | fs/bcachefs/util.c | 4 | ||||
-rw-r--r-- | fs/bcachefs/util.h | 20 |
3 files changed, 19 insertions, 13 deletions
diff --git a/fs/bcachefs/btree_io.c b/fs/bcachefs/btree_io.c index cba3c081b1d0..3b654841ab00 100644 --- a/fs/bcachefs/btree_io.c +++ b/fs/bcachefs/btree_io.c @@ -106,8 +106,8 @@ static void btree_bounce_free(struct bch_fs *c, size_t size, vpfree(p, size); } -static void *btree_bounce_alloc(struct bch_fs *c, size_t size, - bool *used_mempool) +static void *btree_bounce_alloc_noprof(struct bch_fs *c, size_t size, + bool *used_mempool) { unsigned flags = memalloc_nofs_save(); void *p; @@ -115,7 +115,7 @@ static void *btree_bounce_alloc(struct bch_fs *c, size_t size, BUG_ON(size > btree_bytes(c)); *used_mempool = false; - p = vpmalloc(size, __GFP_NOWARN|GFP_NOWAIT); + p = vpmalloc_noprof(size, __GFP_NOWARN|GFP_NOWAIT); if (!p) { *used_mempool = true; p = mempool_alloc(&c->btree_bounce_pool, GFP_NOFS); @@ -123,6 +123,8 @@ static void *btree_bounce_alloc(struct bch_fs *c, size_t size, memalloc_nofs_restore(flags); return p; } +#define btree_bounce_alloc(_c, _size, _used_mempool) \ + alloc_hooks(btree_bounce_alloc_noprof(_c, _size, _used_mempool)) static void sort_bkey_ptrs(const struct btree *bt, struct bkey_packed **ptrs, unsigned nr) diff --git a/fs/bcachefs/util.c b/fs/bcachefs/util.c index b669e48953ed..fc834db497ab 100644 --- a/fs/bcachefs/util.c +++ b/fs/bcachefs/util.c @@ -757,10 +757,10 @@ void bch2_bio_map(struct bio *bio, void *base, size_t size) } } -int bch2_bio_alloc_pages(struct bio *bio, size_t size, gfp_t gfp_mask) +int bch2_bio_alloc_pages_noprof(struct bio *bio, size_t size, gfp_t gfp_mask) { while (size) { - struct page *page = alloc_pages(gfp_mask, 0); + struct page *page = alloc_pages_noprof(gfp_mask, 0); unsigned len = min_t(size_t, PAGE_SIZE, size); if (!page) diff --git a/fs/bcachefs/util.h b/fs/bcachefs/util.h index 0af2bab00f20..5b98ece3cf9b 100644 --- a/fs/bcachefs/util.h +++ b/fs/bcachefs/util.h @@ -60,12 +60,13 @@ static inline void vpfree(void *p, size_t size) free_pages((unsigned long) p, get_order(size)); } -static inline void *vpmalloc(size_t size, gfp_t gfp_mask) +static inline void *vpmalloc_noprof(size_t size, gfp_t gfp_mask) { - return (void *) __get_free_pages(gfp_mask|__GFP_NOWARN, - get_order(size)) ?: - __vmalloc(size, gfp_mask); + return (void *) get_free_pages_noprof(gfp_mask|__GFP_NOWARN, + get_order(size)) ?: + __vmalloc_noprof(size, gfp_mask); } +#define vpmalloc(_size, _gfp) alloc_hooks(vpmalloc_noprof(_size, _gfp)) static inline void kvpfree(void *p, size_t size) { @@ -75,12 +76,13 @@ static inline void kvpfree(void *p, size_t size) vpfree(p, size); } -static inline void *kvpmalloc(size_t size, gfp_t gfp_mask) +static inline void *kvpmalloc_noprof(size_t size, gfp_t gfp_mask) { return size < PAGE_SIZE - ? kmalloc(size, gfp_mask) - : vpmalloc(size, gfp_mask); + ? kmalloc_noprof(size, gfp_mask) + : vpmalloc_noprof(size, gfp_mask); } +#define kvpmalloc(_size, _gfp) alloc_hooks(kvpmalloc_noprof(_size, _gfp)) int mempool_init_kvpmalloc_pool(mempool_t *, int, size_t); @@ -532,7 +534,9 @@ static inline unsigned fract_exp_two(unsigned x, unsigned fract_bits) } void bch2_bio_map(struct bio *bio, void *base, size_t); -int bch2_bio_alloc_pages(struct bio *, size_t, gfp_t); +int bch2_bio_alloc_pages_noprof(struct bio *, size_t, gfp_t); +#define bch2_bio_alloc_pages(_bio, _size, _gfp) \ + alloc_hooks(bch2_bio_alloc_pages_noprof(_bio, _size, _gfp)) static inline sector_t bdev_sectors(struct block_device *bdev) { |